Getting started with the OpenHatch code (moved)

From OpenHatch wiki

This is a page about improving or modifying OpenHatch.

We call that "Hacking OpenHatch," and there is a whole category of pages about that.

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:

  1. in .bashrc or .bash_profile

source /etc/bash_completion.d/virtualenvwrapper

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

cd oh-mainline

mkvirtualenv --no-site-packages openhatch

workon openhatch

./bin/buildout

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.

Play with your local install

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.

Want a shell?

You can get a shell from which you can play with database objects and the entire codebase. This uses "IPython", similar to "IRB" if you know Ruby.

$ ./bin/mysite shell_plus

For more information on how to use and what you can do with the shell_plus, check the Shell_plus

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: <irc://irc.freenode.net/openhatch>)
    1. 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.