IPython Project Governance

Decision making in IPython seems to be very academic and organized, with community members who are clear project leaders because of their history of involvement in the project. In my last blog post, I focused on Fernando Perez as a figure head in the IPython community. While Fernando is attributed as the creator of IPython he does not hold any visible official title with the IPython project.

Regular Meetings

For major decision making in the IPython project, a regular meeting takes place at UC Berkeley for core developers every six months. These meetings are held specifically "to provide direction and focus to the project" and are scheduled to coincide with major releases and the creation of a roadmap for the next.1 The last meeting took place in July 2013 and was attended by 21 people and 1 remote attendee. From searching around IPython's project site, I believe these regular meetings have taken place since 2011 and we preceded by more infrequent developer meet ups.

The IPython developers also hold weekly lab meetings on Thursday mornings (PST) in a Google Hangout. This time zone was chosen because most of the project participants are on the West Coast of the United States. Additionally, lab meetings are modelled after academic lab meetings as a research agenda setting tool. Recognizing that important meetings and discussions occasionally happen unplanned, the project accounts for this by asking "if at all possible try to move your chat room conversation to a public hangout and leave a link [ on the lab meeting page ] afterwards"

Roadmap

An important outcome of the core developer regularly scheduled meeting is the IPython Release Roadmap. The roadmap provides documentation of agreed upon project goals, where agreement has happened at the developer meeting, and also documentation of the delegation of tasks to the core team. As the roadmap wiki page states, these goals are created to "provide direct and focus to the project." They are also marked with a difficultly and priority scale. Because the delegation of work is visible on this page, it is clear who are the core IPython developers and what are their responsibilities. Here is the roadmap for the next planned release

IPEPs

Borrowed from Python Enhancement Proposals (PEPs), IPython has adopted IPEPs to document the proposals of major changes to the project. This practice appears to have started in April 2013 to replace decision formalization on the developer mailing list. IPEPs have a clearly documented template and each IPEP appears to be the result of much careful thought and attention. Compared to the Roadmap, IPEPs appear to be a decision making tool that allows for the documentation of long term project enhancements, while the roadmap sets the medium term (release) agenda.

On the whole, it seems that IPython follows a very simple governance structure. That decisions are made by consensus of the core development team, where membership simply depends on the time, skill, and knowledge to contribute regularly to the project. The project, having academic roots, does not stray far from academic practices such as lab meetings and a very collegeial environment. Here is one interesting example of decision making in the project regarding the use of Github wiki-pages 2.