The Ember Times - Issue No. 137
Bonjou Emberistas! 🐹
Learn about how autotracking works 👣, try out the latest ember-template-lint v2 ✅, Ember website redesign 🔥, 2020 Ember Community Survey reminder 📝, and beta test ember-cli 3.17 🧪!
How autotracking works 👣
Chris Garrett (@pzuraq) wrote a new blog post in his autotracking blog series, previously he wrote on what is reactivity and on what makes a good reactive system.
In How Autotracking Works, Chris discusses how autotracking fulfils the reactivity design principles exploring how it's implemented and why. In the blog, we go through memoization, referential equality, revisions, tags, and how they all work together to provide autotracking for Ember.
Memoization, a technique where we cache the previous arguments that a function was called with along with the result they produced in order to minimize excess work, is the foundation of autotracking. However, due to how equality works in JavaScript, we need to make use of referential equality to perform a faster deep-equal where we assume that if we're passed the same object as before then nothing has changed.
Autotracking revolves around a single number, the global revision number. This number keeps track of the version of state that the application was in. However, we don't want our memoized functions to rerun whenever the state changes, because it could have changed for a completely unrelated state. We only want to rerun whenever the tracked state within the function has changed. For that, we need tags which represent state within the application so our function only reruns when it should and unrelated changes will not affect it.
Autotracking is one of the core mechanisms that powers Ember.js and the Glimmer VM. It’s one of the most exciting features to come out of Ember Octane so try it out today in your Ember app and see if it helps you write faster, less error prone, and easier to understand code. Read more about autotracking in the full blog post!
Ember website redesign 🔥
Maybe you haven't noticed, but the primary website for Ember has been redesigned and it is now live! The redesign brings a fresh new look to the main piece of real estate for Ember on the internet and features a clean and modern look that all of us in the community can be proud of.
This redesign has been a long time in the making and has involved a lot of work from the people from the Ember Core teams and the Ember community. Big shout outs to everyone involved in the effort, especially Mel Sumner (@MelSumner) and Chris Manson (@mansona)! 🎉🎉🎉 It's super exciting to see this modern vision of the website come to life.
If you are enjoying the new website and would like to help with making all the Ember web properties have a consistent design, please let the Ember Learning Team know in the #dev-ember-learning channel on the Discord chat.
If you notice anything wrong with the website, please also feel free to open an issue in either the main website repository on Github or the styleguide repo where the components live.
ember-template-lint v2 released ✅
In case you weren't aware, you can lint templates to follow Ember's recommended practices, avoid making common accessibility mistakes, and collaborate with your team more effectively. 💯
# Install (or upgrade to v2)
ember install ember-cli-template-lint
# Profit!
npm run lint:hbs
The v2 release was recently announced. The most notable change may be that you can start following recommended rules for Ember Octane:
// .template-lintrc.js
'use strict';
module.exports = {
extends: 'octane',
rules: {
/* Add custom rules here */
}
};
You can find the full list of updates in the changelog. Please extend your thanks to @lifeart, @bmish, @dcyriller, @rwjblue, @akashdsouza, @alexlafroscia, @buschtoens, @gojefferson, and @initram for helping with the v2 release!
2020 Ember Community Survey 📝
Here's another friendly reminder that it’s that time of year again 😀, the 6th annual official 2020 Ember Community Survey is here! Once again we would love your help to learn about who is in the Ember community and how they work with the framework.
Last year over 1200 people participated in the survey. All that participation and your participation over the years has resulted in enough input to make the process more efficient. This year the survey has been considerably slimmed down from previous years! So it should be easier than ever to make a contribution to our community by filling out the survey – let’s keep that participation going! 🎉
This year we’d also like to emphasize that contributions from non-Ember users are valuable as well. So if you have co-workers or friends who you think might be interested in filling out the survey, please share it with them.
Submissions will be accepted until March 8th, but there’s no need to wait! Go ahead and fill out the survey here now. 🔥🔥🔥
We look forward to your participation! If you have any immediate questions, feel free to email the survey team via survey@emberjs.com, or ping them in #dev-ember-learning on the Discord chat.
But please, don't forget to help us spread the word by sharing the survey landing page on your social network feeds, at meetups and around your office and other communities.
Can't wait until Ember 3.17 is out? Become a beta tester today 🧪
It's not too long until Ember 3.17 is out and until you can upgrade your favourite Ember app to the latest version of the framework. If you want to have an extra head start, you can even try out some of the 3.17 Ember experience today!
A few days ago, ember-cli@3.17.0-beta.1 was published with lots of awesome goodies, including the removal of RSVP in favour of native promises, lots of great updates to test scenarios and a linter level up with the now direct usage of eslint and ember-template-lint. Your feedback from testing the ember-cli beta is greatly appreciated. Share your thoughts either on the project repository on Github or in the #ember-cli channel on the Ember Discord.
But why is beta testing important in the first place? A distributed community project such as Ember not only lives from the code contributions of developers from all over the world, but also from their feedback about current releases. Early adopters and ambitious testers of releases in the beta and canary channels can provide the insight that is necessary to cut the upcoming release of Ember efficiently: with the best possible developer experience for the entire Ember community in mind.
If you want to learn more about the motivation behind the release management of Ember, make sure to read the official post-1.0 release cycle blog post and the the LTS (Long-Term Support) release process announcement.
Contributors' Corner 👏
This week we'd like to thank @pzuraq, @krisselden, @mehulkar, @MelSumner, @GCheung55, @HeroicEric, @hjdivad, @Windvis, @patricklx, @locks, @mansona, @sivakumar-kailasam, @knownasilya, @hakilebara, @void-mAlex, @mistahenry, @ivandotv, @entendu, @kellyselden, @bartocc, @rwjblue, @chriseppstein, @gokatz and @Gaurav0 for their contributions to Ember and related repositories! 💖
Got a question? Ask Readers' Questions! 🤓
Wondering about something related to Ember, Ember Data, Glimmer, or addons in the Ember ecosystem, but don't know where to ask? Readers’ Questions are just for you!
Submit your own short and sweet question under bit.ly/ask-ember-core. And don’t worry, there are no silly questions, we appreciate them all - promise! 🤞
#embertimes 📰
Want to write for the Ember Times? Have a suggestion for next week's issue? Join us at #support-ember-times on the Ember Community Discord or ping us @embertimes on Twitter.
Keep on top of what's been going on in Emberland this week by subscribing to our e-mail newsletter! You can also find our posts on the Ember blog.
That's another wrap! ✨
Be kind,
Chris Ng, Isaac Lee, Jared Galanis, Jessica Jordan and the Learning Team