| Did you know...? LWN.net is a subscriber-supported publication; we rely on subscribers to keep the entire operation going. Please help out by buying a subscription and keeping LWN on the net. |
The free software community tends to focus its spotlight on developers and users while paying rather less attention to the maintainers that keep our projects going. Nadia Eghbal spent a year and a half studying how the community works, and has concluded that we have a problem with maintainership; her 2017 linux.conf.au keynote was dedicated to explaining the problem and how we might want to deal with it. But first, she talked about lobsters.
Eghbal's title, "Consider the maintainer", is derived from David Foster Wallace's 2004 essay "Consider the lobster". The author visited the Maine Lobster Festival, then wrote about the practice of throwing live lobsters into boiling water to cook them. "Is it all right to boil a sentient creature alive just for our gustatory pleasure?" Eghbal was quick to point out that she was not giving an animal-rights talk. Instead, she wanted to raise a pair of similar questions: is it OK if a project struggles or dies because its maintainer can't keep up anymore, and is it OK to compromise or ignore maintainer happiness so we can have free and open-source software?
Wallace said that the lobster question was not just complex, it was also uncomfortable. He dealt with it by just not thinking about it most of the time. Questions about how the open-source culture works can be equally uncomfortable, Eghbal said. The talk was not intended to create any sort of moral outrage, but to raise a set of questions to be explored and talked about. We should think about what goes into the production of free and open-source software, and what we're willing to tolerate to have free-as-in-freedom and free-as-in-no-cost software.
So what is the core of the problem? It comes down to the huge growth in the number of people consuming open-source software. In 1998, when the Netscape browser source was released, it was downloaded 180,000 times in the first two weeks, a huge number at the time. In 2017, a Lodash library release got 18 million downloads in the same time period. In 2001, there were 208,000 users on SourceForge; there are 14 million on GitHub now. But ⅔ of the top GitHub projects have just one or two maintainers. In other words, we have seen a huge growth in the number of users of open-source software, but not in the number of maintainers.
She had a couple of theories as to why that might be. One is that the
style of production has simply changed; now we have large numbers of tiny
projects that, necessarily, have few maintainers. The other is that being
a maintainer simply is not glamorous. Developing new code is fun,
maintaining an existing project is less so; maintenance can be a hard job
to keep up for years. Add to that the expectation that maintainers will
respond to every issue raised with their software; it is as if bloggers
were expected to respond to every comment on their work.
Consumption can scale, but only if there is no cost to the provider. This is essentially true for written material, but it is not the case for software. Many incoming users and developers are new to software development; maintainers have to teach them from the beginning. Sites like GitHub (where Eghbal works) have not helped maintainers in dealing with the influx of merge requests. Maintainers, she said, often have to face these issues alone, in isolation. There is a lack of support and mentorship in our community for maintainers. Meanwhile, unhappy users are more than willing to yell in public about their disgruntlement (she showed a few examples), adding to maintainer stress.
We are not teaching people how to be maintainers, she said; why aren't we talking about this? The maintainer role tends to be minimized or ignored, and maintainers are told that negative behavior from users is normal. So they don't know when they should push back. But we seem to be unable to even talk about the experience.
Richard Stallman stated that defending software freedom is more important than the popularity of the people working on it. The Debian Social Contract states that: "Our priorities are our users and free software" but does not address the needs of maintainers. The Open Source Initiative exists to advocate for the benefits of using open source; helping producers is not in its mission statement. Both free software and open source are focused on user needs; whether it is promoting the four freedoms or pragmatic benefits, neither philosophy talks about maintainers.
If we were to articulate the freedoms of software producers, what might they be? At a minimum, she said, they should include the ability to decide who participates in a project, to say "no" to contributions or requests, to define the priorities and policies of the project, and to step down or move on when the time comes. In general, users cannot expect more from maintainers than they are willing to give. These "four freedoms for maintainers" look back to the early principles of free software, where users were expected to work more actively to help themselves.
There are a number of other things we can do to make project maintenance more sustainable. One would be to put together a set of agreed-upon community best practices. These would address questions about how to attract contributors, how many contributors are enough, how to turn first-time contributors to a regular contributors, and so on. How quickly should a maintainer respond to issues? We have a bunch of community wisdom in this area that has not yet been written down, and a lot of that wisdom has needed to change as the environment has changed.
There is, she said, a deep need for better project analytics for maintainers, who need better metrics about the usage of their code. Maintainers should be able to measure user behavior as they wish; that would allow them to prioritize their own work and possibly raise funding. She noted that the idea is often controversial, but repeated that we should encourage maintainers to do it. One might have expected this idea to be especially controversial at linux.conf.au, which tends to have a strong focus on privacy, but the idea was met with significant applause in the room. Maintainers also need more and better tools for testing, triaging issues, monitoring, and more.
Maintainers should be encouraged to decide and communicate what the support status of their project is. There is a widespread assumption that maintainers are obligated to respond to every question or pull request that comes their way; we should experiment with that assumption. Maintainers should be able to say that a project is simply not accepting contributions, or to limit contributors to a small, known group of developers. Users, of course, will always retain the right to fork the project should they wish to maintain it in a different manner.
Maintainers need help in finding funding for the work they do. Not all maintainers want to be paid for that work, and others are paid by their employers, but those who would like support should have a way to seek it out. Current funding sources tend to be ad hoc and hard to get for the long run, and it's not clear how a maintainer should get funding.
Finally, more attention should be paid to the existential questions around maintainership. What does it mean to be a maintainer in the first place? What does it take to be a good one? Maintainers need to share their experience in this area as the number of small, single-maintainer projects continues to grow.
There has been some discussion of this problem in the past. Eric Raymond said that "with enough eyeballs, all bugs are shallow", but Steven Webster responded in 2004 that "how those eyeballs are organized" is equally important. She has read a lot of material written about open source in the late 1990s and early 2000s, and noted that the success of open-source software was equated with the success of the Linux kernel, but the two are not the same thing. The future looked rosy when we were looking at a small number of large projects supported by companies like Red Hat or organizations like the Apache Software Foundation. It was assumed that open-source software was so important that we would find a way to make it sustainable.
But then social media and GitHub happened and, along with them, came an uptick in adoption that nobody was prepared for. We all stopped talking about how projects take care of themselves; there has been nothing interesting written in this area since 2005. So we are working from an ideal that is based on how things were 20 years ago. People will point to Linux as an example of success while ignoring hundreds of thousands of projects launched since then that do not have the same level of support; the challenges these projects face are being swept under the rug. History did not end with the success of Linux; instead, it started a new chapter, and we have to confront the awkward fact that open source today isn't what it was 20 years ago.
"This stuff is confusing," she concluded, noting that the world is shifting in complex ways. But we shouldn't ignore these changes just because we may not understand them. We shouldn't try to regress back to how things used to be. Instead, we need to honestly acknowledge the place we have reached and look for the best way forward.
The talk clearly got the audience thinking, as shown by the numerous questions that were asked afterward. The first went straight to the point: what is GitHub's responsibility in all of this? Eghbal responded that this question had a lot to do with why she joined the company six months ago. She would like to help establish a clear relationship between GitHub and the maintainers, and to make it easier for maintainers to be heard.
Another questioner noted that a lot of the numbers in the talk were dominated by small hobby projects. How can we identify the important projects among them? Eghbal replied that it was clear by now that "stars are useless"; she said the dependencies are a better metric. That is part of why she would like to see a better emphasis on metrics in general.
Cat Allman noted that maintainers seem to have lost a lot of authority and prestige over the years. Maintainers are treated as obstacles to the next great thing, rather than as people with a global view of the project. Eghbal agreed, noting that ever more people are identifying themselves as developers, but they touch less of the software than before. The world is becoming more malleable, which is a good thing, but people are forgetting that there are humans maintaining it all. She is particularly struck by people who say that open source has no respect for its users; that ignores all that is happening to make that code available in the first place.
When asked about the tension that can arise when some developers (but not others) in a volunteer project receive funding, Eghbal acknowledged that the problem is a hard one. The key there, she said, is transparency.
Bradley Kuhn noted that many of the problems raised in the talk were present with proprietary software as well; has the proprietary world handled them any better? He sees free software as a necessary but not sufficient condition for addressing some of these issues. But GitHub's software is proprietary; has that solved these problems? Eghbal responded that things are different when people are paid to deal with entitled users; the stakes are different when you are doing that as a volunteer.
The last question noted that there was a Reddit thread collecting Patreon links for open-source maintainers seeking support and asked for Eghbal's thoughts on that approach. She replied that crowdfunding can work in some settings, usually when there is a specific deliverable to be created. A couple of big projects have managed to get funded that way. But this kind of funding requires a huge following; it can be hard for people who don't want to spend a lot of time marketing themselves. She hasn't seen a lot of example of people raising significant money this way. Crowdfunding is also better for one-time efforts than for ongoing maintenance. There are questions about what the money should be used for. In summary, she said, it won't work for all projects.
The video of this talk is available.
[Your editor would like to thank linux.conf.au and the Linux Foundation for assisting with his travel to the event.]
Consider the maintainer
Posted Jan 23, 2017 18:40 UTC (Mon) by dgm (subscriber, #49227) [Link]
It is, and at the same time, it isn't. It's true that the more successful your project, the more "normal" is to get exposed to negative behaviour by some users. But, at the same time, almost all of them are nice, or at least that's my experience. This is unavoidable, since you cannot change the world to make all the people nice all the time. So yes, if you want to deal with the public you need a (somewhat) thick skin, there's no way around that. Of course, nobody is required to accept being abused, and what you can do is make it clear upfront that such behaviour will not be tolerated.
But, please, let's no demonize users.
Best practices
Posted Jan 23, 2017 19:41 UTC (Mon) by david.a.wheeler (subscriber, #72896) [Link]
OP said:There are a number of other things we can do to make project maintenance more sustainable. One would be to put together a set of agreed-upon community best practices.
There's already a set of best practices for developing FLOSS, developed by the Linux Foundation's CII: https://bestpractices.coreinfrastructure.org/
It does write things down. It focuses more on how to increase the likelihood of producing good results (e.g., secure software). That said, it also talks about response expectations (particularly for vulnerability reports) and various practices that should ease the job of maintainers. It probably doesn't cover everything the speaker had in mind - but if you can think of something specific that is missing from the current criteria, please file an issue!
(Full disclosure: I'm technical lead for the best practices project. You can see the LWN.net article about the best practices badge project).
Best practices
Posted Jan 23, 2017 20:04 UTC (Mon) by blackwood (subscriber, #44174) [Link]
Consider the maintainer
Posted Jan 23, 2017 21:29 UTC (Mon) by flussence (subscriber, #85566) [Link]
Consider the maintainer
Posted Jan 26, 2017 9:51 UTC (Thu) by paulj (subscriber, #341) [Link]
BTW, there's another obstacle, which the article hints at: "Maintainers are treated as obstacles to the next great thing, rather than as people with a global view of the project." which is actually connected to the next issue is raises "the tension that can arise when some developers (but not others) in a volunteer project receive funding,".
What can happen, of course, is that corporates start funding people to act against the decisions of or norms established by the maintainers. To put pressure on the maintainer(s) to relent on whatever decision was not convenient to them, or else stir up enough trouble for them to poison the project and split off enough developers to support a fork.
This can also happen indirectly, where one subset of developers represent themselves as a public-good / charitable non-profit organisation, and use their position to collect donations from large corporates who are active in open-source/free-software philanthropy. They can then use this to fund their own time to pursue further other, private business interests; to manipulate others in the project (e.g. financially weak/desperate ones, like students) through contracts, etc.
The article mentions the need for transparency. I would strongly agree, and urge large corporates with open-source philanthropic activities to require that any non-profit it donates money to has the highest-standards of transparency and accountability to the community it is meant to serve.
In particular, it is crucial that such an NPO has oversight drawn _widely_ from the community (in terms of developers, maintainers, _end-users_ large and small; but also relatively geographically and culturally diverse spread from the community).
Consider the maintainer
Posted Feb 2, 2017 20:16 UTC (Thu) by fest3er (guest, #60379) [Link]
You also need a soft tongue. And you need to give newcomers time to learn how you think.
Coding, fixing bugs, and adding features are a *small* part of producing quality software.
Part of the problem of maintainership comes from the commercial world's mantra: "Grow! Expand! Grow! Expand!" Unfortunately, this tends to fail in the open source arena. Far too many maintainers focus on adding features ad infinitum; but they almost *never* go back and fix (or address) the small bugs. Not picking on any projects in particular, just recalling a few things I've encountered over the years. From time to time, I encountered a weird bug in make(); I'd been encountering it for nigh on 25 years; I haven't hit it in a while; maybe it's been fixed. GIMP does some strange things. OpenOffice focused on adding features for so long that newer releases became almost unusable. Why, when using *identical* fonts from *identical* font files, does OO render a paragraph at 100% vertical spacing on Windows, but only at 95% on Linux? Again, I haven't had reason to check lately; maybe it's been fixed. Little bugs often seem to linger for years. Are they less important than shiny new features?
During my journey to produce Smoothwall Express 3.1, I read most of the source code. For a while, almost every time I was looking to see how/why some feature worked, my eye would catch one or two small errors in unrelated code: off-by-one, mishandled signal, etc. Sometimes I'd fix them right then, sometimes I'd make a mental or paper note to fix it later. I had to hack about 10% of the source pkgs used in Express to make them build correctly for ARCH=i586 because they ignore or overwrite flags and args. (Yes, i586; many people use small, low power systems for their firewalls; some of those systems have Pentium compatibles that do not have the CMOV instructions, thus i586 is required.) A few pkgs insist on building for and installing on the host building it, even though the maintainer wants it directed toward a generic ARCH and a completely different kernel.
I'll only mention the dismal state of documentation. Making allowances for folks for whom English is not their native language, documentation is either non-existent or incomprehensible. Samba is one of the very few projects where they have diligently tried to provide good, clear documentation. I tried to produce a clear, easy-to-follow install guide for Express 3.1; haven't gotten much feedback about it. Linux Traffic Control docs are hard to understand, and they often conflict with each other; small wonder it's rarely used (even though LTC can work exceptionally well).
Testing needs to be more formalized than it is now; much better tools are needed to automate testing. Where do we publicize releases, and how do we write press releases in the first place? And who teaches succeeding generations of developers, maintainers, project leaders, et alia? Clearly we (the first generation) were nearly self taught. Shouldn't we be teaching the next generation? And shouldn't they teach the generation that follows?
Where is the open source software and project education infrastructure? How and from whence will people learn what is truly needed to produce open source projects? How are 'newbs' supposed to learn how to contribute well with so few open standards and examples available?
So, oft-times, the maintainer is developer, fixer, toolsmith, publicist, tester, project manager, and help desk. That's fine for a small project. But if the project grows, it will probaby become too much for one person to handle. And if no one steps up to share the load, that one person will burn out and the project will founder and sink.
In a good project, the maintainer should be like a symphony conductor, ensuring that the various players work together smoothly enough to design, code, test, document, release and maintain the software. And she has to be strong enough to do jobs herself when necessary.
Consider the maintainer
Posted Feb 3, 2017 4:17 UTC (Fri) by pabs (subscriber, #43278) [Link]
Consider the maintainer
Posted Jan 23, 2017 21:36 UTC (Mon) by neilbrown (subscriber, #359) [Link]
Consider the maintainer
Posted Jan 24, 2017 8:28 UTC (Tue) by jaromil (subscriber, #97970) [Link]
Is anybody thinking of *upstream*? this position seems to assume that all upstream work is already paid.
In general it is the people *upstream* the most hit by maintainers failures and users complaints over old packaged versions already fixed, etc. etc.
Consider the maintainer
Posted Jan 24, 2017 9:29 UTC (Tue) by boudewijn (subscriber, #14185) [Link]
Consider the maintainer
Posted Jan 24, 2017 10:25 UTC (Tue) by jaromil (subscriber, #97970) [Link]
Consider the maintainer
Posted Jan 24, 2017 11:00 UTC (Tue) by boudewijn (subscriber, #14185) [Link]
Consider the maintainer
Posted Jan 24, 2017 12:21 UTC (Tue) by mathstuf (subscriber, #69389) [Link]
As a category, sure, but there is still a difference between "maintainer" and "contributor" which is being discussed here. The biggest difference between the two being the responsibilities each has towards the project.
Consider the maintainer
Posted Jan 24, 2017 12:47 UTC (Tue) by NAR (subscriber, #1313) [Link]
Consider the maintainer
Posted Jan 24, 2017 19:29 UTC (Tue) by neilbrown (subscriber, #359) [Link]
Consider the maintainer
Posted Jan 25, 2017 10:27 UTC (Wed) by jaromil (subscriber, #97970) [Link]
All considered I keep thinking the use of the term "maintainer" in this speech and eventually other research materials should be reconsidered. Using it boldly in the title also doesn't go in the direction of disambiguation at all.
Consider the maintainer
Posted Jan 25, 2017 11:02 UTC (Wed) by boudewijn (subscriber, #14185) [Link]
For the rest, I recognized a lot in the article, though I kind of felt it sort of downplayed the amount and variety of stress someone in this role encounters :-)
Consider the steward
Posted Jan 25, 2017 22:13 UTC (Wed) by neilbrown (subscriber, #359) [Link]
Maybe we should try to use "project maintainer" to differentiate from "package maintainer" (just as my employer has "product managers" and "project managers" who manage very different things), but I think it is too late to succeed in introducing a new word.
Consider the shepherd
Posted Feb 4, 2017 17:35 UTC (Sat) by fest3er (guest, #60379) [Link]
As I outlined in my previous post, a project maintainer has to manage many, if not all, aspects of the project: planning, execution, documenting, publicity, help desk, and employees. (Yes, even unpaid volunteers often really are employees.) But a lot of the maintainers out there haven't had broad enough career, life and education experience to be able to handle all those roles. In many projects, those roles are left unfilled and unaddressed. And projects often languish as a result.
The open source software movement is a good example of such a languishing project. Think about it. How many people not 'in the know' know much about open source software, free or otherwise? How many projects under that umbrella have any form of development and maintenance plans in place? How many of them adequately publicize their plans and the results of their efforts to turn those plans into tangible or intangible reality? How many of them clearly and concisely document their works? How many effectively get many--or most--of their volunteer software/documentation/publicity/change-control contributors to work together toward the goal? How many know how to teach 'newb' contributors how to do a good job?
There's a lot more to developing software projects than hacking some code and shoving it into a public git repo somewhere. The long-time leaders of the open source software movement need to acknowledge that open source involves far more than hacking code. Skill with people, prose, planning, and even virtual horn-tooting are also needed for opens source to succeed. Open source leaders need to do more to teach and entice (to use trades-related terms) journeymen and masters of other required fields to contribute to open source projects. All levels of the open source software movement must be run like a business, albeit a cashless, money-less business that makes many products of lesser or greated value. All these projects need to be managed well. And, too often, they aren't.
Consider the maintainer
Posted Jan 27, 2017 13:32 UTC (Fri) by Shugyousha (subscriber, #93672) [Link]
I don't think the maintainer issue has been solved in the proprietary world either (at least not in more research focused parts of it).
Consider the maintainer
Posted Jan 27, 2017 14:52 UTC (Fri) by NAR (subscriber, #1313) [Link]
Consider the maintainer
Posted Jan 24, 2017 18:49 UTC (Tue) by k3ninho (subscriber, #50375) [Link]
Without endorsing maintainership as a caring role and caring roles in general across society, there will be a lot of dangerous abandoned code and a lack of knowledge in making systems do right. Without endorsing a lifecycle that proactively avoids burnout by deprecation and which cherishes the parent-like action of adopting a codebase from its prior maintainers, there will be systems which harm us by limping along instead of gaining an influx of life from new contributors. Without allowing people to let the dying projects pass away from us, there will be people carrying millstone-like tasks which are their own dead end. You have to care for the people involved to allow their contributions to follow a lifecycle of work, from conception to retirement.
K3n.
Consider the maintainer
Posted Jan 25, 2017 13:50 UTC (Wed) by dgm (subscriber, #49227) [Link]
Note that similar speeches could be made about how initial developers (or testers, packagers, documentation writers, translators, UX designers, architects and pass-by-contributors, et cetera) are important, and how their needs also have to be taken into accout.
I'm sorry, but I fail to see the social problem here. Maybe it's that I'm too limited, but I only see different people with different interests, and that value things differently.
Consider the maintainer
Posted Jan 26, 2017 13:09 UTC (Thu) by k3ninho (subscriber, #50375) [Link]
>I'm sorry, but I fail to see the social problem here.
WONTFIX CANTREPRO b/c it works for you, right? :-P
K3n.
Consider the maintainer
Posted Jan 26, 2017 12:19 UTC (Thu) by NAR (subscriber, #1313) [Link]
Let me offer a different perspective. It seems to me that this kind of maintainer (I like the steward word better) is the one who decides what goes into the project and what not. He decides when the software is released and with what features. He's got the power. It is valued in the western society - on the proprietary side project managers are better paid than simple developers. Maybe developers might not think much about them, but the project managers get the parking lots, the company cars, the bigger phones, etc.
Consider the maintainer
Posted Feb 5, 2017 20:11 UTC (Sun) by Wol (guest, #4433) [Link]
To me, the maintainer is the dogsbody who cleans up the codebase, deals with bitrot, makes sure the program will compile and run when a new version of the underlying libraries or OS comes along ...
The caring, looking after, UNDER-VALUED job that most people don't want to do.
Your steward is the project manager, paid to look after the customers, not the maintainer paid to look after the code.
It's tricky, but unfortunately in English we have a tendency to abuse words and alter their meanings, and we've had a couple of stories recently where I think there's been a fair bit of misunderstanding because the same words mean different things to different people.
Cheers,
Wol
Consider the maintainer
Posted Feb 6, 2017 12:53 UTC (Mon) by spaetz (guest, #32870) [Link]
That is not limited to English ;-)
Consider the maintainer
Posted Jan 26, 2017 21:18 UTC (Thu) by Richard_J_Neill (subscriber, #23093) [Link]
Consider the maintainer
Posted Jan 27, 2017 3:06 UTC (Fri) by pabs (subscriber, #43278) [Link]
https://packages.debian.org/mediawiki
I don't think contacting the DPL is the appropriate way to get stuff packaged. Your options are approximately:
File an RFP bug and hope someone sees it and is interested enough to package the software.
https://www.debian.org/devel/wnpp/#l1
Hire someone to package the software and maintain the packages on an ongoing basis.
https://lists.debian.org/debian-jobs/
Get one of the consultants to do the same.
https://www.debian.org/consultants/
https://lists.debian.org/debian-consultants/
Figure out some sort of crowdfunding scenario. This was done recently for nodejs modules.
Consider the maintainer
Posted Jan 28, 2017 1:42 UTC (Sat) by pabs (subscriber, #43278) [Link]
Copyright © 2017, 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