Today we are announcing that the Ghost Admin UI is going to be rebuilt in Ember.js.
For the past couple of weeks, there has been an epic discussion occuring on Ghost's GitHub. The idea is that we're looking to find the right tool with which to build the next iteration of the Ghost admin UI: the main options being Angular, Ember, React or Backbone + marionette etc. Our existing Backbone implementation has a number of problems, so we've been specifically looking for the tool that will best solve those problems:
- Is it client side? Is it server side? Is it dark side?
- Data binding
- Route/navigation/history management
- View management
- Fragile Code
- Lack of clarity & guidelines on how to approach common problems
The discussion around which tool we should adopt has been amazingly positive and open minded, and has provided a great deal of insight. There is no doubt that any one of the options discussed could do a great job of driving the Ghost admin UI. However, throughout the discussion, there was one tool which shone out as being the right choice for Ghost. That tool is Ember.js.
Ember.js stands out from the other choices because it is strongly opinionated. Although seen as a downside by some, for Ghost, this is exactly what we need. As a fast moving open source project, we don't want to spend time discussing and deciding on the best structure, designing a framework & creating documentation and guidelines so that new contributors can get up to speed. With Ember.js, the majority of decisions have been made, making it easy to get going, easy to knowledge share, and easy to onboard new developers.
There are many other reasons for Ghost to choose Ember.js. It solves all of the hairiest problems we've faced with routing, data binding and view management in a straight forward manner. The tight integration with handlebars is a great fit with Ghost's existing dependence on handlebars. The top-down, URL driven approach is also going to help us push the whole app down to the client side in a much more structured manner.
The involvement of the Ember.js community in our decision making process has also been a great plus. We owe a special thanks to Trek, Manuel, Markus, Stefan, Taras, Erik, Yehuda, Tom and everyone else from the Ember.js community who got involved. They've shown that they are a passionate bunch of people and they have been very keen to get stuck in. The importance of their willingness to help us quickly turn around a big re-write cannot be overlooked, but this is not the only reason we are keen to join them. Their community and their approach is one we would love to emulate in Ghost's community, we hope that by working with them, some of their awesomeness will rub off on us!
Our core team is extremely excited to get stuck in with the rewrite. There will be plenty of news and updates here and on GitHub as the project unfolds. If you want to get involved, the best way is to drop by our IRC channel: #ghost on Freenode. The more the merrier!