< March 2019 >
MonTueWedThuFriSatSun
25262728010203
04050607080910
11121314151617
18192021222324
25262728293031

Friday, 01 March 2019

11:00 PM

Sustaining open source: thinking about communities of effort [Living in an Ivory Basement] 11:00 PM, Friday, 01 March 2019 02:00 PM, Thursday, 06 August 2020

I just finished a day at the SIAM CSE 2019 conference, where I gave a talk as part of a mini-symposium on software sustainability (my abstract, and my talk slides; see the 'cpr' tag for all my recent blog posts on this topic.)

When I was outlining the talk, I spent a fair amount of time noodling about how I wanted to approach the subject. I have a lot of disorganized thoughts that I think can be put together in interesting ways, but for a 20 minute talk, I really needed to pick a narrow focus.

Here's what I ended up with. I'm curious for reactions!

Defining a term, "communities of effort"

I'll start by defining "communities of effort" as a community formed in pursuit of a common goal. The goal can be definite or indefinite in time, and may not be clearly defined, but it's something that (generally speaking) the community is aligned on.

The term "effort" here refers to focused or engaged attention, and in this sense in particular, I mean the focused attention applied towards the common goal.

One rational goal of such a community is to achieve the goal without wasting effort through duplication or redundancy in work. This connects with my earlier blog post on the open source anti-Sisyphean League, a term coined by Cory Doctorow: the idea is that there are a number of rocks to be rolled up hills, and (in an open community) there is no reason for people to roll those rocks up the hill independently, since they can take advantage of each other's efforts.

This community of effort directs itself towards achieving the goal, applying the available effort to the task. Here, effort is a finite resource that is consumable - you cannot apply the same effort to more than one task, and the effort that is applied towards one task is not available to be applied to another task. (Of course, the available effort can be renewed or increased - more on that later.)

Effort as a common pool resource

The trickiest and most uncertain link is this: I think that the effort applied towards the common goal is, to some extent, directed by the community. That is, the available effort - which consists of work by individuals towards the collective goal - is at the very least loosely coordinated with the community, if not coordinated more closely.

(This may be because the community needs to be involved in order to decrease redundancy. Not sure.)

If this is true - that effort is coordinated by the community rather than the individual, and so is non-excludable, and also is a finite resource that can be consumed, and is thus rivalrous, this turns it into a common pool resource.

Common pool resources are well known to anyone who has heard of the tragedy of the commons: they are resources that are subject to this tragedy, of being consumable by many in an unregulated way.

What are some examples of these "communities of effort"?

A prime example is open source projects like Python. They're rooted in a community approach; they're not not run by a corporation or a government agency; and any structure (like a nonprofit) is created after they already exist (and usually after they are successful!)

I think the Carpentries training community is another good example. This is a community of people interested in teaching and training in data science and software engineering that essentially self-assembled, and is aligned around their mission (of teaching and training). The non-profit structure around it is, again, an ex post facto creation.

Data analysis commons, in which methods, data, compute resources, and data analysis interfaces are coordinated to address the data analysis needs of a community, would be another example.

(Wikipedia might be another, but I'm less familiar with how it works.)

Why do we care about these communities?

Well, these communities are amazingly effective, in at least some cases. For example, Python and R between them are essentially the modern data science languages - both are open source, both are community coordinated.

More generally, it is probably not an exaggeration to say that the products of open source communities of effort underly the vast majority of Silicon Valley software, as well as most research software.

Sustaining, growing, and supporting these communities is pretty important!

How do these communities get started, and why are they effective?

One feature of successful communities of effort - those that seem to succeed in growing their pool of available effort - is that they are often very organic in their approach to tackling their mission. This is probably an effect of the community-based approach, in that the members of these communities are to a reasonably significant extent self-motivated and self-directed to solve their problems, and so the solutions are often bottom-up created with only a light level of coordination on top. (I'll revisit this in terms of governance in a bit.)

The other kind of fun thing is that these days it's pretty easy to bootstrap a community of effort: with some enthusiasm and a site like GitHub, you can spin up a new community project quite quickly.

Last but not least, many (most? all?) communities of effort have at least one person who has placed their effort at the service of the community mission. These are the leaders and/or maintainers of the project.

So what's the problem? It's all good, right?

Well... there are a few things I don't really understand.

For one, the formation of large groups of people who sustain a collective to pursue a common goal violates basic tenets of collective action - at least, as I understand them. The idea here is that, if there is a large group of people pursuing a common goal, then the smart (economically rational) thing for someone to do is ...not do any work at all, because the individual will reap the benefits of the group work. So, what's different with these communities of effort?

Sustainability and in particular maintenance is a big question, too; these communities often rely on one or a few core maintainers to make things happen, and it is really unclear why these maintainers (who are often unpaid or underpaid) would take on these tasks. Yes, they get kudos and reputation, but kudos and reputation do not put food on the table... why do they do it?

(One thought - perhaps the creation of a successful community of effort really depends on there being at least one person who ignores short-term economic rationality? So then you just don't see all the failed attempts where someone decides not to be irrational and hence not bother? Another thought is that perhaps the key aspect of many of these communities being open means that the maintainer-type folk realize that no one else is tackling the common goal, and since they need the goal met as well, they might as well do it?)

Does framing the problem as a common pool resource problem yield any solutions?

I think it does.

First, once you recognize effort as the limiting resource, the question of how to maintain and increase that resource comes to the forefront. There are a number of possible mechanisms, including investing in making the community easy or rewarding to join, welcoming new contributors, and/or providing special methods or data or access to community members. In this view, these activities become more central than they are if you are thinking only about the overall goal or mission of the community.

Second, Elinor Ostrom outlined some design principles for sustainability of common pool resources based on empirical studies, in Governing the Commons. One of these principles is about making collective choice arrangements that allow most of the appropriators (members of the community) to participate in the decision making process.

Basically, this boils down to rewarding people who invest effort with some level of influence in how that effort is applied towards the community goals. This both incentivizes participation with collective ownership, and also seems to allow a form of organic communication where the people applying effort feed results from their work back into the overall community direction. This is, to my mind, one of the things that leads these communities to be so effective.

This mode of governance by members of the community for the community goal leads to another interesting thought. Funders participate in these communities in indirect ways, by seeking to fund (or being sought out to fund) effort within the community. Rarely is the direction of this support directly dictated by the funder; it's usually laundered through the community member(s) being supported. This is both good and bad - it limits the degree to which funders (and companies) can directly influence the project, but also means that funders may not be able to easily identify the uses to which their money will be put.

Who is part of the community of effort?

Anyone who contributes their effort is part of the community, and hence should get some form of influence over governance (by the above design principle).

Extractive contributors - contributors who do not contribute to the overall effort, especially the maintenance effort - would not, however, be considered part of the community. See How open is too open? for this argument.

People who are using the product of the community but not costing the community any effort (e.g. consumers of the source code) would also not be part of the community, unless they contribute in some way to the project.

One interesting result of this kind of thinking is that, for data analysis commons, people who provide data or methods, or training people, or contributing documentations, are contributing effort. This provides a level of rational inclusion of this kind of work within the community, and also in governance; they are in a direct sense contributing to the sustainability of the community of effort.

Is academia a good home for these communities of effort?

I note that the leadership and governance model in basic research, at least, is often not inclusive of the people who are doing the work, and instead centers on reputation and hierarchy. I don't think universities and colleagues focused on basic research are likely to be a good part of the support network for communities of effort, in general.

I have been quite impressed with what I've seen of extension efforts at universities, which are faculty-level investments of time and energy in communities. I'm planning to look more in to the idea of a digital extension model.

Some final thoughts

I think it's important to recognize that (these days at least) there are lots of competing projects in which people can invest their time and effort, and it's probably not a bad thing to frame it as a competition between these communities for people's time and attention. Communities that do a good job of attracting contributors and incentivizing the inclusion of effort can win out and potentially be more sustainable than communities that do a lousy job. (This has potentially dire implications for some scientific research communities, which are not always very welcoming or inclusive. I'm not sad about this.)

This framing also puts soft skills front and center in the equation, and I think this is also a good outcome.

Open / unaddressed questions

Two open questions.

First, what are communities of effort not good at? I would venture that any boring or maintenance level jobs would tend to be addressed poorly by these communities, due to how human enthusiasm works.

Second, I want to return to the missing link mentioned above - that these communities seemingly depend on one or more people placing their effort in service of the community. What are the reasons why people do this, and how do we support and maintain it? Inquiring minds want to know... It would be nice if we had a reasonably comprehensive picture of why this occurred, because it doesn't seem like rational behavior on the face of it. (I'm very thankful that people do this, of course, which is why I want to better support this path!)

Acknowledgements

I gratefully acknowledge Adam Resnick, Matter Trunnel, Josh Greenberg, Nadia Eghbal, Luiz Irber, and Tracy Teal, with whom I've had inspiring conversations on these fronts.

The NIH (via the Data Commons funding) and the Moore Foundation provided funding to me to think about, read about, and explore these issues.

Comments welcome!

--titus

Feeds

FeedRSSLast fetchedNext fetched after
XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Bits of DNA XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
blogs.perl.org XML 12:00 AM, Tuesday, 18 January 2022 12:15 AM, Tuesday, 18 January 2022
Blue Collar Bioinformatics XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Boing Boing XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Epistasis Blog XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Futility Closet XML 12:00 AM, Tuesday, 18 January 2022 12:15 AM, Tuesday, 18 January 2022
gCaptain XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Hackaday XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
In between lines of code XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
InciWeb Incidents for California XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
LeafSpring XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Living in an Ivory Basement XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
LWN.net XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Mastering Emacs XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Planet Debian XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Planet Emacsen XML 12:00 AM, Tuesday, 18 January 2022 12:15 AM, Tuesday, 18 January 2022
RNA-Seq Blog XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
RStudio Blog - Latest Comments XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
RWeekly.org - Blogs to Learn R from the Community XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
The Adventure Blog XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
The Allium XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
Variance Explained XML 12:00 AM, Tuesday, 18 January 2022 12:30 AM, Tuesday, 18 January 2022
January 2022
MonTueWedThuFriSatSun
27282930310102
03040506070809
10111213141516
17181920212223
24252627282930
31010203040506
December 2021
MonTueWedThuFriSatSun
29300102030405
06070809101112
13141516171819
20212223242526
27282930310102
November 2021
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29300102030405
October 2021
MonTueWedThuFriSatSun
27282930010203
04050607080910
11121314151617
18192021222324
25262728293031
September 2021
MonTueWedThuFriSatSun
30310102030405
06070809101112
13141516171819
20212223242526
27282930010203
August 2021
MonTueWedThuFriSatSun
26272829303101
02030405060708
09101112131415
16171819202122
23242526272829
30310102030405
July 2021
MonTueWedThuFriSatSun
28293001020304
05060708091011
12131415161718
19202122232425
26272829303101
June 2021
MonTueWedThuFriSatSun
31010203040506
07080910111213
14151617181920
21222324252627
28293001020304
May 2021
MonTueWedThuFriSatSun
26272829300102
03040506070809
10111213141516
17181920212223
24252627282930
31010203040506
April 2021
MonTueWedThuFriSatSun
29303101020304
05060708091011
12131415161718
19202122232425
26272829300102
March 2021
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29303101020304
February 2021
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
November 2020
MonTueWedThuFriSatSun
26272829303101
02030405060708
09101112131415
16171819202122
23242526272829
30010203040506
September 2020
MonTueWedThuFriSatSun
31010203040506
07080910111213
14151617181920
21222324252627
28293001020304
July 2020
MonTueWedThuFriSatSun
29300102030405
06070809101112
13141516171819
20212223242526
27282930310102
June 2020
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29300102030405
May 2020
MonTueWedThuFriSatSun
27282930010203
04050607080910
11121314151617
18192021222324
25262728293031
April 2020
MonTueWedThuFriSatSun
30310102030405
06070809101112
13141516171819
20212223242526
27282930010203
February 2020
MonTueWedThuFriSatSun
27282930310102
03040506070809
10111213141516
17181920212223
24252627282901
January 2020
MonTueWedThuFriSatSun
30310102030405
06070809101112
13141516171819
20212223242526
27282930310102
December 2019
MonTueWedThuFriSatSun
25262728293001
02030405060708
09101112131415
16171819202122
23242526272829
30310102030405
November 2019
MonTueWedThuFriSatSun
28293031010203
04050607080910
11121314151617
18192021222324
25262728293001
October 2019
MonTueWedThuFriSatSun
30010203040506
07080910111213
14151617181920
21222324252627
28293031010203
August 2019
MonTueWedThuFriSatSun
29303101020304
05060708091011
12131415161718
19202122232425
26272829303101
July 2019
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29303101020304
June 2019
MonTueWedThuFriSatSun
27282930310102
03040506070809
10111213141516
17181920212223
24252627282930
May 2019
MonTueWedThuFriSatSun
29300102030405
06070809101112
13141516171819
20212223242526
27282930310102
April 2019
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29300102030405
March 2019
MonTueWedThuFriSatSun
25262728010203
04050607080910
11121314151617
18192021222324
25262728293031
February 2019
MonTueWedThuFriSatSun
28293031010203
04050607080910
11121314151617
18192021222324
25262728010203
January 2019
MonTueWedThuFriSatSun
31010203040506
07080910111213
14151617181920
21222324252627
28293031010203
December 2018
MonTueWedThuFriSatSun
26272829300102
03040506070809
10111213141516
17181920212223
24252627282930
31010203040506
November 2018
MonTueWedThuFriSatSun
29303101020304
05060708091011
12131415161718
19202122232425
26272829300102
October 2018
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29303101020304
September 2018
MonTueWedThuFriSatSun
27282930310102
03040506070809
10111213141516
17181920212223
24252627282930
August 2018
MonTueWedThuFriSatSun
30310102030405
06070809101112
13141516171819
20212223242526
27282930310102
July 2018
MonTueWedThuFriSatSun
25262728293001
02030405060708
09101112131415
16171819202122
23242526272829
30310102030405
June 2018
MonTueWedThuFriSatSun
28293031010203
04050607080910
11121314151617
18192021222324
25262728293001
May 2018
MonTueWedThuFriSatSun
30010203040506
07080910111213
14151617181920
21222324252627
28293031010203
April 2018
MonTueWedThuFriSatSun
26272829303101
02030405060708
09101112131415
16171819202122
23242526272829
30010203040506
February 2018
MonTueWedThuFriSatSun
29303101020304
05060708091011
12131415161718
19202122232425
26272801020304
January 2018
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29303101020304
December 2017
MonTueWedThuFriSatSun
27282930010203
04050607080910
11121314151617
18192021222324
25262728293031
November 2017
MonTueWedThuFriSatSun
30310102030405
06070809101112
13141516171819
20212223242526
27282930010203
September 2017
MonTueWedThuFriSatSun
28293031010203
04050607080910
11121314151617
18192021222324
25262728293001
August 2017
MonTueWedThuFriSatSun
31010203040506
07080910111213
14151617181920
21222324252627
28293031010203
March 2017
MonTueWedThuFriSatSun
27280102030405
06070809101112
13141516171819
20212223242526
27282930310102
January 2017
MonTueWedThuFriSatSun
26272829303101
02030405060708
09101112131415
16171819202122
23242526272829
30310102030405
November 2016
MonTueWedThuFriSatSun
31010203040506
07080910111213
14151617181920
21222324252627
28293001020304
October 2016
MonTueWedThuFriSatSun
26272829300102
03040506070809
10111213141516
17181920212223
24252627282930
31010203040506
September 2016
MonTueWedThuFriSatSun
29303101020304
05060708091011
12131415161718
19202122232425
26272829300102
August 2016
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29303101020304
July 2016
MonTueWedThuFriSatSun
27282930010203
04050607080910
11121314151617
18192021222324
25262728293031
May 2016
MonTueWedThuFriSatSun
25262728293001
02030405060708
09101112131415
16171819202122
23242526272829
30310102030405
April 2016
MonTueWedThuFriSatSun
28293031010203
04050607080910
11121314151617
18192021222324
25262728293001
December 2014
MonTueWedThuFriSatSun
01020304050607
08091011121314
15161718192021
22232425262728
29303101020304
October 2014
MonTueWedThuFriSatSun
29300102030405
06070809101112
13141516171819
20212223242526
27282930310102