Skip to content

Instantly share code, notes, and snippets.

@GaelVaroquaux
Created December 5, 2011 10:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save GaelVaroquaux/1433151 to your computer and use it in GitHub Desktop.
Save GaelVaroquaux/1433151 to your computer and use it in GitHub Desktop.
Bootstrapping a SciPy-related community project

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)

@prabhuramachandran
Copy link

Thanks for putting this together, you might want to add:

http://packages.python.org/an_example_pypi_project/index.html

which is an excellent starting point when starting a project!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment