Skip to content

Instantly share code, notes, and snippets.

@sengupta
Forked from GaelVaroquaux/lighting_talk.rst
Created April 5, 2012 19:45
Show Gist options
  • Save sengupta/2313521 to your computer and use it in GitHub Desktop.
Save sengupta/2313521 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)

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