SCALE: Developing a project community
The day before SCALE 11x in Los Angeles was devoted to a series of mini-summits; some centered around a single software project (such as Puppet or Ubuntu), but others were topical—such as the FOSS Mentoring summit. That summit was devoted to the mechanics of working with the human aspects of a free software project, from developers to end users. For example, Nathan Betzen of XBMC discussed the communication tools, from forum packages to external social networking services, and how the project makes use of each. Karsten Wade spoke about infrastructure volunteers (e.g. as system administrators), and how to recruit, train, and foster increased participation. Robyn Bergeron spoke about organizing and managing predictable release cycles in a project that relies on unpaid—and often hard-to-predict—volunteer contributors.
Communication tools
Betzen has been working with XBMC since 2008, and currently serves as community manager. His talk dealt with end-user-facing tools—blogs, forums, and so forth—as distinguished from development-centric tools like source code management or build systems. In large part, he said, this is of interest because XBMC is a user-facing application with a large community of users who are not engaged in software development.
He started off with general advice on "how not to suck" at user community interaction. This advice included sincerity in messaging (communicating why you honestly feel your project is great, rather than crafting an artificial message), restricting your posts to appropriate and relevant information (regardless of how awesome your cat photos may be), and seeking relevant input from the users. On that point, he said that starting an open source project is a public statement that you expect other people will want to work on the product. The earlier you accept that—including the fact that these others will bring different opinions and plans—the better your communication will be.
He then summarized the most common avenues for user communication, and what XBMC has learned about their suitability for different purposes. Web-based discussion forums are the "heart" of your community, he said: where everyone is going to go to talk to and ask questions of the development team, and where they will look for help. He gave no advice on the specific software package used, but said the important thing is that users can register and write their words on your footprint on the Internet. He gave some "best practices" advice, such as trying to shut down as few threads as possible (other than lawbreaking topics and bots). Even if your community becomes known for its off-topic discussions, people are still coming to the site and learning about your software. He also advised making forum rules early (and making them highly-visible), and making as much intra-team communication open as possible, even if that only means posting read-only threads summarizing team meetings.
Blogs are distinctly different from forums as a community tool, Betzen said. If comment threads on individual posts are the only place where discussions occur, the project suffers. First, individual posts come and go (including going off the bottom of the first page rather fast), and blogs allow only site administrators to start a topic of discussion. That prevents community members from speaking what's on their mind, plus it creates a bottleneck. "You want as many people as possible to do the work of making conversations."
He then discussed the relative pros and cons of the current social networking services, starting with "the great beast," Facebook. Facebook is a "not terrible" way to gauge the reach of your project, he said, and is considerably better than log-based web analytics. The reason is that every Facebook account is bound to a real person. Thus, in addition to calculating your own project's reach, you can compare it to the reach of your competitor projects. It is also a useful outreach tool, since it is one of the default places people unfamiliar with your project start a lot of their searches. It works well as a "personality outreach" tool, where you can ask end users to submit ideas and content of their own. For example, he said that XBMC regularly asks users to post photos of their own XBMC systems, and frequently gets submissions for themes, mascots, and other mock-up designs that eventually become reality.
In contrast to Facebook, Betzen said, Twitter is a terrible way to measure reach, since it is dominated by fake accounts and bots. "Half the people on Twitter aren't real people," he said. "You can become a 'Twitter master' with thousands of followers, most of whom don't know who you are and aren't even real." Still, he said, it functions well as a front-line support service, and is useful to visibly communicate with non-users and participate in the larger world.
Reddit can be a good tool, he continued, but it really works best for already-engaged projects. He advised against creating your own "subReddit," since that can be seen as self-aggrandizing, but added that the site can be useful as a persistent news outlet and to promote "causes" and campaigns. For example, he cited the case of a third-party port of XBMC to the original Xbox hardware: when PayPal unilaterally shut off the group's donation account without explanation, a Reddit furor arose that was credited for PayPal's decision to mysteriously reinstate the account (again without explanation).
Finally, he discussed Google+ and YouTube. Google+ is popular among developers but not with users, yet it has a killer feature with the "Hangout" video chat system. This allows people to talk directly to a project team, which is a great way to engage, and it can be used to broadcast live meetings. Similarly, YouTube videos offer some "magic", because there are frequently features or procedures that are clear in a screencast, but terrible to try to read on a "list of steps that was written on a wiki several years ago and hasn't been updated."
Infrastructure
Wade's session also dealt with the practicalities of managing a project, in particular how to organize and maintain infrastructure: the systems administration and support tasks that keep a project functioning smoothly (as opposed to the development of the actual code). He highlighted the importance of treating infrastructure as an avenue of open participation, just like hacking.
![[Wade speaking]](https://static.lwn.net/images/2013/02-scale-wade-sm.jpg)
Wade's advice had two sides. First, using open tools protects the project (in that owning your data and other "stuff" is critical), and it allows other open projects to see how you do things and learn from them. Second, making infrastructure participation part of the project gives interested administrators a way to pitch in and support the project even if they are not prepared to be developers and (as with coding) it offers a good way for those interested in systems administration to learn and equip themselves with skills that will be valuable later.
He drew examples from his experiences on the Fedora distribution and on the oVirt project. The first piece of advice was to divide project infrastructure into three categories: core-essential, core-nonessential, and non-core. Core-essential pieces are those that are required to actually develop the software, such as source code management, build systems, and testing tools. Core-nonessential pieces are those necessary to keep project participation functioning, but are not related to the project code itself, such as configuration-management tools or mailing list software. Non-core pieces are those concerned with data and metadata, and are generally orthogonal to the system on which they run, such as wikis, documentation, and blogs.
These categories should be treated separately, he said, and doing so benefits both administrators and developers. Developers may prefer to take care of the core-essential pieces themselves, but they do not need to take time setting up Mailman configuration or provisioning database servers. Administrators, too, can divide up tasks in the layers, letting go of control "down to the bare metal" as administrators often want.
Wade instead advised projects to treat the "holy grail" of administration—root access on the server—just like it does the holy grail of development, commit access. By starting new infrastructure volunteers on non-core tasks (even wiki maintenance or web page editing), they can learn the system, gain experience and the trust of other administrators, and work their way toward the core systems. Having a transparent process and meritocractic system are ideals that define open source projects, he said, and they apply to infrastructure administration just as they do to anything else.
A lot of administrators treat the prospect of sharing root access warily, since it is tricky to trust volunteers that they have never met in person. But Wade argued that such trust-building is no different than the trust-building process required of new developers. It is just a mindset many administrators have not adopted. Projects can and should consider sandboxing systems and other tools to guard against accidental catastrophes, but ultimately administrators need to remember that systems administration is not a life-or-death endeavor, and if someone on the team does make a mistake, the project can always roll back the change. Of course, that advice does assume that the project is keeping backups, but that is hardly a new piece of advice.
He also offered several practical ideas for projects looking to get their infrastructure into better shape. The first is to start small and scale up as the project grows. Initially, the bare minimum that the project requires will have to do, even if that is a bargain-rate web hosting plan. The second idea is to find ways for interested sponsors to contribute to the infrastructure as a means of supporting the project. Providing tools or covering all or part of the hosting bills is a good way to let companies visibly support the project, and by allowing multiple companies to contribute, it shows that the project has broad support (as well as giving all vendors equal opportunities). He mentioned that several companies provide servers to the Fedora project; whichever one is responsible for serving up a particular page is indicated on the page itself.
Finally, he provided specific examples of how the oVirt and Fedora projects each split up their infrastructure organization. Fedora's core-essentials include the Koji build system, pkgDB database, Bodhi updater, Yum update system, source code management, testing infrastructure, and "Fedora people" web pages (the latter because they are sometimes used to provide package repositories). Fedora's core-nonessentials include Bugzilla, MediaWiki, WordPress, Planet, elections infrastructure, and mirror management system. The non-core pieces include web hosting and FTP mirroring. The oVirt core-essentials are fewer in number: Git, Gerrit, Jenkins, and Yum. Its core-nonessentials include Puppet, Foreman server manager, and Mailman. Its non-core pieces include MediaWiki and to some extent Mailman (here Wade observed that sometimes the borders between the layers can be fuzzy), and external services like GitHub and Identi.ca.
The audience asked several questions, such as how IRC fits into the mix. Wade replied that IRC is a tricky one, since it is used for communication but is also integral to the development process. The projects tend to use external IRC networks like OFTC and Freenode, but run their own logging and announcement bots (which he considers pieces of project infrastructure). Another audience member suggested that "core" and "essential" might be taken as loaded words, which Wade readily conceded (who wants to hear they have been deemed nonessential, after all?). He said he was open to better suggestions, but that the principle of layers and levels was the main point.
Release cycles
Bergeron discussed "project management" in what she called the classical, business-lingo sense—specifically, addressing the questions of "how do we get this puppy out the door on time?" and "how do we juggle the logistics?" In the business world, there are project management certifications and training classes, she said, but none of them talk about how to apply their tactics to the open source approach, which has peculiarities. First, open source projects are composed of many people (often even critical team members) who are volunteering their time, and cannot be dictated to like a salaried employee. Second, such projects must cope with constant uncertainty in turnover, such as people changing jobs, going away to college, or losing interest for other reasons. Bergeron offered her own advice on this type of project management based on her experiences as Fedora project leader, specifically with regard to managing a development and release cycle.
![[Bergeron speaking]](https://static.lwn.net/images/2013/02-scale-bergeron-sm.jpg)
The first piece of advice is to have a schedule. Shipping on time is the holy grail, she said, but it is important to recognize that shipping on time at the cost of angering and demoralizing the project's members is not worth it—ideally, you want your project to grow continually. How the schedule is determined needs to scale with the project, as does how it is communicated to project members as a whole. For a three-person team, putting it on a single web page may be sufficient; for a large project it is not. It does, however, actually need to be published somewhere. Mentioning it in a blog post is not good enough, as eventually it will scroll off the bottom of the page.
The next piece of advice is to communicate everything. A lot of people assume that open source projects are constantly communicating, but there are things every project can do better. In brief, she said, you cannot remind anyone too frequently about anything. But clarity is the key, so although important things like the schedule need to be communicated broadly to avoid the "well nobody told me about that" problem, they also need to be published in a consistent, predictable manner. In other words, emailing it and posting it at wiki/Schedule one time, then blogging it and posting at wiki/Calendar the next is a bad idea. An audience member asked how to communicate constantly without it becoming annoying; Bergeron replied that that was a risk but it could be mitigated with a good tone and a smile.
The next piece of advice is to manage how much work takes place during the release cycle. Projects need to agree on what features and changes will receive attention, and not simply let everyone do whatever they want when they want to do it. But these plans also need to consider failure a possibility, and plan for incomplete efforts and how to roll back changes. Change-planning can be contentious, she said, but it is critical that the project have the conversations in the community, or else people will leave. Sometimes people hear that warning and think "I want X to leave, he's a damn fool," she said, but you never know who he will take with him or where he might go.
The fourth piece of advice is to learn to live with Murphy (as in Murphy's Law). Problems will happen, she said, but when they do they usually contain learning opportunities. In addition, coming through the problem together can be good for the community, as it fosters a sense of camaraderie. The final piece of advice was to consciously set expectations for each cycle. The best way to do that is to be transparent about the decision-making process and to be communicative. Surprises can scare people off, she said, but invitations to help out are awesome.
In the audience question-and-answer session, one person asked what tools there are for project management. Bergeron recommended TaskJuggler, among other open source options. Another audience member asked how projects can prevent "collisions" where more than one person wants to work on the same thing. Bergeron replied that Fedora has several teams that collaborate, which is one way to tackle the problem, but added that it was rarely a practical concern. Most of the time, there is far more work needing to get done than there are volunteers to do it.
All three sessions provided practical advice, and, judging by the
number of audience questions (of which only a fraction were recounted
above), that advice was useful for quite a few attendees. Since the
free and open source software ecosystem is one that exists to produce
software, it can be all too easy to spend too much time thinking about
revision control systems and contributor agreements and conclude that
those topics cover what it takes to manage a successful project. But
as Wade said, what really makes a project "open" is how it functions,
not what license it uses; that applies to communication,
infrastructure, and scheduling just as it does to development.
Index entries for this article | |
---|---|
Conference | Southern California Linux Expo/2013 |
Posted Feb 28, 2013 11:54 UTC (Thu)
by alfille (subscriber, #1631)
[Link] (2 responses)
This is just a request that LWN try to give a little background in the articles.
Posted Feb 28, 2013 18:01 UTC (Thu)
by morhippo (guest, #334)
[Link] (1 responses)
Posted Mar 2, 2013 0:25 UTC (Sat)
by giraffedata (guest, #1954)
[Link]
Well, the article isn't about XBMC. Not even the third of it that uses the XBMC project as a case study.
I stopped reading when I realized a few paragraphs in that I'm not part of or know anything about projects such as the XBMC project. Knowing that XBMC is a media player (which I didn't) wouldn't have helped me with that decision.
Of course, it still would have been easier to read with a few words of explication of "XBMC" to put a "face" to it.
Posted Mar 1, 2013 19:19 UTC (Fri)
by mday_ii (guest, #25315)
[Link]
Posted Mar 1, 2013 19:22 UTC (Fri)
by skitching (guest, #36856)
[Link]
Sounded like a great idea - allowing people to contribute to a very time-consuming and important part of a project in exactly the same way as the "code developers" do. And most mistakes can be detected via "patch review" or handled by rolling back a commit. In theory at least.
I wonder how that worked out in the longer term..
Posted Mar 7, 2013 17:39 UTC (Thu)
by nye (subscriber, #51576)
[Link]
I'm not quite certain I've understood this. Let's say that, like some of the posters here, you've never heard of XBMC and want to find out what it is. Is he saying that a significant number of people will do a Facebook search for it, rather than going to a search engine?
It's never really occurred to me that people would use Facebook like this - is it generally a successful strategy?
SCALE: Developing a project community
I was just about to write the same - after one screen of reading I had no idea what the article was about and stopped reading...
SCALE: Developing a project community
SCALE: Developing a project community
after one screen of reading I had no idea what the article was about and stopped reading...
SCALE: Developing a project community
SCALE: Developing a project community
SCALE: Developing a project community