My Take On Quality Open Source Projects

First I will say that I have never managed an open-source project. I have only been a contributor and user. I have used many open-source projects and have managed many IT projects.

I'm going to outline some of my ideas here which I believe are the most important factors to foster and develop a project and commnuity of people.

First, let's start a list of noticeable things in no particular order.

  • Easy to contribute to. Probably the most important gateway to any project is their documentation, so having documentatoin that the community can update is key.

  • Automation. Is the build and release process automated? Do new versions release on a schedule? Is development hindered by the lack of automation? I believe a more frequent release cycle is better because it allows patches to release faster. How fast of a cycle do you ask? Well, I would say it really depends on the project, but for an active project at least every 3 months.

  • Code quality. This is actually interesting to me because I'm not a developer. I'm a dabbler. This doesn't determine if a project is ultimately succesful or not but it does attract different coders. Dabblers such as myself are more inclined to contribute to the poor code quality projects because the code concepts are easier to understand.

  • Documentation. How complete is it? One thing I will point out here is that I believe is important is to require docuemtnation with source code. Even the most basic documetnation is much better than none at all.

  • Communication. Is everything shoved into github including general help requests? Is the public allowed to open Issues? Ideally the community discussions and support requets would be in a forum, google group, or some other system outside of github.

  • Patience and Compassion. Are the senior people patient and spend time with others that are "up and coming"? It turns out this is important for others to feel welcome. Certain personality types may see helping others and explaining concepts that are obvious to them a waste of time but it's important there is a core group of people that are clearly in the public view that are willing to help people along. Developers that want to keep to themselves are fine as long as they don't come across as "stuck-up" and get in the way.

  • Respect. Here I'm mostly thinking about respecting time and energy of the users. Everyone who uses a project (even commercial ones) puts in time and effort to implement them. The people in power shouldn't dis-resgard even the little things if possible. For example, people save URLs in their notes to forum posts. As a project admin, don't just blindly change/upgrade the forums and break all of the links. Many users consider those links valuable to them. Breaking changes is obviously another one, but think about the little things - be respectful of other peoples' work.

That conculdes what I think are some of the key areas to consider for Open Source projects. I hope you're successful with yours!