Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Facets of Sustainability ● Trust ● Value ● Scope ● Resources ● Need

Slide 3

Slide 3 text

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.

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Trust

Slide 9

Slide 9 text

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.

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Small mistakes are better than scoring points

Slide 13

Slide 13 text

Disagreement, conflict, confrontation.

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Value

Slide 16

Slide 16 text

Value ● Always solve someone's problem. ● “Don't break userspace” - Linus Torvalds.

Slide 17

Slide 17 text

Scope

Slide 18

Slide 18 text

Scope ● Defining scope is a compass. ● Helps you know what to do. Helps you know what NOT TO DO.

Slide 19

Slide 19 text

Resources

Slide 20

Slide 20 text

Resources ● People – Volunteers – Permanent – Not just coders! ● Institutional – Universities/institutes/companies – Numfocus, PSF, etc ● $$$ – Government – Private foundations – Industry

Slide 21

Slide 21 text

Need

Slide 22

Slide 22 text

Does your project need to be sustainable?