Ember in 2018
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
|Ember in 2018
|When I read about the possibility to contribute to the roadmap of Ember in 2018 I wanted to write a blog post immediately. But as always a lot of things came in between and this is why I write my blog post now shortly after the deadline. I hope it's still valuable and can contribute to the roadmap. A lot of things were already mentioned by the others and I don't want to repeat their arguments so this blog post is going to be shorter. I want to focus on 3 things: marketing, "getting the awesome stuff done" and community.
|Let's start with marketing. We use Ember since 2013 in our company and we are quite satisfied. I was coming from an Angular background and felt very restricted at the beginning. But after some time I recognized that convention over configuration can help a lot. It gives you the chance to focus more on the product and invest less time in architecture discussions and decisions. Also it makes upgrading easier and writing and consuming addons more convenient. The addon story is cool in the Ember community and I think it's not necessarily a problem that there are less addons for Ember than for other frameworks. In contrast, I think this is a big advantage. In my opinion it makes more sense to settle around existing solutions and improve them instead of creating dozens of addons which accomplish the same thing. Of course competition is good and thrives progress but I think fragmentation hurts the ecosystem more. Also the addons we use are very high quality and the maintainers are very responsive. Almost every PR I submitted was merged within some days. Something I wasn't used to from other communities. Often addons are abandoned by their maintainers and then you are left alone. This didn't happen to us during the time we use Ember (which we do since 2013). Some of the addons we use are older than many of the new shiny frameworks out there. For us the mantra of "stability without stagnation" was a perfect fit. We never had to rewrite our entire product only because of the framework and after 5 years we are still on the most recent version of Ember and use all the nice features it gives us. When marketing Ember we should also emphasize these latest features. Because they make Ember feel really modern. I also think the Typescript story is super important and should be featured more prominently. Of course things like engines, fastboot, ember-cli, glimmer-vm etc have to be promoted but they were already mentioned by others.
|From time to time there are "awesome" features announced but they are presented at some conferences and then you have to wait a long time until they are ready to use. This is what I want to address in "getting the awesome stuff done". For example I'm really interested in the glimmer-vm features. It would be awesome if we could already use these binary templates. They were presented almost 9 month ago but they are still not ready for production. Using webassembly for the glimmer-vm is also an interesting feature. Not necessarily for render performance but it would unlock new ways of caching. For example, cache the vm into indexed db which circumvents download and parse time! Another promising story is the "npm install your way to Ember". I believe, if we get this right, this could boost Ember adoption. No framework has a curated set of tools like Ember. If we extract them it would be easy to use only the parts you need and grow with your project. The stuff which is going on with the packager RFC, code splitting, lazy loading, tree shaking and dead code elimination are crucial and need to happen very quickly. Despite we love Ember we had to switch one of our projects to Glimmer.js. Glimmer.js is another story. It's really cool to use (also because of Typescript) but there are a lot of annoying bugs and many important features are missing. I hope the developer experience of Glimmer.js gets better and maybe it's included in the "npm install your way to Ember" story. One thing I would love to see is css-blocks integration into Ember. This css-block integration would give Ember a feature which no other framework has. It would enable real css minification.
|All these features are bringing me to my last point, which is community. It seems that many of the above mentioned projects are LinkedIn internal. There is almost no guidance and documentation also they feel more like prototypes than production versions. I would like to see more community involvement especially on the cutting edge features. I think the developers of these features should communicate somehow better with the community (also outside of LinkedIn). A lot of people are experimenting with these features but I think the exchange of information is not really good. Yes there are a lot of discussions in the slack channels but all this information is also lost there. Sometimes it's also hard for me to contribute back to the community because it's not easy to jump into some project and write production code instant. For some problems (especially with Glimmer.js) we wrote workarounds and fixes which could be beneficial for the community. They are not generic solutions and I struggle to make them generic and fit into the ecosystem. What would help me a lot would be some kind of "workshops" with core team members. I could imagine it something like this: once a month or quarter or half a year, the core team members provide their time for an online meetup. Before the meetup the core team member who hosts the meetup sets up some topics. Maybe a list of issues on which could be worked. If someone has a solution or wants to solve this specific issue she/he can subscribe to the meetup. At the meetup the core team member makes a short introduction and then is there as a supervisor and available for questions. My company gives us one day a month for innovation and if there are meetups like the one I described I could use some of this time to improve parts of the Ember ecosystem. But without any guidance many of these issues, features and things I want to contribute are too big to accomplish in one day. I think a lot of man power is lost because on-boarding and getting started is hard.