aboutsummaryrefslogtreecommitdiffstats
path: root/docs/hackinghowto.rst
blob: 96a7e1a4fd35ba647a1e147f88acb02c412213fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
.. _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 <http://www.buildout.org/>`_ because it
   involves fewer steps to get things running and less knowledge of
   Python packaging.  However, if you prefer to use `virtualenv
   <http://pypi.python.org/pypi/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


Quickstart for Django programmers
=================================

FIXME - write this


Bite-sized bugs to start with
=============================

FIXME - write this