Since its first release, I have been eager to contribute code to Ghost. Browsing through the issues on Github makes it quite easy to find a task to work on. Now comes the difficult task: Setting up a proper development environment.
Setting up a development environment
The Ghost team provides an excellent way to setup a development environment within a few minutes. Ghost-Vagrant uses Vagrant and Puppet to setup a virtual machine using VirtualBox and install all necessary dependencies for you.
~/ |- Ghost/ |- Ghost-Vagrant/
The VagrantFile in Ghost-Vagrant requires your Ghost clone to reside in the same directory as Ghost-Vagrant. Running
vagrant up the first time will fetch a basic 64bit image of Ubuntu and set up Node.js, Phantom, Casper on the virtual machine. Vagrant will also try to mount your clone of Ghost using NFS (on Ubuntu run
sudo apt-get install nfs-kernel-system). This makes it possible to use an IDE on your host and run Ghost inside the virtual machine without having to install all dependencies on your host system.
When you decided to take on a task make sure to follow the Contribution Guide and send your pull request when you are finished. Always write unit/functional tests to make sure the feature you built will work in the future.
Remember: Ghost is just for blogging. Any features that go beyond that are better suited for a plugin once the Plugin API is public.
Run Ghost in development mode
Ghost uses Grunt for a number of tasks. Grunt comes in really handy when running as
grunt every time you make a change.
Most of the Ghost developers hang out in IRC in the official Ghost channel on Freenode: #ghost. They are really responsive and always helpful! (Thanks from my side!). The IRC channel is also a good place to get to know fellow Ghost users.
Working on Ghost is a very nice experience so far and I plan to continue helping to improve the platform.