Disclaimer: I've been using Ember for quite some time now, about when 0.9.8 was released, which means I'm not a random hater using backbone or angular.
I do believe Ember is the best thing out there, but I want to point out some things which really piss me off.
Most of them are based on the fact that the core team doesn't seem to be organized and doesn't prioritize the right things. Here are couple of examples:
-
Ember Extension was a great idea, there were couple of videos released with it, everyone loved it, but the project has been dead for 2 months now. There are 11 open issues, many of them for a few months without any response from the core team.
-
Ember Gem was also untouched for 2 months. It was supposed to be a simple way to get started with a static app, but it's not maintained. There are open issues and PRs also completely untouched and uncommented.
-
Ember Data is a topic in itself. Up until a couple of weeks ago it was also a dead project that was just swallowing issues and PRs. Igor Terzic has done some awesome work getting to only 50 open PRs. But did it really have to take someone to sponsor the development of Ember Data to get some stuff done? I'll get more into detail about Data later.
It's also worth mentioning that there are some issues in both Ember and Ember Data which have been open forever, without any shown interest from the core team to solve them. I want to point out that Peter Wagenet has been doing a great job here trying to keep up with the issues, which isn't easy, but very often he comments with a question to Tom or Yehuda, and they simply do not answer, ever. There are issues in which he repeatedly pings @wycats without any response. I'm not sure if there's some internal super secret talk going on.
I know you guys are busy, but really, there are people out there who submit PRs and issues and do it in their own time. And if it takes a month to notice a PR after 4 pings to the core team, I think something is really wrong.
These two problems, abandoning projects and ignoring issues, basically come down to one thing, and that is lack of prioritization.
Let's dive in some more.
There are things which aren't part of Ember, but that every reasonable application requires. For example pagination. Have you actually ever created a reasonably sized web app which didn't need pagination? Ember presents itself as a thing for building huge apps yo, well it doesn't tell you how to paginate. Ember Data doesn't support it either. Oh wait, it does, but you have to override the adapter. That's great, but how? Read the source code? You mean the implementation which changes every now and then and isn't really documented? Or those internal side-effects and nuances that I have to spend weeks figuring out before I get everything right, just to do something stupid simple like display page 3.
It seems that we're getting close to Ember Data, so let's dive into the major issue there.
There's a thing called versioning. Let me explain how they work, or maybe just read this article http://semver.org/, because it feels that the core team doesn't understand what versions mean.
Ember Data is released in "revisions", because it's not production ready and not ready to be 1.0. Hence the core team chose to rather call breaking changes a new "revision". Well guess what dudes, that's exactly what versions are for. Why couldn't you just like normal people release 0.4, 0.5? Why do you need to hit 1.0 directly?
Yes, releasing a version would mean having some kind of support and responsibility, a bit more than just saying "dude use revision 12, it finally works with polymorphic associations (more rant on that later)". The whole "revision" thing just makes people feel that you don't give a crap about Ember Data. It was never stable enough, so why try now to make it stable, while we can wait another year and go with 1.0 straight up?
"Is It "Production Ready™"? No" … Bullshit, people are actually using it right now. You can hide your head in the sand, but that doesn't change the fact that 95% of the people using and trying Ember want Ember Data. Nobody really cares if someone in some private skype call decided that "Ember works without Data", because it is out there, it has been out there for months. This whole line in the readme is just another excuse from the core team to not give a crap about Ember Data.
One more thing about the versioning, which really just makes me feel sick. Why is handlebars being released as 1.0.0-rc2, 1.0.0.beta, etc.? It causes issues everywhere, and it makes absolutely no sense. Maybe it's some sort of hidden marketing move that makes people believe it is more stable when they see 1.0.0-rc3, rather than 0.8.3? Well guess what, people would much rather not be confused about stupid version numbers.
My final rant is going to be about features in Ember Data. It actually has polymorphic associations right now, yay … but where the hell hasOne
? It has been promised over and over, but the solution is still to do belongsTo
on both sides. We have per-type adapters, but they are completely broken. We have transactions, but they are sometimes broken. We have embedded relationships, but they are sometimes broken. And what about manyToMany?
Could you please just stop for a moment and instead of implementing cool new things just fix the things that are already there? I have to say that since I started using Ember, literally nothing have changed, especially about Data.
Personally I would switch to a different framework if there was an alternative, but there isn't. Ember is the best thing out there, Angular doesn't compare to it, and Backbone is a joke. But please, I feel completely frustrated, depressed and in total despair every time I see another issue that was untouched for weeks, or when someone mentions a bug after a month and nothing has changed since then. If Ember is supposed to be the flagship of client side MVC, the approach of the core team has to change towards more stability and less coolness.
@tomdale Thanks for your well-considered response. What are the noval computer science problems that Ember Data is trying to solve? I'd like to understand more about them.