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:


Fernando Perez

July 10, 2014

More Decks by Fernando Perez

Other Decks in Science


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

    View full-size slide

  2. Facets of Sustainability






    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:

    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
    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

    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



    – Not just coders!



    Numfocus, PSF, etc



    Private foundations


    View full-size slide

  15. Does your project need to be sustainable?

    View full-size slide