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?

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.