I was noting down topics to write for the Ember 2019 call for posts when I came across two brilliant articles: To Have A Future, Ember Must Kill Its Past and Ember 2019: Reduce Complexity among others with which I totally agree. I'm casting a +1 to each along with the more detailed technical proposals. So this will be a quick writeup.
Ember helped me build amazing things! I love it and I'm thankful to our great community. I'm now particularly pumped about the upcoming Octane edition because it aligns very well with where I think Ember should go. I am a bit concerned about its rate of adoption so I'll take this opportunity to give it some tough love.
Priority #1: Drastically Simplify
Ember was easy for me to learn (and I always enjoyed it) but I know first-hand this hasn't been the case for hundreds of others. Steep learning curve for beginners. Unnecessarily complex mental model. I've been bringing this up since 2015 when I unfortunately took the leap to write about Routeable Components becausae it was the way forward, but that story ended up in sheer disappointment.
This has always been a major source of confusion:
"No need for Components, Ember uses Templates for that! Templates are kind of like Components, but use this other thing called Controllers for managing its state and defining its actions. If you still insist on using Components, you could just render a single top-level Component in the template, but it’s discouraged. For years, the Ember Community was promised Routable Components, but Yehuda Katz waved the white flag of surrender to that notion in 2018, forever trapping many Ember developers in an unending loop of sadness." – http://andrewcallahan.com/to-have-a-future-ember-must-kill-its-past/
React has grown to massive adoption and most developers today take the "just components" mental model for granted. There is clearly much more to "just components" but the learning curve feels more incremental and thus a lower barrier to entry.
Ember should be "mostly components" without losing any of the strong conventions – which is its single most important feature. The Router and URL as first-class citizen are fantastic.
Stability without stagnation is a great proposition but Octane is eventually going to disrupt it anyway. This is the perfect time to get rid of old ideas. They were fine at the time and we are thankful for them. They are not anymore. It is OKAY to let go of things. We shouldn't get emotionally attached to a piece of code that doesn't serve us well as developers and as a community.
Controllers must be killed for once and for all. I'm sure query params will find a cozy home.
Routes are supposed to be lightweight objects that are used purely for data loading and soon for the heuristics of route splitting. An annotated function/EC task on a routed component would provide the same benefits.
Glimmer components should be default and the king construct in Ember.
"Glimmer" should strictly be a codeword among core developers and never mentioned in a public facing API. Newcomers to the framework should not be exposed to the word Glimmer that would add to the cognitive load.
Templates should only be the markup of such components.
Octane's goal of aligning with modern JS is definitely in the right direction. Goodbye
EmberObject and the runloop.
I have no major qualms with Ember Data. It should borrow inspiration from Embermap's Storefront though (caching, sync relationships by default, etc) and make JSON API operations a reality.
Priority #1: Communicate the value of Ember to the market
Ember has fallen off the radar. Pretty much any article about front-end talks about React/Angular/Vue and that's the end of it. They are taking such a big market share that Ember will struggle despite its technical merits.
No matter how lame or biased those articles/surveys are, we need to stop finding excuses and get in there. Take for instance StackOverflow's 2019 Developer Survey. Where is Ember? Tragically, the only mention of Ember is in the word "remember".
Once Ember has drastically improved developer ergonomics & beginner friendliness, it has to spread the message effectively which is just if not more important. Both are #1 priorities.
The overall style and particularly Ember logo's typeface and mascot makes it look childish and outdated. Dude you gotta throw away your Mickey Mouse t-shirts your mom got you at Disneyland 1998. It was fun at the time and it will always keep a room in your heart. But you have to move on.
"Ambitious": what does that even mean? Is this a differentiating point? Are Vue and React developers NOT ambitious?
Since Ember is not backed by Facebook or Google we should compensate with social proof at first glance. As far as I know LinkedIn is heavily invested in Ember. Netflix too? Let's show the big guns right below the hero.
I am not sure of the status of the new website but as of this writing it's not published. Good step in the right direction.
Less exposure clearly affects the adoption of the framework. Not only there are less developers, technical leads, CTOs choosing Ember but some of them have dismissed it and it will be hard to persuade them to come back. There are much less job/contract opportunities comparing to the most popular frameworks. It's a pity because Ember used to be one of the top 2-3 choices just a few years ago.
I noticed several Ember developers going out in the wild to talk about Ember. This is great. We need more and better marketing and PR.
Priority #3: Performance
When you make an effort to dress better, shedding some pounds is not a bad idea.
Good progress is being made on this front. Trimming down the framework size, SFC and the Embroider project for modern builds are all very promising.
Let's make Ember more pleasant to introduce. Top priorities above anything else: developer experience by simplifying the barrier to entry, and communicating this to the world.