|
|
Subscribe / Log in / New account

Django changes its governance

By Jake Edge
March 25, 2020

The Django web framework has come a long way since it was first released as open source in 2005. It started with a benevolent dictator for life (BDFL) governance model, like the language it is implemented in, Python, but switched to a different model in 2014. When Python switched away from the BDFL model in 2018, it followed Django's lead to some extent. But now Django is changing yet again, moving from governance based around a "core team" to one that is more inclusive and better reflects the way the project is operating now.

Django actually started out with co-BDFLs; Adrian Holovaty and Jacob Kaplan-Moss filled that role until they retired in early 2014, which motivated the change to the core-team model. By 2018, some problems with that new model were being felt, so James Bennett spearheaded an effort to change it, which resulted in Django enhancement proposal (DEP) 10 ("New governance for the Django project")—adopted on March 12. Perhaps unsurprisingly, some of the problems identified for Django are sometimes heard in Python circles as well; the changes for Django could be a harbinger of Python's governance down the road.

The core team model relied on a select group of developers (the committers) to make all of the high-level decisions for the project. The BDFL "deadlock-avoidance" role was filled by a technical board that was elected by the committers; the core team of committers was responsible for all of the changes to Django. Around the same time as the governance change, the Django Software Foundation (DSF) started hiring "Fellows" to manage a lot of the day-to-day maintenance of the software and project; it turned out that the Fellows ended up doing most of the actual commits. As Bennett put it back in 2018:

In reality, very few committers actually use their commit bits. Decisions are made by consensus, involving input from committers and non-committers, on the django-developers list, and most actual commits to the main Django repository are made by the Fellows. Even people who have commit bits of their own, and therefore the right to just push their changes straight into Django, typically use pull requests and solicit discussion, and many committers (there are around 40) are inactive.

At the same time, though, being a Django committer ("core developer", "Django core", or whatever you choose to call it) is still seen as a high-prestige title, and committers are given a lot of deference by the wider community. Given that the actual day-to-day governance rarely relies on the committers having any sort of special powers or prestige, this is a problem, especially because it seems to create an impression among potential contributors that they're not "good enough" to match up to those awe-inspiring titanic beings (please note sarcasm: I am not anything close to awe-inspiring).

So the proposal is to eliminate the core team entirely, which will have minimal to no effect on the project, while recognizing all of the existing and former core team members under the honorary "Django Core Developer" title. The technical board will still be there to break ties and such, but it will be elected differently. From the announcement of the change, also authored by Bennett:

The Technical Board will be kept as a final decision-making authority for cases where this is needed -- which have historically come up only rarely -- and is also charged with canvassing for ideas and proposals for Django's future technical direction, and with setting the release schedule.

However, membership on the Technical Board will no longer be restricted to committers, and the Technical Board will no longer be elected by committers, which is necessary because the "core" committers, as a group, cease to exist. Instead, anyone who demonstrates a history of technical contributions to Django is eligible to run for the Technical Board, and the Technical Board will be elected by the DSF's Individual members, all of whom have been granted that membership based on their involvement with and contributions to Django (and there are provisions for non-DSF-member voters in the rare case where someone who's been involved with Django does not hold DSF membership). This expands Technical Board elections from having around 50 potential voters (with the old model of only committers voting) to currently nearly 200, and quite likely more as the DSF's membership grows.

To replace the job of committers, at least as it was originally envisioned, there will be two new roles: merger and releaser. Both roles will be filled by the current DSF Fellows, Carlton Gibson and Mariusz Felisiak; the technical board will appoint a few more people to those roles. The role names are fairly self-explanatory; mergers will merge pull requests that have achieved rough consensus, while releasers will be empowered to actually create Django releases and make them available in the Python Package Index (PyPI) and on the project's home page.

For the most part, the changes are, in fact, not really changes at all. They are simply recognizing how the development work has been done of late and formalizing it. But removing the perceived barrier of needing to be a member of the core team—thus opening up Django development to more people—is clearly the main driver for the change. The development process was working just fine, but the formal governance structure had not quite kept up; in effect, the core team idea simply outlived its usefulness:

Additionally, the growth of that "core team" has slowed almost to a standstill; new committers are added only very rarely, and there's neither a clear path to "core" status nor any way for someone to tell whether they are, or could be, a good candidate for it. Discussions on project mailing lists and in-person at conferences have also indicated that many potential contributors measure themselves against an unrealistically low estimate of their own capabilities, and an unrealistically high estimate of the importance of the existing "core" developers, which has the effect of discouraging perfectly well-qualified people from attempting to get more seriously involved in contributing to Django.

The reaction has been somewhat quiet, perhaps because the idea has been floating around without any real opposition for more than a year. It did require that four-fifths of the core team, the technical board, and the DSF board all approve the measure, so it is pretty clearly uncontroversial overall. Kaplan-Moss was certainly in favor of the change, noting that a more democratic process was needed when he and Holovaty stepped down, but there are other considerations now. "This time our main obstacle is inclusion; to grow further we need a broader talent pool. I believe this change will get us there (or at least take some good steps in that direction)."

The belief that it requires "superhuman" powers to become a core team member has reared its head in the Python project along the way as well. Committers or core developers have evolved over time into a much more bureaucratic role; in the early days of many projects, a "commit bit" meant that one could add code to a project with impunity, or nearly so. These days, for Django, Python, and lots of other projects, committer simply means "the one who has to actually make the merge happen" in a mechanical sense. The decision-making process for those projects is handled separately.

It is also true that both Django and Python are mature projects at this point; there is much less of a "wild west" feel to their development these days. That may also be contributing to less interest in their "core development" in general. But both projects (and plenty of others) need an ongoing maintenance crew, for features, bug fixes, security problems, and so on, so it makes sense to try to ensure that those with an interest realize that they can actually fill those roles. People with a long-term outlook that will keep the best interests of the project to the fore, not necessarily some massive amount of technical know-how, is what will keep the projects going over the next few decades—or far beyond.


Index entries for this article
PythonDjango


to post comments


Copyright © 2020, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds