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.

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?

Expecting the Unexpected

Google has come up with a Google Browser Sync extension for Firefox which enables syncing of bookmarks, cookies, history, even passwords between multiple Firefox instances on multiple machines and operating systems. The data can be passed to Google encrypted (and probably should be).

At first glance this looks like the ideal solution to that pesky problem of multiple desktops and operating systems. Indeed it might also be seen as a direct hit on del.icio.us‘s unique selling point. However, I think there is more to this story.

My move to del.icio.us this past January was indeed prompted by the fact that I switch frequently between 5 different desktops and operating systems. There just wasn’t a practical way to manage my bookmarks. Even a Google personalised homepage quickly becomes unwieldy (especially if you want to use that to handle your rss feeds). So del.icio.us had all the appearance of a solution for me. One web page that easily handles all my bookmarks, and a straightforward system for adding new bookmarks.

But this new Google Browser Sync extension also appears to answer my previous needs. So why not go with that?

This is where things get interesting.

The use of a technology changes one’s expectations and requirements. Prior to using del.icio.us I did not have much time for social software. What was the point? I’m just not that friendly and, frankly, strangers are usually called strangers because they are strange. But since embracing the open sharing concept employed by del.icio.us I have begun to both appreciate it and want more of it.

Using del.icio.us has changed my expectations and my requirements.

I now like the fact that I can trace my way through the other users of del.icio.us to find like-minded individuals whose bookmarks I can appropriate. And I like the openness that comes of using my real name for my del.icio.us page. (Of course that is not a requirement for use of del.icio.us, but I felt it was more in keeping with the spirit of openness to use it that way. The same goes for my blogger.com blog, obviously.)

Have my requirements now changed so much that a perfectly adequate solution (to my needs 6 months ago) such as the Google Browser Sync no longer suffices?

If so, then perhaps there is a lesson here for us all, and for the IT industry in particular. A simple reminder of how difficult it is to anticipate how change changes the underlying conditions.

Learning every day

It’s exhilarating, learning something new every day. It’s probably addictive. I know I never want it to stop.

I am not a programmer. Very likely I have little or no facility for learning programming languages. At least not if the evidence of my execrable French and German is anything to go by. Yet there too, I persist. For a number of years I spent every morning between 5:30 and 7:30 attempting to improve my French (yes, I do get up that early – it’s a curse). And still my French is embarrassing to me.

No doubt I would have learned more and learned it more quickly if I could have immersed myself in French language and culture for a week, a month, a year. I could have gone to restaurants, watched television, read newspapers, and most important talked to people. That is, I might have learned more had I lived in French for a time.

I did get the immersion experience in German once. One summer, the first that we were living in the UK, Kathy and I toured what had been East Germany with her uncle and aunt. Neither Klaus nor Erna speak English. Kathy speaks no German. In the parts of Germany that we were visiting there was no intrusion of English – no English-speaking tourists, no English television, no newspapers. So, for two weeks I needed to live in German just to get by, as well as serving as Kathy’s principal translator. Talk about exhausting. And yet, I probably learned more German and better in those two weeks than in the previous four years of modest effort altogether.

Very likely I will never learn a programming language well enough to claim fluency. But the challenge is there before me. And just like learning a natural language, I need to live in it for a time. Fortunately there are plenty of resources ready and waiting.

Python is my first serious programming language (I don’t count the “Hello, World” programs I wrote in GW-BASIC when I was a teenager). Some day maybe I’ll move on to Java or Perl or (shudder) C/C++. I am slowly beginning to grasp the rudiments of the language. I am aided in this by the opportunity to look at, study, modify (if I should wish) and run the source code for a couple of Python-based projects that I follow: Imendio Planner (Gnome Planner, as was) and MoinMoin.

No, I’m not ready yet to contribute any code to these projects. I am under no illusions as to my abilities. But I’m learning to read the code that underpins two applications I use in my daily work. And I’m following the discussions on the development mailing lists for them. Some day, in the not too distant future, I may even start modifying my local copies of the code base. I can at least dream of some day making small code contributions to the projects.

Meanwhile, I’m learning something new every day. I hope I live to be a hundred and one.