- ================================================
- Bootstrapping a SciPy-related community project
- ================================================
- This document is a lightning talk: it only gives pointers, you need to
- Google and read references
- Goal
- =====
- Creating a community-driven project in Scientific Python. For the success
- of the project, garnering good developers is critical.
- Preliminaries
- ==============
- * 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
- Ingredients for success
- ========================
- * 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
- Technical recipe
- ==================
- * 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).
- Examples project
- =================
- 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