This document is a lightning talk: it only gives pointers, you need to Google and read references
Creating a community-driven project in Scientific Python. For the success of the project, garnering good developers is critical.
- Join an existing project rather than creating one, if one exists in the scope that you are interested in.
- Discuss your project on the scipy-dev mailing list
- Success with developers == Success with users
- Bootstrap with the right people and grow
- Documentation is key for end-users and developers
- Tests are necessary
- Well defined goal and scope
- Keep bounds on technical difficulty
- Short release cycles
- Focus on not owning the project
- Communicate a lot (blog, twitter, mailing lists), but with a good signal-to-noise ratio
- Use git + github:
- Create an organization on github http://github.org
- Learn git (large investment, you'll struggle).
- Host the website on github
- Create a mailing-list (host it on http://librelist.com or google groups)
- Use Sphinx (http://sphinx.pocoo.org/) for the documentation and website
- Do many tests with nosetests
- Do a lot of code review using github pull request mechanisms. Try to have people reviewing your own code. Value criticism. Give positive and polite criticism.
- make a setup.py, package your code (see distutils documentation, http://packages.python.org/an_example_pypi_project/index.html and example packages listed below).
- Separate the code from the examples. Ideally generate documentation from examples (as in scikit-learn/scikit-image)
- start with pure Python code (after a year and some community building, you can introduce Cython).
Inspect the social dynamics and technical choices of successful projects (list below reflects personal bias)
- Joblib (http://packages.python.org/joblib/) Very simple example of a project with tests, packaging and documentation
- scikit-learn (http://scikit-learn.org) and scikit-image (http://scikits-image.org/): mature projects with a striving social dynamic. In particular, read the developer guidelines for the scikit-learn: http://scikit-learn.org/dev/developers/index.html