LWN.net Logo

OSCON: Building communities

July 28, 2010

This article was contributed by Joe 'Zonker' Brockmeier.

How do you build a successful community that attracts contributors? Two talks at OSCON offered very good advice on the topic: "Secrets of building and participating in open source communities" by Drupal founder Dries Buytaert, and "Junior Jobs and Bite-sized Bugs: Entry Points for New Contributors to Open Source," which was co-presented by Mel Chua of Red Hat and Asheesh Laroia of OpenHatch. Both presentations offered some worthwhile insight and tips on building community.

To be sure, these weren't the only talks focused on the fine art of community management. However, Buytaert's talk seemed worthwhile to attend because it's obvious that Drupal does enjoy a healthy community of contributors, and the "junior jobs" presentation seemed worthwhile because it was focused on practical techniques for dealing with an obvious problem for any community, rather than being of the hand-wavy motivational community talk variety.

Secrets of Building Communities

Given that community management is a well-covered topic, one might be skeptical about a presentation that promises to teach "secrets" of building community. And, indeed, Buytaert's presentation was less revelatory than the title suggested. But Buytaert did, in fact, offer very useful advice and insight into the success of Drupal that might well apply to other communities.

He started with a rundown of Drupal's success so far. According to Buytaert's statistics, Drupal sites account for about 1% of Web sites. Drupal is downloaded about 300,000 times per month, and Drupal.org sees about 1.5 million unique visitors per month. He also said that Drupal has more than 6,000 modules. All of which point to a project that's doing something right, but what? Buytaert offered several pieces of advice or wisdom for the audience.

First, Buytaert advised that there's no "quick rich" formula to build a community. When growth does happen, the second tip was to embrace growing pains. Buytaert pointed to an incident with Drupal in 2005 when Drupal's server was pushed to its limit and couldn't handle the traffic it was receiving. Buytaert said that it made the Drupal community stronger, and that "communities are always a bit broken. Nothing better than suffering together."

Next, he offered two pieces of concrete advice: provide the right tools, and provide a architecture of evolution. He suggested that any project should have a modular design, and favor accessible technologies like PHP and MySQL (if appropriate) rather than languages or technology that are perhaps better but less accessible. Drupal has succeeded in part because PHP and MySQL are so commonplace. Would Drupal have flourished to the same extent if it was written in Perl and used a less popular database? Unlikely.

Buytaert offered one unusual "secret": build a commercial ecosystem. But he also suggested that projects needed to "find a higher purpose" while striving to make money. For instance, he offered Drupal's goal to democratize online publishing, and Mozilla's goals for an open web. Both initiatives that have powered a commercial ecosystem, but still meld well with open source communities.

Enabling Bite-sized Contributions

Laroia and Chua have a fair amount of experience working with new contributors. Chua spends a great deal of time working with the Fedora community. Laroia works on OpenHatch, a project that helps connect new contributors to projects by breaking bugs and projects down into small and introductory chunks.

The start of the Junior Jobs presentation was slightly unorthodox. Chua and Laroia asked the audience to be "productively lost" and explore some project sites looking for the the bug tracker to find bugs to work on or other resources that a new contributor might seek out. The audience, about 20 people, gathered in pairs or small groups and checked some popular project sites like Sugar Labs, the Fedora Web site, and other mainstream open source projects.

The audience, predictably, discovered that finding the way around open source project sites for contributor resources was not always a simple exercise. Even when a contributor can find the bug tracker, it may take a translator to help them understand the information. One example given was the "UNCO" status in GNOME's bugtracker, which wasn't immediately obvious as "unconfirmed" to some of the audience at the talk. New contributors are not going to experience the sites like longstanding contributors who know where to look — and probably have deeply buried resources bookmarked for fast access.

Part of the problem is that tools and documentation that are helpful to experienced contributors may not be so useful for newbies. As an illustration, they talked about cookbooks and the difference between a cookbook useful for new cooks and one useful for an experienced cook. It might be necessary to explain "rolling boil" and what it means to "fold" an ingredient in to a mix for a beginning cook, but but such explanations are only frustrating to an experienced cook.

Looking for pointers for your project? In talking with Chua and Laroia after the presentation, they offered Dreamwidth as a prime example of a project that does well in attracting new and diverse contributors. Chua also pointed to Drupal's Dojo for its classes on how to get started with Drupal contribution, and the Fedora How to be a successful contributor document. Chua also noted that each community has to forge its own path:

You can't point to specific wiki pages and say 'these words are all you need to make it easy for new contributors to join' - it's about the human dynamics of the community, and that's hard to capture in static form.

The overall message of this presentation should be heeded by any project that looks to attract contributors who are new to contributing to open source projects. Breaking down tasks into "junior jobs" or easy-to-tackle bugs is fine, but that's only so useful if the sites are difficult to navigate or the bugtracker is confusing.

Chua recommends thinking of FOSS contributions more broadly:

It may be helpful to think of FOSS contributions as being towards not just a codebase but a *community* that includes and is centered around a codebase — so you can patch the code, but you can also patch the tests and docs and processes and how the technology you're building and the people you're building it with interact with the rest of the world.

Over all, the dominant message of the presentation was to communicate with new contributors and try to anticipate how newcomers will view your project. As Laroia said during the close of the talk, "Communicate. It can't make things any worse." While not a definitive guide to community management, it's a good first step.


(Log in to post comments)

Drupal: Why MySQL over Pg?

Posted Jul 30, 2010 3:45 UTC (Fri) by ringerc (subscriber, #3071) [Link]

Interesting. There was just a discussion on the Postgresql-GENERAL list wondering why MySQL is the default go-to database in OSS circles, and so much more popular. Nobody's quite sure why, though the fact that it's easier to run multi-tenanted (for hosting) came up.

Given the mention here of MySQL being a notably good choice to base Drupal on (because of it's popularity) I thought I'd ask for opinions here on why folks are using MySQL over Pg. I don't "MySQL vs Pg" comparisons; it's not about which is better so much about why you use one or the other, as both have technical strong and weak points.

Is this mostly historical, from the days when MySQL was fast but liked to eat your data (MyISAM) and PostgreSQL was just slooooooow and buggy? Neither of these things are true anymore, but if database choices were made then it'd influence long-term popularity and mind-share.

Drupal: Why MySQL over Pg?

Posted Jul 31, 2010 16:00 UTC (Sat) by ccurtis (guest, #49713) [Link]

I started playing with databases in 1995 or so, and MySQL was somehow the HotNewThing. It was sold as being aligned with this newfangled web stuff (fastest for reading, which is what most web stuff is (was)), and PHP had good support for it. I happened to be using PHP because I preferred the C-like syntax (versus Perl's 'linenoise') so it was a combo that just gelled early -- web + php + mysql.

I've toyed with Postgres but the interface is completely foreign to me. In MySQL, it's not exactly easy but you can generally figure out how to setup different access rights to different databases by manipulating the 'mysql' table. I have no idea how to do this is Postgres. In the past, I typed 'pg_createdb' (something like that) and suddenly I had a database somewhere ... I assume. Presumably it was tied to my account, as it never asked for a password, and therefore disallowed all collaboration and remote access (eg, me and the web server on another machine).

"How is this useful?" was my response, as I was also working as a SysAdmin at the time. Others in the lab may have been using it - nobody had asked for it explicitly - but people were using MySQL. I also think its limited SQL syntax (no subselects, foreign keys, etc.) made learning it a bit simpler as there wasn't as much to know to get started. The documentation was prominent and generally well written.

Why MySQL remains preferred over Postgres at this point is most likely simple momentum. It will be interesting to see what Oracle does with MySQL though. I think that (and this is pure conjecture) there is something of a database renaissance underway, and Postgres could have a future there. Which is to say that I think a window is opening where the tables could change (no pun intended).

I still think of MySQL as the Web Database without stored procedures, and as the new web model seems to be going towards multiple independent code bases accessing the same data, the tighter you can tie data and data validation the better. I know there are projects that use database views as their API, with triggers and stored procedures to maintain compatibility between versions. There's also talk of putting the UI into the database so that the application can be either web, java, or native code and can just pull out the interface elements from the DB.

Perhaps this is all old-hat (or completely invalid) by now, but my perception is still that of Postgres = completeness and cutting-edge database features (ACID, strict SQL syntax support, technical miscellaneous-ness) and MySQL = practical stuff now (leaving out esoteric SQL in trade for better speed, master-master replication).

Now, I'm not saying anything other than these are my thoughts and perceptions, and I don't claim to be a large DB user. When I do install DBs on my machines, it's usually MySQL because I'm familiar with it and it's what I tend to run into out in the wild. When I last installed Postgres it talked to me about configuring my cluster and my thought was that I had clearly installed something far more complex than what I needed.

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds