Getting started with the OpenHatch code (moved)

To get your own instance of OpenHatch running, follow these five steps and then get in touch with us.

The code is written in Python. It uses the Django toolkit and tries to stick to good software testing practices. If you have Python experience, you should be able to get hacking pretty quickly even if you don't know Django or testing.

Clone our git repository
You will need to have the git version control system installed. Once you do, type this into a terminal:

$ git clone git://gitorious.org/openhatch/oh-mainline.git

It might take a while; it's kind of a big repository. (Fifty megabytes, or so.)

Overview of Openhatch filesystem structure
Take a look in the LAYOUT file - oh-mainline/LAYOUT

It's a good overview of the filesystem.

You can also read it online...

http://gitorious.org/openhatch/oh-mainline/blobs/master/LAYOUT

Follow the README
The repository is called oh-mainline so you have to "cd" into it:

$ cd oh-mainline

There you'll find a README.mkd file. Give it a careful read.

$ less README.mkd

That is what we really keep up to date with the necessary things.

It contains instructions you need to follow. Go ahead and do that. I can wait.

Problems with buildout?
If you have an error like: ImportError: No module named enthought

Then you probably need to wrap your environment with virtualenv. This will insulate it against libraries you have installed on your system.

Instructions for setting up a virtualenv wrapper:

sudo apt-get install virtualenvwrapper python-setuptools

Be sure to configure your shell so that pip knows where to find your virtual environments:

source /etc/bash_completion.d/virtualenvwrapper
 * 1) in .bashrc or .bash_profile

Once installed, create your virtual environment for OpenHatch and install the dependencies

cd oh-mainline mkvirtualenv --no-site-packages openhatch mkdir ~/.virtualenvs python bootstrap.py deactivate
 * 1) use this command
 * 2) workon openhatch
 * 3) only if your prompt hasn't got (openhatch)user@host:~/oh-mainline/$

That bootstraps your environment so that it will always use the virtualenv. Now, just run:

./bin/buildout

And you should be fine. All future commands from ./bin/* will safely use the virtualenv and ignore Python modules installed systme-wide. (FIXME: Make sure this is true!)

Run the tests
We have automated tests that help us know when we've broken functionality in the OpenHatch code. Running the tests is a good way to make sure your OpenHatch environment works properly! Try this:

$ ./bin/sqlite_mysite test missions

That runs the test suite for just the missions part of the code. It uses the sqlite-based test runner so it runs fast; the real website uses MySQL, not SQLite, but you'll discover that tests run about 10 times faster in the sqlite runner.

Want a website?
Once you've gone through these steps, just visit your own OpenHatch instance on the web. You can start the server with:

$ ./bin/mysite runserver

and load up http://localhost:8000/ in your web browser.

Thanks for sahirng. Always good to find a real expert.

Get in touch
The fifth mandatory step is to get in touch with us. (Okay, not quite mandatory, but we'll all be happier if you do)


 * 1) Join the Devel mailing list and say hello.
 * 2) the #openhatch IRC channel in freenode. (If you can click IRC links: )
 * 3) We have weekly meetings, typically on Saturdays at 4pm EST (-5 UTC).

Read more documentation
Before you start hacking OpenHatch, we strongly advise you to watch Learning new codebase talk by Justin Lilly given during DjangoCon 2010.

You can find more tips about hacking OpenHatch in the Category:Hacking_OpenHatch!

You can find things to work on by browsing our bug tracker or asking us!

Start contributing patches!
We mark issues that are particularly good for new contributors with the "bitesize" keyword on our bug tracker. You can find the open easy issues here.

If you find an issue you like and it isn't assigned to anyone, assign it to yourself and start hacking (you'll need an OpenHatch account to log in to the bug tracker). If it is assigned to someone already, but it looks like they haven't gotten around to working on it, leave a note on the ticket saying that you are interested in taking it (you can also try asking on IRC).

When you are ready to submit a patch for an issue, follow the guidelines at How we handle patches.

If you ever feel like you are getting stuck or could use some design feedback, don't hesitate to ask for help on the IRC channel, on the devel mailing list, or on the issue ticket. Attending the weekly development meetings on IRC is a great time to ask for help or recommendations on issues to work on.