sproutcore/sproutcore — Issue #639: Proposal: Replace Abbot with Node based build tools
Author: publickeating
Created: 2011-12-11 20:17:12+00:00
State: open
Labels: proposal

*Description:*

It has been a hot topic the past week, but it has also always been a sore point for a long time and that is that getting a proper Ruby and gems installation isn't nearly easy enough. Anecdotally, I've seen dozens of people struggle with their Ruby installs and in particular the Windows users have an extremely hard time of it.

I propose we create an official sub-project, sproutcore/build_tools, based on Node.js that will become a 1-to-1 replacement of Abbot. Here's how I see it, but please throw in your comments below and educate me:

*Pros:*

- We don't have to start from scratch. Martin Ottenwaelter & Maurits Lamers have been working on Garçon for over a year to do exactly this and I'm sure they wouldn't mind us putting some more muscle behind it.
- Node has their own installers, which eliminates the need for us to try and maintain the current installers made by Peter Wagenet.
- There are a lot of great Node modules that we can use to shortcut re-creating Abbot. See [build modules](https://github.com/joyent/node/wiki/modules#wiki-build-and-deployment) and [graphics modules](https://github.com/joyent/node/wiki/modules#wiki-graphics). Personally, I've had wonderful success with the gm (GraphicsMagick) module on OS X and Linux and I bet we could crank out the Chance component without serious roadblocks.
- The Windows installer of Node is written by Microsoft! Yay, no more second-class support for Windows devs!
- Node build tools will be invariably faster than the Ruby ones (which have improved significantly as it were).
- It's JavaScript, the language we all know and ❤
- I think it's fair to say that Abbot is a difficult codebase to work on. This is a prime opportunity for us to rethink the architecture, properly do the command line help options, add cool new features (linting?), etc.
- Others?

*Cons:*

- Having an official sub-project that isn't complete is a gamble. Essentially, it has to have a certain level of support and maintain a high enough velocity of growth or else it will have to be removed again.
- The amount of effort hasn't been spec'd out yet, but it's not likely trivial. The serious risks need to still be identified.
- Others?

Like I said, please weigh in below.