Building a community: email archive profile

A wander through the public email archive of a project’s development list or its user list is, for me, a prerequisite to involvement of any kind. But that may just be me. I am not a programmer with a particular itch that needs scratching. So I can afford to be choosy about where I spend my free time. And I don’t have the skill set to be fascinated by a project simply on the basis of its truly remarkable code – code from which I could no doubt learn a thing or two. Those are both great reasons to get involved in a project: individual need and learning. But they aren’t mine.

If your open source project scratches someone’s itch exceedingly and uniquely well, you will probably have no difficulty in attracting people with similar itches to your project. They might even stay around regardless of the environment because that itch has just got to be scratched.

If your open source project happens to have such brilliant programmers that they are collectively pushing the envelop or even defining the nature of the envelop, again, you will probably have no difficulty attracting people desperate to learn from you and develop their own skills. And again, they might even stay around regardless of the environment because of the substantial benefit they are getting in terms of learning.

I’m guessing, however, that the vast majority of open source projects do not fall into either of these camps. Certainly the majority of projects that I encounter on a daily basis are only moderately itch-scratching and very rarely paragons of programming excellence. They are the relatively unsung projects that address a particular need, but not necessarily uniquely. They do their best with regard to their code, but they aren’t going to be written up in next textbook for computer science 101. And nearly all of them would like to grow their project in some way. Indeed, many need to grow their project, to build their community base, or the project will not survive at all.

It seems to me that I am a likely candidate that such a project might wish to attract. I’ve got a bit of free time, a modicum of ability to provide content authoring or user support, but not such a high opinion of my own coding that I think my talents would shine better in the bright heat of one of those star projects mentioned above. What kind of things will I be looking for when I first visit the email archive for this project?

In no particular order, these are some of the things I look for:

  • modest throughput
    • lists which are too busy will take up too much of my time reading, so I won’t have time to contribute
  • project focused
    • if the majority of discussions on a development list are about the recent events on Big Brother, it’s not for me
  • treatment of newbies
    • I’ll be a newby if I join this project, so I want to know how I’ll be treated by those who have been around for some time. I can get abuse at work; I’m not going to bother hanging around for it on my own time
    • societies are said to be judged by their treatment of their most vulnerable members; for me, that’s also true of open source projects
  • clear guidance for appropriate behaviour
    • this could be guidelines on the project site, but it also could just be evidenced through the example of the key members of the project and their periodic explanation to newcomers
    • sometimes this guideline is codified into an acceptable use policy (AUP). AUPs do not have to be draconian, they just have to make things reasonably clear and give a pointer to what will happen (or what you should do) if there is a confusion.
  • periodic summaries by the list owner
    • this is not essential, but it is incredibly useful to have someone periodically summarize the discussions that have taken place on a list that is receiving more than 10 emails per day. Once per month is probably more than sufficient. It recaps for those who have been filtering this list to read later, and it reinforces the usefulness of the archive to those searching. I don’t see this nearly often enough.
    • this probably sounds like a lot of work. Hey, if you want to attract me to your project, maybe it’s worth a bit of effort. You might even convince me that this would be an excellent way that I could contribute to the project, i.e. by writing this summary for the list myself
  • treatment of those who for whatever reason abuse the list
    • people can abuse a list in lots of different ways, some deliberate, but most inadvertent. How do the key contributors to this list deal with that abuse?

Remember, I’m not one of those star developers looking to make a mark in a star project. I’m part of the long tail that will, due to the network effect, potentially make even your modest project successful.

What’s the email archive profile for your project?

Communities and meritocracies

In my work environment I almost never encounter anyone saying to me, “This is a meritocracy”. Do you?

I never hear political scientists or even politicians refer to our society as a meritocracy. What would it mean to say such a thing? I think it would come across as harsh, to the point of absurdity. What would we do with those who don’t warrant our merit? Cut them adrift? Expose them in infancy upon a high bare rock? It just doesn’t sound plausible. In the community context, even if some aspects of it are calibrated by merit, as a whole I think we would have to say, “This is our community. No one gets left behind.”

So why do I hear, “This is a meritocracy,” so often in various free and open source gatherings. It is said with pride and no small amount of beating of chests. But what does it mean?

Meaning, of course, might be tied to intention. I think what is intended by the claim in the open source context is that great technical merit will be rewarded by substantial affirmation. And who could argue with that? I like to see great scientists win Noble prizes. I see nothing wrong in showing our appreciation for their accomplishments. But the claim to being a meritocracy goes far beyond this. It indicates that decisions and, more important, who gets to make decisions will be determined on the basis of merit. Indeed, it suggests that only those with merit ought to make decisions.

Of course the claim is always bounded by a context. Thus: This is a meritocracy. That which is not this is not a meritocracy. To join our meritocracy, you must agree to our rules. And the first rule of our meritocracy is that only those with merit get to decide the rules.

Whatever.

As …ocracies go, this is fairly typical. After all, a democracy simply replaces those with merit by the mob, or demos. In either case, rules still get made by someone (or some group) after all.

But what happens when you try to marry a meritocracy with the notion of community? These days I regularly hear tell of the open source community, or community building around an open source project. That sounds nice, doesn’t it? But if community in these uses is simply equivalent to our gang, then all that has been said is that you want to increase the size of your project. Adding the word community doesn’t add anything new.

Should it?

I’ll rephrase my question. Does the notion of community mean something more or different than group?

I think it does. I think the notion of community encompasses all the interactions between individuals of a certain group. For example, think of a small town. There are people of all ages there, including infants. There are people engaged in a wide variety of activities not all of which are commensurate. Most important, while there may be decision-making procedures, of whatever kind, these are not defining for membership in the community.

As this is a point I’m struggling to make clear, forgive me for taking another run at it.

In my town, infants, small children, even young adults are not directly participatory in the decision-making processes. They do not have a vote. But that does not make them any less members of my community. Moreover the transition to the full decision-making process is based on something completely out of the control of any member of the community: age. And that is a curious thing.

Without presuming that I’ve fully clarified that, I’ll press on.

What happens when a small open source development project of one or two (or more) developers decides to set about building a community around the project? I would have thought that meant the project was setting out to broaden its base. But surely it doesn’t just want more bodies. It must want more roles, i.e. more things that different people can do for the project. Moreover the project leadership must be thinking that by building such a community they are somehow shoring up the foundations of the project itself.

And they would be right to think so.

A broad based community open source project has a whole range of individuals – by analogy, the infants, children, teenagers, adults, and elderly. And it won’t be true in such a community that everyone does the same thing, or has the same skills, or can be judged on the same scale.

It’s the reason a meritocracy breaks down in the face of real community.

Meritocracies are great for tight little projects. There is no reason to argue against them. Communities are great for large amorphous groupings of people that have curiously self-sustaining constituencies (probably because they keep having children!).

Whether the two can be brought together, however, remains an open question.

Learning while you learn

Every day, for at least 20 minutes, and often much longer, I work at building my French vocabulary. No need to detail my regrets for not learning French in my youth. The point is that I am committed now. Some of my effort is directed to reading from different sources be they newspapers, magazines or novels. But a fair bit of my effort is devoted to a near mechanical use of flashcards. Flashcards for vocabulary training are a tried and tested method. The more you use your card set, the more you build the reflexes in your mind to instantly recall the meaning of individual words or phrases. Indeed there is even a system that captures the varieties of algorithms that one might deploy in varying the spaced repetition of a card in a card set. It is called the Leitner system and nearly every computer based flashcard program going instantiates it in one form or another.

There are easily more than 250 electronic flashcard programs out there. The one that caught my eye and which I use on a daily basis is jMemorize. How did I select it?

My first step was to stick “‘open source’ flashcard” in Google just to see what would pop up. Go ahead, try that. You will find that there is an article from NewsForge on jMemorize that tops the list. Next step for me was to check out the jMemorize project site on SourceForge. SourceForge is not the home of all free and open source software projects. But it is an awfully large starting point. From a project summary page in SourceForge you can tell at a glance how large a project is (number of developers), what licence the software is released under which in the case of jMemorize is the GNU General Public License, the programming language and the operating system for which the program is intended (java and thus operating system independent), the bugs that have been reported (if the project is using SourceForge’s bug reporting system) and even a quick browser view of the subversion code repository.

Perhaps most important though is the pace of the project. It doesn’t really matter for something as small as this whether there is one developer or 10. What matters is whether the project is moving forward. Is there any momentum? Do new releases appear reasonably frequently? Are bugs being squashed? Are there any users out there sending in feature requests, contributions of code (even if they haven’t joined the project as a developer), or at least questions about how to use the software? It all adds up to a judgement about whether a project is healthy or moribund.

Of course the state of a software project is probably not the criterion you will want to use in selecting your flashcard program. The real test is whether it does what it says on the tin.

I am delighted to report that in over 6 months of using jMemorize, I have never been disappointed with it. That doesn’t mean it will do everything you might want it to do. It only means it does everything I want it to do. So it wins on functionality for me. Plus it wins on not have any superfluous functionality. I confess I (usually) like lean software. It also wins for me on being multi-platform. I’m constantly switching between machines with Windows operating systems and Linux operating systems. I needed a flashcard program that wouldn’t get in the way of my jumbled life/work arrangement. And of course it does make a difference to me that it is open source.

jMemorize is the project of a single dedicated developer, Riad Djemili, of whom I know virtually nothing. Nothing, that is, except that he does good work. Long may that continue.

Update: On 23 January 2007, Riad posted notice on the jMemorize blog that he was setting up a development mailing list for the project. So far it is a very low volume list, so why not consider signing up.

Ringing in the changes

With a new year upon us, you would expect to see a few changes, possibly even resolutions, appearing. A leisurely break over the holiday season does give one time to reflect. Time I hope I have put to good use. So what have I resolved to do differently over the next year? Here are a few of my resolutions.

  • implement David Allen’s Getting Things Done (GTD) methodology rigorously
  • make a serious contribution to an open source project
  • make openness a reality in each of my project/work environments
  • learn a new programming language and improve on one of my current ones

Oh yes, and I’m also going to learn French, lose weight, and run a sub-60 minute 10km race. So, same as last year, I guess 🙂

Counting for at least two

I like everything I do to count for at least two. It’s something I recommend to everyone in my team. But what do I mean by counting for at least two? Here is an example.

A colleague is about to review a recent O’Reilly publication on developing projects in PHP. She could simply read the book and write a short review highlighting its strengths and weaknesses. That would be letting her effort count for one. How can it count for two?

I know that this colleague has a long term training goal of developing her skills as an open source software developer. That’s not terribly surprising coming from a member of the OSS Watch team. Is there a way to combine these projects?

For a start we could try installing the Eclipse IDE along with its PHP plugin. Version 1.0 of the the PHP plugin for Eclipse is due out in June 2007. It is currently at release number 0.7. Usually a 1.0 version number is used to indicate that the developers believe their project is ready for the real world. Of course most open source software is in use long before it hits the 1.0 release, but 1.0 is symbolic of something, and it is a curiously persuasive number for people that wear suits. Still, why not put both Eclipse and its emergent PHP plugin to the test? We might just learn something.

But what can we test?

Everyone in my team is encouraged to find an open source project that they can contribute some development time toward. How do you pick a project that is right for you, for your current skill level and one that meets your particular set of criteria for a stimulating project environment? That’s going to be a personal thing, but there is no time like the present to get out there and find that first (or second, or third) project.

Then all you need to do is pull it into Eclipse, begin exploring and, ideally, start contributing code.

Okay, those last couple of steps went rather quickly, but you get the idea.

Now we’ve got a project that will

  • review a publication
  • provide continuing professional development for a staff member
  • probably generate a further review of both Eclipse and its PHP plugin, and (in the best of all possible worlds)
  • provide a nice case study about a specific open source project and what it was like getting involved.

Oh, and if it all works out the project will have gained a committed contributor.

So now that one task – writing a review of an O’Reilly publication on PHP – has spurred a whole host of related efforts. That’s what I mean when I say that everything should count for at least two.

Now you are asking yourself, what else does this blog item count for besides a short homily on practical efficiency?