A great django app should have:
- a source repository
- an issue tracker
- release packages
- a mailing list
- continuous integration
Source code repository and issue tracker
Most django apps use github, but also many of them are on bitbucket.
The standard way is to have a sphinx project in the docs subdirectory of the application sources root.
If using Github, then you can enable a “post commit hook” to RTFD. This will enable documentation regeneration every time a commit is pushed. Many great django applications use it. A really amazing service !
The standard way is to build a python setuptools package. A package is an archive of the source code that can be installed with easy_install or pip.
You can host it like you want, but the easiest is to just upload it on PyPi.
A mailing list where new version can be announced and where users can ask questions. I found two hosts:
Old school hackers will prefer librelist, but it has some issue as you can see in the FAQ, with emails hosted at google that are not @gmail.com.
Continuous integration means running the tests after every source code update, to find regressions.
Travis-ci is a fantastic service which can also be enabled by a github post commit hook. It will download the last sources and run tests, and email you if they fail.
Travis can also be configured to run PEP8 compliance tests in addition to unit tests.
Transifex is a fantastic translator network which also connects to the source repository.
PythonAnywhere is an awesome webhost which has a free plan.
It does take quite some effort to configure all this, but it’s very rewarding. There is a lot of documentation, IRC support channels and of course: many open source examples to get inspiration from.
Here are a couple of apps I did which use these services:
But you can find many others.