Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software Sustainability? Lessons from IPython

Software Sustainability? Lessons from IPython

Short, discussion-oriented slides for the WSSPE 1.1 workshop held at the SciPy 2014 conference:

http://wssspe.researchcomputing.org.uk/wssspe1-1/

Fernando Perez

July 10, 2014
Tweet

More Decks by Fernando Perez

Other Decks in Science

Transcript

  1. Software Sustainability?
    Lessons from IPython
    Fernando Perez (@fperez_org)
    UC Berkeley

    View full-size slide

  2. Facets of Sustainability

    Trust

    Value

    Scope

    Resources

    Need

    View full-size slide

  3. First, briefly, who am I?

    Physics PhD, 2002.

    Lattice QCD (numerical particle physics)

    IPython: Procrastinate on dissertation writing.

    Applied Mathematics Postdoc

    New class of Numerical algorithms for PDEs

    targeting quantum chemistry

    All Python outsides, Fortran/C/C++/Cython core.

    Research Scientist “in neuroscience”

    “Member” of the SciPy community since 2001.

    View full-size slide

  4. Second, some quick stats/history

    IPython 0.0.1:
    https://gist.github.com/fperez/1579699

    259 lines (including whitespace/comments)

    Truly an “afternoon hack”.

    My very first Python program.

    It will likely be my last...
    But it solved a problem I had

    View full-size slide

  5. In a Nutshell, IPython...

    has had 16,569 commits made by 368 contributors

    representing 87,837 lines of code

    is mostly written in Python,

    with a well-commented source code

    has a well established, mature codebase,

    maintained by a very large development team

    with increasing Y-O-Y commits

    took an estimated 22 years of effort (COCOMO
    model)
    Stats: http://www.ohloh.net/p/ipython

    View full-size slide

  6. Trust

    Clarity vs Transparency.

    Clarity of Governance.

    Private things in IPython:

    Security list. Anyone who wants is invited.

    Fiscal oversight for Numfocus. Needed for IRS
    compliance.

    Rare private discussions, like Jupyter renaming.

    Deliberately no private list: make secrecy hard by design.

    View full-size slide

  7. Trust
    Learn to let go!
    (The project is more important than you)

    View full-size slide

  8. Review, but give others the benefit of the doubt...
    (avoid death by a thousand nitpicks)

    View full-size slide

  9. Small mistakes are better than scoring points

    View full-size slide

  10. Disagreement, conflict, confrontation.

    View full-size slide

  11. Occam's razor of communities:
    Assume malice
    only when all other alternatives have been disproved.

    View full-size slide

  12. Value

    Always solve someone's problem.

    “Don't break userspace” - Linus Torvalds.

    View full-size slide

  13. Scope

    Defining scope is a compass.

    Helps you know what to do.
    Helps you know what NOT TO DO.

    View full-size slide

  14. Resources

    People

    Volunteers

    Permanent
    – Not just coders!

    Institutional

    Universities/institutes/companies

    Numfocus, PSF, etc

    $$$

    Government

    Private foundations

    Industry

    View full-size slide

  15. Does your project need to be sustainable?

    View full-size slide