.. _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 and maintain an environment for hacking
=====================================================
Getting requirements
--------------------
First, you need to have the following installed before you can build
an environment for hacking on GNU MediaGoblin:
* Python 2.6 or 2.7 - http://www.python.org/
You'll need Python as well as the dev files for building modules.
* python-lxml - http://lxml.de/
* git - http://git-scm.com/
* MongoDB - http://www.mongodb.org/
If you're running Debian GNU/Linux or a Debian-derived distribution
such as Mint or Ubuntu, running the following should install these
requirements::
sudo apt-get install mongodb git-core python python-dev python-lxml
Running bootstrap and buildout
------------------------------
After installing the requirements, 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
That's it! 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.
.. Note::
We used `zc.buildout `_ because it
involves fewer steps to get things running and less knowledge of
Python packaging. However, if you prefer to use `virtualenv
`_, that should work just
fine.
Updating dependencies
---------------------
While hacking on GNU MediaGoblin over time, you'll eventually have to
update the dependencies. To do that, run::
./bin/buildout
Running the server
==================
Run::
./bin/paster serve mediagoblin.ini --reload
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