public
anonymous / gist:5378663
Created

Anonymous Open Letter to the Ember.js Core Team

  • Download Gist
gistfile1.md
Markdown

Anonymous Open Letter to the Ember.js Core Team

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.

Hi anonymous,

First, let me acknowledge that the frustration that you're feeling is very real. There are definitely issues that we want to address, and you've called out a few of them.

However, I think you might be misunderstanding a few things.

Ember is a 100% community-driven project. As you know, we don't charge money for Ember, nor do we have a large corporation funding full-time employees. Yehuda and I, in particular, are in the middle of bootstrapping a new company and launching a product that does pay the bills.

It might seem trivial, but triaging issues and pull requests is not as simple of a task as it seems. Before accepting a pull request, it's important to review the code and think about all of the implications. It's typically a minimum of ten minutes per non-trivial issue or pull request. Maybe that doesn't seem like much to you, but it adds up quickly—and it's time spent not writing code. Other demands on our time include meetups, the community discussion forums, chat rooms, Hacker News threads, Twitter, and myriad other venues—like anonymous gists. :)

I personally have been working most nights and weekends since, oh, November or so. You can ask my friends—many of them haven't seen me in months. The other members of the core team have similar obligations that they must balance with their open source work.

I'll focus specifically on Ember Data since that's the cause of many of your complaints.

It actually has polymorphic associations right now, yay … but where the hell hasOne?

Polymorphic associations landed because Cyril Fluck, who was using Ember Data in his day job, needed the feature. He contacted us, and we worked closely on making sure his implementation fit within the greater architecture of the system. After a few back-and-forths, we merged his implementation.

The problems Ember Data is trying to solve are novel computer science problems. It may seem like laziness on our part, but I assure you that I spend some time every day discussing the strategy for making Ember Data stable. Obviously, we didn't think it would take this long; for that, I really do apologize.

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.

I acknowledge that you're frustrated, but if you think about this a little bit I think you'll see it's obviously not true. For example, just a few weeks ago we posted about stabilizing Ember Data, which included a new API specifically designed to address the concerns you raise above.

Our priority, 100%, is getting Ember 1.0 rock-solid and out the door, and getting to a stable release of Ember Data. Your characterization of us "implementing cool new things" is inaccurate. More than anything, it's a manpower issue. I'm a little disappointed that you posted this feedback anonymously, since Ember contributors are not anonymous, and I would be happy to work with you to help you become a contributor.

Remember that, as a community-driven project, it's up to you to ensure its success. We rely on smart people who are solving hard problems in their day jobs help us to improve and maintain the framework. As you said, Ember is solving hard problems that other frameworks aren't, and is only possible with the help of the many people who have donated a few hours here and there.

If you are hitting frustrating bugs, or think a process could be improved, engage with us. And don't do it anonymously, so I can follow up with you and get you talking to the right people. To quote Gandhi: "Be the change you wish to see in the world." :)

Oh, one other thing I should mention:

There are some really great, simpler alternatives to Ember Data that you may want to consider using:

We are also looking for someone to collaborate with us on Ember Inspector. If you have design chops and some ideas about building developer tools, feel free to ping me.

Hey, just passing by to say that I've been using EmberJS for the past three months and I really like it so far. I tried Backbone.JS and it was making my source code really dirty, and unreadable which is never good.
I do agree with you that ember-data is far from being useful and truthfully it has been the real pain for the past months. Last week I created my own library to handle my AJAX queries. It took me a day of work but now that I don't use ember-data anymore, I feel much better. I think everyone here can agree that ember-data is a pain, but there's a reason for it: everyone uses AJAX differently, with specific needs, and it's hard to satisfy everyone. My advice to you: don't use it, take a week to make your own library, you're gonna feel way better.
About that pagination bullshit: just so you know, no one use pagination anymore in 2014 (i'm coming from the future) because after all it made no sense at all. Remember this time when you had to switch from page 2 to page 5? Yeah it never happened to anyone, agreed. My advice: stop using pagination, use "show more" or "infinite scroll", and buy some UX book.
Agree with you on the version bullshit, I feel lost too with the "pre" and "rc" and dots and all.

In the end, just think EmberJS is going to the right direction, and I really want to say thanks to everyone who contributed. I didn't, so I'm just thankful for now.

I appreciate your work Tom and Yehuda. Its made my life easier and allowed me to build faster and more elegant than I used to. I don't use EmberData.

Maybe EmberJS is at the point where it needs a Zend or 10Gen style r&d + consultancy to have dedicated coders, documenters on it.

@tomdale, thanks for replying, it's not always easy, especially when you work on a project voluntarily and dedicate quite a lot of your spare time, to address somebody's anonymous rant.

Ember has, by far, one of the best open source community, and its core committers are always happy to help others, spread the knowledge and explain the concepts. I strongly encourage everyone to reach out through the forum (http://discuss.emberjs.com/), stack overflow (http://stackoverflow.com/questions/tagged/ember.js), irc (#emberjs) and every other communication channel.
Better yet, as Tom mentioned, it is Ember is 100% relying on its contributors, so get involved and help solve the issues! Even though, like me, you might not know exactly how to, reach to more knowledgeable people, I am 100% certain they will provide guidance.

Personally, I "help" Luke Melia (http://www.lukemelia.com/) in his quest to expand the NYC Ember community (http://www.meetup.com/EmberJS-NYC/) and we have create bi-monthly Hacker Hours which I invite everyone in the NYC area to attend. We have absolutely amazing and knowledgeable people showing up each session to help others.

Similarly to one of anonymous' rants, it was brought up that it is unclear how people can contribute to the project. I guess more could be done in this regard to explain what is under Ember's hood and how can people team up to make things happen and help out. Overall, it seems that the higher level knowledge and development roadmap might be resting on too few shoulders which is why having hacker hours and mentorship session is highly valuable...

@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.

Depressed because of this?

#firstworldproblems

@tomdale I'm a designer and seriously interested in collaborating on an Inspector.

You should write a blog post explaining why 'Ember is the best thing out there', I'm a honestly curious. I have used Ember many months ago and I didn't get that impression, I have moved to other things since then.

@pbowyer: This talk, while a bit outdated on some of the specifics, provides a good overview of some of the difficulties in implementing Ember Data: http://www.youtube.com/watch?v=_6yMxU-_ARs

@BenjaminN You seem to be a bit confused. Both "show more" and "infinite scroll" are a form of pagination. That is retrieval of subset of records from server. It may look different from users perspective but it's the same from servers point of view. The point is vanilla ember-data is unable to do that. It can only get all the records in one request.

@cheba YOU seem to be a bit confused, or maybe you didn't try ember-data?

Because you can of course easily get a specific set of records, by simply doing App.Post.find({page: 2}) or whatever you want to do.

I have no idea why you find it so difficult to do anything with pagination in EmberJS/ember-data. It works well in this specific case. What's wrong with you people !

@anonymous It's Free Software. Stopped? Work for update it. You have disagree? Fork it.

It's simple.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.