|
|
Log in / Subscribe / Register

Old projects and the free-software community

By Nathan Willis
May 18, 2016

CLS

The Community Leadership Summit (CLS) is an annual event for community managers, developer evangelists, people who work on public-facing forums, and those with a general interest in engagement or community development for free-software projects. The 2016 edition was held in Austin, Texas the weekend before OSCON. Several sessions at CLS 2016 dealt with the differences exhibited between old and new free-software projects where community management is concerned. One of those tackled the problem of how to foster community around an older software project, which poses a distinct set of challenges.

Community revitalization

While there were a few plenary talks each morning at CLS, the majority of the day was reserved for "unconference" sessions: discussions on a topic proposed, on the spot, by a conference attendee. The "old projects" topic was raised in such an unconference session, moderated by Kate Stewart. Specifically, it dealt with how to re-energize a community around a software project that is no longer in the "new shiny thing" category.

Since the terms "old" and "new" are relative, establishing some context at the outset was important. It is often easy to attract code contributors, active volunteers, and enthusiastic members of the user community when a project is undergoing rapid development; doing the same thing for a stable code base or a core infrastructure project in "maintenance mode" is far more difficult. A few example projects were brought up at the beginning: FOSSology, which is well-established and has plenty of users but few developers; bzip2, which is a dependency of scores of other projects but is essentially in maintenance mode; and libexiv2, which is an under-the-hood library many end users may be taking for granted.

Each project's situation is a bit different, but they share common traits, such as a declining influx of new contributors and fewer volunteers actively staffing the communication channels. An Ubuntu developer noted, for example, that the excitement level of the Ubuntu community was quite a bit higher when the project was in "build a new distribution" mode; now that it is an established distribution, it is still popular, but the momentum has shifted to "building something on top of Ubuntu."

A few key facets of the community-engagement gap for older projects were identified in the discussion. First, established projects have a problem with the outside perception that there is little or nothing to do in the project—which is rarely actually the case. In the bzip2 case, for example, the project needs a number of infrastructure updates, including improvements to the build system.

Someone suggested that "creating a crisis" is often a viable approach to closing this awareness gap. Real crises, like the Heartbleed vulnerability for OpenSSL, have had that effect for some projects. But one can remind the free-software community as a whole how important an older project is by asking it to consider what would break if the project disappeared.

Another identified gap is that older projects may not have anyone working in the community-manager role, perhaps because that is a more recent idea. In the early days of the GNU project, one attendee pointed out, the other GNU developers were the user community. Because the broader free-and-open-source software movement has expanded so much since then, developers from those original projects may not feel a connection to the community even though they, as individuals, are not what has changed.

Another common factor is that end users often feel disconnected from stable or under-the-hood projects. In the FOSSology case, the project's users rarely mention its value in public, perhaps since it is generally an internal tool or used as an auxiliary to the user's main activities. It might reap dividends for the project to simply encourage its users to be more vocal about how FOSSology helps them, someone suggested. For library projects like libexiv2, the downstream projects depending on them can help connect library developers to the end users by making it clear how important the upstream project is, and perhaps by sharing community spaces and communications tools, such as forums.

Practical challenges

Communication tools and other community infrastructure can ossify if a project is not careful, which can have the unintended side effect of making it harder for new community members to get involved or, simply, to interact with the project's development team. In some cases, it may be that the project-hosting world has moved on: older projects may be relying on a SourceForge-hosted mailing list, for example, while many new users are familiar only with GitHub and the like. Updating the tools may be a painful, but beneficial, option.

A more difficult question is how to keep the project's communication channels up-to-date in light of the constantly shifting "tool of the month" culture. Several people mentioned the difficulty of maintaining Slack channels for open-source projects; Slack is proprietary, but the service is what new users—at least, at the moment—expect. There are mechanisms for linking a Slack channel to other (free-software) services, like IRC, but they seem to be difficult to use or in a poor state of repair. On the plus side, one attendee mentioned that it is quite easy to export Slack discussions as JSON and archive them online for wider access, a fact that seemed to come as news to many in the session.

Another issue is that the "maintainer" developers are usually not "creator" developers, who tend to drop away after a project becomes stable. Maintenance is frequently a side effort for someone who does other development; the divided focus and lack of creator's enthusiasm make it harder for a project to attract new developers. But there are publicity opportunities that are better suited to older projects than to newer projects. "Come to this project and have your work be used by 20 million people" was suggested; a core library could truthfully make such a claim while few newer projects could. But there are also recruitment obstacles more prevalent in older projects, such as technical debt, complexity, and reliance on older languages.

Yet, perhaps ironically, some of those technical issues can also make older projects a good target for education outreach. Several educators were in the session; they noted that when they talk to computer-science professors about getting students involved in open source, those professors are typically looking for older, stable code bases. Thus, they can have students work on small patches, and the experience can focus on the student's work, rather than wrestling with a shifting, chaotic project.

Those same attendees noted that professors also prefer establishing a long-term relationship with the project in question, which is beneficial to the project, too. The project gets a steady stream of contributions over multiple semesters, rather than a "drive-by contribution" from an individual summer intern who never returns. Few projects, they reported, have a point-of-contact person who can work with interested professors. Although getting college professors in touch with older projects would be mutually beneficial, the room seemed to agree, it ties in to the larger problem that open-source software has making inroads with the academic world.

That said, comparatively few long-established projects participate in efforts like Google Summer of Code or Outreachy. Making an effort to participate could be beneficial to those projects. Several attendees mentioned other outreach efforts that target bringing in new contributors, such as OpenHatch, CodeTriage, and Your First PR.

One attendee noted that perhaps some projects really do deserve to be moved to a "archival" type of project hosting. Older filesystems, for example, may no longer be used on newly set-up machines, but the code certainly needs to persist in the long term, since there will be users needing to access old disks and disk images long after the filesystem has been supplanted by a newer alternative. No one seems to address this project-hosting niche today; someone suggested that the Internet Archive, which performs a wide variety of archiving functions, might be worth approaching.

The session ended, as unconference sessions often do, only when time was up and the attendees ran off to the next round of discussions. But the mood of the room at the end was fairly positive. "Old" projects, it seems, may have to employ different strategies to attract vibrant communities, but it is certainly a challenge that the free-software community can meet. Some notes from the session are available online; those in attendance may continue to add to what is there, as may anyone else interested in the topic.

Index entries for this article
ConferenceCommunity Leadership Summit/2016


to post comments

Old projects and the free-software community

Posted May 19, 2016 6:29 UTC (Thu) by eru (subscriber, #2753) [Link] (2 responses)

A problem with simply archiving old stable projects is that while the code might perform its job perfectly, getting it to compile on a newer system becomes at some point a chore, because languages change (a problem especially with C++), or the compilers become more picky about minor errors, which one then has to fix somehow (changed declaration, added header, added cast etc). I find this kind of thing necessary in most cases where the code was last updated 5 years ago or so. Also autoconf causes more work than it saves, if it is of a similarly old version in the project. I think many programs do not really even need it any more, because environments and compilers are far more standardized than back when it was invented, and it really mattered if you were compiling for wildly different Linux, SunOS, AIX etc. versions.

So some kind of minimal maintenance is desirable even for old stable code, so that not all users would be forced to separately do modernization fixes. But it certainly is a thankless chore.

Old projects and the free-software community

Posted May 19, 2016 7:01 UTC (Thu) by epa (subscriber, #39769) [Link] (1 responses)

Isn't this a special case of the more general question about backwards compatibility, and binary compatibility? Old Win32 executables from as long ago as 1994 work on current Windows (and on 32-bit systems, even older 16-bit executables and DOS programs usually still work). If an old program goes into maintenance mode, then it should be possible to freeze a known binary image and also freeze the build environment (which in turn could be based on frozen binaries of old compilers, etc). But this is so far from current Linux practice that I doubt it will ever happen. Although there are current efforts to provide a stable binary environment with 'apps', most of the programs which count as 'old projects' are command-line tools or infrastructure rather than 'apps', and may not fit the packaging framework so well.

Then again a frozen binary image, even if packaged with some ancient build system, is definitely a second-best option. Much better to keep the old code building on current systems. As you say, this can become a chore, but that is one reason why Linux distributions exist, and a reason to prefer software which is packaged and maintained by your distribution. They will do the work of making sure it stays building, applying local patches if necessary if there is no upstream any more.

Old projects and the free-software community

Posted May 19, 2016 8:14 UTC (Thu) by eru (subscriber, #2753) [Link]

Freezing binaries is not a solution because of changes in CPU:s and system or library interfaces. I have already been in some situations where my users want a 64-bit binary of the various old 32-bit in-house tools I am supporting, because it is too much bother to install the 32-bit support. Updating those is sometimes "fun", it is just too easy for lazy programmers (and even some not so lazy) to rely on int:s and pointers being the same size. After all, it has been that way for decades on Unix-like systems. (This was of course not about open source, but masses of long-lived "internal source" have many of the same issues).

Old projects and the free-software community

Posted May 19, 2016 7:52 UTC (Thu) by mjthayer (guest, #39183) [Link] (3 responses)

Users of projects generally become aware that there is still something to do as soon as they run into a bug or problem. The usual solution of making it as easy as possible for people to get in and contribute, combined with a culture of encouraging people to try to fix bugs themselves might help a bit.

Old projects and the free-software community

Posted May 19, 2016 10:18 UTC (Thu) by khim (subscriber, #9252) [Link] (2 responses)

But do we really want to keep open-source world in it's ghetto where plumbing tools are all open-sourced yet "real apps" which 99% of users actually use are proprietary?

This is natural consequence of this approach. I mean: most applications out there are used by people who don't know how to fix bugs. Yet there are huge amount of developers who are looking for the problems which they could solve (for fun or otherwise) but they would never hit problems with these applications because, well, they don't use them.

If we want open-source to become a tool of choice (we do want that, right?) then we need to find a way to somehow attract people who don't scratch just their own itch…

Old projects and the free-software community

Posted May 21, 2016 21:21 UTC (Sat) by jospoortvliet (guest, #33164) [Link]

Most core contributors to projects already do far more than scratch their own itch - it is only occasional contributors which are mostly of that scratching variety. This isn't the issue. I think it is mostly a matter of resources and speed and efficiency - not enough ppl work on the apps or they don't collaborate. Open source projects with a company behind them often manage to get the resources (discourse, ownCloud) even though not always and that model has issues, too.

Old projects and the free-software community

Posted May 22, 2016 9:56 UTC (Sun) by mjthayer (guest, #39183) [Link]

This is a problem which is still to be solved (quite relevant to me as a VirtualBox developer, as you will understand if you browse our bug tracker!) Possible solutions I see: helping non-coding users to investigate bugs enough that the one percent of coders also affected have an easier time; encouraging non-coders to find good work-arounds (they often do this without encouragement); offering individual support contracts which offer voting rights without guarantees of bug fixes - it requires a bit of trust on the side of the users, which the developing team would need to build up.

Nothing to do - for a creative developer

Posted May 19, 2016 11:34 UTC (Thu) by NAR (subscriber, #1313) [Link] (6 responses)

"In the bzip2 case, for example, the project needs a number of infrastructure updates, including improvements to the build system."

I think improvements like this are just not attractive. It's not writing code, but wrestling with a project-specific system. It's not creating "new value for users", it's housekeeping, it's a chore, it's more like a system administrator job than a developer job.

Nothing to do - for a creative developer

Posted May 19, 2016 12:18 UTC (Thu) by hkario (subscriber, #94864) [Link] (4 responses)

and even if not that, then the other barrier is that it's written in C, not the "hot" and desired by "kids these days" Go, Node.js or Ruby

most people want to have fun or learn something, doing proper engineering is neither of those things

Nothing to do - for a creative developer

Posted May 20, 2016 8:09 UTC (Fri) by NAR (subscriber, #1313) [Link] (3 responses)

Updating a build system is not even proper engineering, it's janitorial work.

Nothing to do - for a creative developer

Posted May 20, 2016 16:14 UTC (Fri) by mathstuf (subscriber, #69389) [Link]

This viewpoint is probably why so many project's buildsystems are crappy.

Nothing to do - for a creative developer

Posted May 20, 2016 17:42 UTC (Fri) by johannbg (guest, #65743) [Link]

In the same sense as fixing bug is not proper engineering but janitorial work.

Lots of satisfying work to do - for creative janitors

Posted May 21, 2016 7:24 UTC (Sat) by sdalley (subscriber, #18550) [Link]

It never pays to despise "janitorial work".

"make veryclean" is the first target I write in my makefiles, and it often needs enhancements.

Places where nobody bothers to do the cleaning and tidying become increasingly hostile and energy-sapping places to work. This applies in physical environments, and it applies in software projects.

And, setting up a good build system which is easy to work with, easy on beginners, and easy to keep tidy is worthy engineering in its own right.

Nothing to do - for a creative developer

Posted May 20, 2016 7:56 UTC (Fri) by ngiger@mus.ch (subscriber, #4013) [Link]

Okay. But maybe not everybody is a creative developer. But when you go to the http://www.bzip.org/ you find one e-mail address to contact, but no hint that the project needs any help, where somebody could start.

As I live from working on free software and that I have experience in maintaining Jenkis-CI, a web site, etc, I might be even willing to invest a few hours into such a job.

Old projects and the free-software community

Posted May 21, 2016 8:33 UTC (Sat) by nix (subscriber, #2304) [Link]

> For library projects like libexiv2, the downstream projects depending on them can help connect library developers to the end users by making it clear how important the upstream project is

Nice idea, but hasn't RMS been doing just that with GNU for literally decades now, to no real effect? (It certainly hasn't led to a flood of new GNU developers, though that doesn't really seem to have been his goal in this area.)

If someone as visible as RMS can't make it work, even when embedding advertising in the name of the most popular system built atop his work, it seems most unlikely that anyone else can.

Old projects and the free-software community

Posted May 26, 2016 12:00 UTC (Thu) by nye (guest, #51576) [Link] (8 responses)

>Several people mentioned the difficulty of maintaining Slack channels for open-source projects; Slack is proprietary, but the service is what new users—at least, at the moment—expect

So after hearing Slack mentioned several times this year, this prompted me to finally go and find out what it actually is. I failed.

So far as I can make out, the answer appears to be "a proprietary version of IRC". That doesn't sound like something that would be wildly popular, so obviously I'm missing something, but their website really does seem to be simply describing a reasonably decent IRC client and nothing more.

Can anyone explain this to me? How is it actually better than IRC?

Old projects and the free-software community

Posted May 26, 2016 17:33 UTC (Thu) by pboddie (guest, #50784) [Link] (1 responses)

This recent article may explain it better than I can. From what I understand, it's like a cross between being RSS-spammed by previous "cool tools" (anyone remember Basecamp) and the new wave of CPU-burning, sluggish, pretend-mission-control Web tools like Trello. But I confess that I've never actually used it, nor am I likely to out of choice.

Old projects and the free-software community

Posted May 26, 2016 20:26 UTC (Thu) by Cyberax (✭ supporter ✭, #52523) [Link]

Yeah, it's a cross between a word processor and SPSS interface to mains electric line. And I can throw in more acronyms into the mix.

WTF?

Can people simply go and try the product before writing criticisms of it?

Old projects and the free-software community

Posted May 26, 2016 17:35 UTC (Thu) by Cyberax (✭ supporter ✭, #52523) [Link] (5 responses)

> So far as I can make out, the answer appears to be "a proprietary version of IRC".
With history. Searchable history. That can also host documents and pictures.

Old projects and the free-software community

Posted May 31, 2016 14:49 UTC (Tue) by nye (guest, #51576) [Link] (4 responses)

>> So far as I can make out, the answer appears to be "a proprietary version of IRC".
>With history. Searchable history. That can also host documents and pictures.

So, like IRC then? Granted file hosting isn't part of the IRC protocol per se, but in practice it seems to work okay with the mainstream clients.

I guess the implicit answer here is that the actual value is in them doing the setup and hosting, and in only allowing a single blessed client so you know everyone has the same feature set.

I don't want to seem too negative about this - I do value ease-of-use and simplicity fairly highly, especially for short-lived uses where the effort to set up a dedicated server is unlikely to be worth it; it's just that in this particular case the Slack people don't seem to offer any obvious upsides versus using, say, IRCCloud. There are obvious downsides though, which is why I'd expect their website to have a "why we're better" slant rather than simply describing their features as if they existed in a vacuum.

Indeed, trying to understand the purpose of this tool has left me even more confused about the article. It says "several people mentioned the difficulty of maintaining Slack channels for open-source projects", but it doesn't give any reason why those people are wanting to try. Reading around, it seems that Slack is designed for smaller closed chatrooms, not public open ones, and needs a hack to even allow open registration. That is, it's not even intended for this use case.

Given that the entire point of this article is about old projects trying to attract new contributors, and coupled with the perception of "constantly shifting "tool of the month" culture", I can't help but wonder if this might be a situation where the thought processes were along the lines of "I hear young people these days like using X. We should use X too, then they'll all be more interested" - without considering whether that was really a contributing factor in the barrier to entry, nor whether X is actually an appropriate tool for the desired use. It feels... kind of demeaning, like somebody awkwardly using some other culture's slang thinking it will make them fit in better.

Old projects and the free-software community

Posted Jun 1, 2016 1:34 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link] (3 responses)

No, it's not IRC. IRC is stateless and doesn't have a notion of chat history.

Slack preserves all the conversations and has search that actually works. And when you join a group you can simply scroll up and see the recent talk history.

Moreover, you can download the history to your client so it will be available offline. And of course, multiple clients will see the same history - you can write something from a phone and then move to your laptop or a tablet, completely seamlessly.

This is flat out impossible with IRC. There are history servers but they are not integrated with the core protocol.

Old projects and the free-software community

Posted Jun 1, 2016 11:09 UTC (Wed) by nye (guest, #51576) [Link] (2 responses)

>No, it's not IRC. IRC is stateless and doesn't have a notion of chat history
>blah blah blah
>This is flat out impossible with IRC

That must be why nothing is possible with HTTP, and the web is a product of my fevered imagination. Thanks for clearing that up - I'll go and find a good psychiatrist.

Old projects and the free-software community

Posted Jun 1, 2016 15:36 UTC (Wed) by raven667 (guest, #5198) [Link]

WAT?

IRC the protocol doesn't have stateful properties and neither does HTTP the protocol, in either case you can build custom systems around them to keep state (for IRC you have bots, and for HTTP maybe the most standard thing is Cookies but there are many ways to push state across requests) but that isn't a standard part of either protocol in the same way that Slack builds persistence in.

Old projects and the free-software community

Posted Jun 1, 2016 20:34 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link]

> That must be why nothing is possible with HTTP, and the web is a product of my fevered imagination.
I suggest aiming higher - try TCP/IP or maybe just IP. Then your statements will pretty much always be correct.

bzip2 build system

Posted May 26, 2016 13:34 UTC (Thu) by rleigh (guest, #14622) [Link] (3 responses)

I don't know if anyone wants to pick this up, but here is a full CMake build setup for bzip2 I wrote for my own use:

https://github.com/ome/ome-cmake-superbuild/blob/develop/...

Built and used daily on FreeBSD, Linux, MacOS X, and Windows/MSVC. I did submit it upstream a year or so back, but never got a response. Should build on pretty much anything.

bzip2 build system

Posted May 27, 2016 3:21 UTC (Fri) by mathstuf (subscriber, #69389) [Link] (2 responses)

We also have one at $DAYJOB. Ping me and I'll try and look at seeing if we can merge? At a glance it looks good (yay, CMP0053 ;) ), but there are probably some discrepancies.

As a side note, I am interested in super builds as well (just went through and consolidated features from a bunch of ours; working on migration now), so I'll probably take a look around there as well :) .

bzip2 build system

Posted May 27, 2016 15:40 UTC (Fri) by rleigh (guest, #14622) [Link] (1 responses)

Sure, happy to merge stuff. Ideally I'd like to hand it to upstream and drop my local patches, as I did for libtiff. While I originally kept this to using CMake 2.8 for greater portability and upstream merging, I might well think about a move to 3.2+ like the rest of the codebase if that's unlikely to happen. Is your version publicly available? Are you mathstuf on github, by the way?

Feel free to snarf any of the superbuild stuff; it's all permissively BSD licensed (as are all my current work projects). You might also want to look at "hunter"; I ended up going my own way since I didn't want to rely on network connectivity to build, and I also needed things building with options not used there, as well as caching downloaded sources. This one is fairly flexible in that you can arbitrarily extend it, and it will recursively resolve dependencies (optional, so you can use the distro-provided ones where available). It will likely get further simplified over time, but hopefully might be useful for inspiration.

bzip2 build system

Posted May 27, 2016 16:23 UTC (Fri) by mathstuf (subscriber, #69389) [Link]

Yeah, it's publicly available, but it is hacked up for direct inclusion into VTK, so there are probably some discrepancies, but if there's already proper CMake patches out there, I'd rather work with that and on getting it upstream than our current process. Our stuff is all at https://gitlab.kitware.com/groups/third-party but it seems I haven't done bzip2 yet? Those patches are in the superbuild then.

I had also looked at hunter, but had similar issues. Our superbuild stuff is here: https://gitlab.kitware.com/ben.boeckel/common-superbuild

And yes, mathstuf on github as well.


Copyright © 2016, 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