How to contribute
Downloading the latest code
The code is maintained in a darcs repository. You can fetch it with the following command :
darcs get --partial http://mroy31.dyndns.org/~roy/repository/deejayd
Sending in your changes
darcs is easy and makes it easy both to integrate your patches and to give you credit for what you have contributed.
Patches by email will of course also be more than welcome.
The code
Main source
Overview
All of Deejayd's source code is located in the src directory. You'll find in there :
- packaging for some distributions
- translations
- distutils script.
- the deejayd python module
- the test suite and its launcher.
- some documentation, especially the protocol documentation.
- the launcher scripts
The prepare script changes some permitions and sets up some symlinks because darcs cannot hold this information. You should run it first, especially if you want to work on djmote.
The deejayd module
This module holds all of deejayd's fonctionnality.
First, there is an interface which aims at being shared among the client library and the core facade used in the server.
The mediadb and the database work together to populate some relationnal database tables according to you media files.
The player, either using the Gstreamer or the Xine backend gives us media playback. This playback capabilities gets used by the various available sources (such as playlist, webradio, dvd, etc).
Then there are the Twisted factories for both the net protocol and the web interface.
Those two manipulate the core facade which is a frontend to all those components.
The test suite
The full test suite may be launched using this simple line :
./tests.py
It accepts some options to narrow down which tests it is to run. Those options are documented in the test suite launcher source.
Each test module is a python file named test_*.py which sits in the testdeejayd directory. There are a few helpers for building tests, such as launching a test server or building dummy media files to test the library on real data.
There is a special test module which ensures that the deejayd core and the client library share the same interface (API). This way, if you for for instance a python GTK client to deejayd, it can become a full blown media player by only changing one line of code.
The net protocol documentation
The Deejayd net protocol documentation is generated from the commands source using a simple documentation generation script.
Maemo source
The maemosrc directory holds djmote which is a Deejayd client for the maemo platform. It also holds its packaging and symlinks to the client library.
This was splitted from the rest of the source because the way we package things, the debian directory cannot be shared between the maemo platform and the other full blown distributions. This is mainly due to the lack of python-central on the maemo platform.
