Two Years as Open Source Software Developer, Retrospect and Forward-looking

I've been a developer for open source Xen Project for two years, and I also help develop June in my spare time. What I've learned so far is that running a (proper) open source project is never an easy task.

Open Source means different thing to different people. To many people who's new to this concept, probably it just means "putting your source code in the public so that it can be useful to others". This is of course a valid definition, but it's only the first stage of an open source project. If you want your project to thrive, to have bigger impact there's much more to do.

As I understand it, a proper open source project should have:

  1. publicly avaiable source code
  2. proper open source license
  3. proper document to certain degree
  4. public channel for discussion
  5. well-defined development process and responsive maintainers

Though I don't think Github does a great job in providing public channel for discussion, it does provide a viable solution for #4. It lowers the barrier to get involved in open source project. Mailing list is also popular amongst old-school hackers.

All the rest pretty much depends on project owner / initiator. #1 should be very easy to achieve. #2 and #3 are often overlooked, however.

Not having a license is very likely to turn away potential contributors, because contributors have the right to know how their code is going to be used and avoid potential legal problems. It might be hard to choose one license from all those popular ones, but it's definitely something you need to decide at the very first beginning.

It's a bit tricky to define "proper document to certain degree". I personally believe that the minimum degree of documentation should be able to help a fresh user / developer start using / developing the software without any major problem.

The last item requires most time and effort. Many people develop open source software to get a paycheck, but more develop for fun and non-profit purpose. Wearing my latter hat as a developer for June, I often feel I don't have enough time to look at all the missing features and answer all the quesions. There's really no silver bullet, all we can do is to devote more time.

As I mention in the beginning, I develop open source software for both profit and fun. How good (bad) did we (the two teams) do? The following paragraphs are by no means claiming I made any significant contribution on the whole process. They are just my views and my views only.

I think Xen Project is doing well in general. We've got a team of people who understand the development of open source projects. We try hard to work with upstream / downstream projects. All development activities happens in the public mailing list and process is well-defined. We hold regular Xen Docsday to update documents, etc. During the last year we've seen some siginifant improvement on the whole development process, especially after joining the Linux Foundation.

As for June, it's not that good. I got involved in June one and a half years ago. June has always been an open source project since its genesis. What fell short is the last but most important item -- the process is not very well-defined and code not very well maintained. I'm not blaming anyone because noone gets benefit out of it by developing June, but how can we fix / improve things? Adding new features is important, however it's just impossible to develop all the features by my own. And in my opinion only by building an eco-system (however small) can we make a project healthy and prosper.

When it comes to June, the core idea is that now we need to build a minimum viable product for both end users and developers. I've tried to identify some key steps to bootstrap and attract developers:

  1. improve documentation
  2. develop necessary features, better test coverage
  3. request for contribution

I managed to spend some time on rewriting several documents and define a clearer development process. As for feature parity there's still lots of work to do. There're still lots of missing features on the TODO list. Unfortunately up to this point the core team is really on their own, requesting external contribution might be too early at this stage.

I'm currently working on #2 on that list, though I cannot say for sure how much time I can put into it. At least I've got a plan and will try to stick to it. Let's see how it plays out.