Skip to content

Instantly share code, notes, and snippets.

@southpolesteve
Last active August 29, 2015 14:04
Show Gist options
  • Save southpolesteve/569d29979794bc67ce1c to your computer and use it in GitHub Desktop.
Save southpolesteve/569d29979794bc67ce1c to your computer and use it in GitHub Desktop.
ember-cli

Moving away from ember-cli

I love ember. It is awesome. But I recently stopped using ember-cli. Here is why. Be warned this is a pretty raw stream of thought and may not be particularly well reasoned. Maybe some day I'll edit it into a proper blog post.

es6 modules

I get es6 modules. They are awesome and I look forward to using them one day. But right now I find them to be more of the PITA. IF I had a extremely large app I might feel different, but committing to es6 from day one has led to problems for me and my team. "How do I make this existing lib cooperate that needs to tie into ember?", "How do I debug this issue?". With globals this stuff is trivial. Open web inspector. Poke around. With es6+ ember inspector it isn't terrible, but it is not great either :/ This is has been a definite sticking point for people new to ember on our team. Hard to learn ember and battle ES6 weirdness at the same time.

ember-cli-addons

Everyone keeps saying that this is for modifications to ember-cli internals, but it is quickly becoming another package manager: https://www.npmjs.org/search?q=ember-cli. Team member asked me the other day if they should use npm+browserify, bower, or the ember-cli-addon version of a library. Ugh :(.

gulp vs broccoli

This is mostly a personal preference, but I much prefer gulp to broccoli. Gulp streams and pipes are easier to manipulate and understand especially for our devs who are coming from previous node.js work. With gulp I don't need as many plugins, eg "grunt-" or "broccoli-" and in my experience performance has been nearly the same as broccoli.

Ember app kit

FWIW, I actually miss ember app kit some days. It was complex, but that complexity was out in the open. I could go in and change things quite easily on a per project basis. Now it is all hidden in the depths of an NPM module. And I have a write an ember-cli addon fi I want to change things. Great another API to learn :( Before I could just manipulate the express server directly, add middleware, etc.

Bottom line is that ember-cli just isn't cutting it for us right now. Ember itself has such a steep learning curve, throwing on the additional overhead of ember-cli (and all the stuff that goes with it) has just been too much.

Don't get me wrong. I have hope. One day it might, and ember-cli is pushing hard in that direction. But we need to be productive and flexible today. That can't come at the expense of being on the leading edge or pushing the state of the art. It took me ~6 hours to reimplement a good chunk of ember-cli using gulp.js with globals. So that is what I am going to use for now.

One final disclaimer. I know lots of devs who's needs are met very we'll by ember-cli. Open source is pretty thankless work and I'm thrilled that things like ember and ember-cli exist at all. Please don't take this too negatively. All the ember and ember-cli devs are awesome and thank you for all the time you put into these tools just so I can complain about them :)

@jdjkelly
Copy link

Just curious if you could elaborate on any issues you had with using ES6 modules? Can you think of anything that might help lessen that curve? I think partly the fact that the language itself is rocketing in this direction is going to help, but can you think of anything specific to the context of Ember-CLI that would have been helpful to just flat out know before hand?

@southpolesteve
Copy link
Author

In my experience ES6 modules are an issue for junior devs or people new to ember. None of the examples in the ember docs and 99% of the blog posts use ES6. ES6 is just another thing they have to learn or wrap their head around. The other issue is debugging or working with existing globals based libraries (or especially ones that tie into ember). It's not that it is impossible to do, but it is definitely not simple. It adds friction to the debugging process when third party code can be used or inspected easily in the inspector.

It would actually be great if ember-cli had an option to use globals instead of ES6 when generating the application structure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment