.. _hacking-howto:
===============
Hacking HOWTO
===============
So you want to hack on GNU MediaGoblin?
=======================================
First thing to do is check out the Web site where we list all the
project infrastructure including:
* the mailing list
* the IRC channel
* the bug tracker
Additionally, we have information on how to get involved, who to talk
to, what needs to be worked on, and other things besides!
How to set up an environment for hacking
========================================
If running Debian GNU/Linux or a Debian-derived distro such as Mint or
Ubuntu, running the following should install necessary dependencies:
sudo apt-get install mongodb git-core python python-dev python-lxml
Note: The following instructions describe a development environment
that uses `zc.buildout `_ because it
involves less steps to get things running and less knowledge of python
packaging. However, if you prefer to use
`virtualenv `_,
that should work just fine.
Follow these steps:
1. clone the repository::
git clone http://git.gitorious.org/mediagoblin/mediagoblin.git
2. Bootstrap and run buildout::
cd mediagoblin
python bootstrap.py && ./bin/buildout
Now whenever you want to update mediagoblin's dependencies, just run::
./bin/buildout
Using this method, buildout should create a user_dev directory, in
which certain things will be stored (media, beaker session stuff,
etc). You can change this, but for development purposes this default
should be fine.
Running the test suite
======================
Run::
./bin/nosetests
Creating a new file
===================
FIXME - this needs to be updated when it's set in stone.
All new files need to have license/copyright information.
The following kinds of files get the GNU AGPL header:
* Python files
* JavaScript files
* templates
* other files with code in them
The following files get a CC BY header:
* CSS files
The following files don't get a header because that's hard, but are
under the CC BY license:
* image files
* video files
Quickstart for Django programmers
=================================
FIXME - write this
Bite-sized bugs to start with
=============================
FIXME - write this