Some more thinking about open source projects
Wow - any time you mention open source, you touch a nerve don't you...
First off - just because I work for Microsoft doesn't mean that I am against open source. In fact, I work in a team that builds class libraries and shares the source with the community so I am actually all for the concept. Now I am not trying to solve any issues at the OS level so I am not going to debate Windows vs. Linux. Let's think at a smaller scope for now.
Suppose you are creating a useful library for .NET development. It is the "Foo" library. Here is the question...
How do you collaborate with the world in the development and evolution of the "Foo" library while exposing the quality in an objective way and insuring that the quality of "Foo" is trending upward (getting better over time).
When I talk to developers I often ask if they use libraries like this and I find that few .NET developers (<10%) make use of these type of solutions and one of the primary reasons is that they are unsure of the quality. I believe that if we can find a way to address this concern we can take great ideas, collaborate on them and produce useful libraries that people feel comfortable using.
Here are the questions I think we need to answer:
- What would an objective measure of project quality be? Unit tests? Code coverage? Responsiveness of the community?
- What would it take for you to feel comfortable with using a "Foo" project? What do you look for? What does your employer require?
- If you were in charge of the "Foo" project, how do you insure that contributions from the community don't hurt your project because of quality problems?
I don't pretend to have the answers to these questions, I'm just honestly asking how we can address them. There are two other issues that loom large in this arena as well and they are licensing and dependencies, but I'll leave those for another blog.
Comments
- Anonymous
October 27, 2004
The comment has been removed - Anonymous
October 27, 2004
The comment has been removed - Anonymous
October 27, 2004
The comment has been removed - Anonymous
October 27, 2004
I've used open source fairly frequently in development and production systems. In my experience, I've found the quality in proprietary and open source solutions to be very similar.
With regards to message boards, I don't know what I'd do without Google, again both for open and closed source. I don't usually ask questions since in almost all cases somebody else has been there first.
Look at the PHP documentation site for an example (see http://www.php.net/manual/en/language.oop.php, for instance) of community involvement. Each page lets users add comments, which turn out to be invaluable..."I found a bug, the workaround is x y z," or "here's some sample code." - Anonymous
October 27, 2004
The comment has been removed - Anonymous
November 04, 2004
For me a tutorial is number one. If time has been taken to care for the first time users, then the chances are care has been taken elsewhere. Also acceptance tests or failing that unit tests. I use them as the documentation to find out what's really going on. - Anonymous
November 08, 2004
Commercial software is not synonomous with quality. But I think an effective technique if your audience is developers is to expose (as open source) unit tests for your library. In fact, I've had clients pay me to write unit tests for 3rd party libraries - including some of the PAG ones. I've even go as far to create unit tests against the .NET Framework base class libraries. Whenever I'm trying out some new class and I need to play with it to fully understand it, writing an NUnit test is just as quick as writing a console application....plus I get the huge benefits of adding that to my repository of tests. It also acts as documentation if somebody asks me for some snippets on using x in the framework. - Anonymous
February 12, 2005
After a few days of reading and tinkering, I've implemented a system for using Enterprise Library (EL) to handle ASP.NET page-level authentication. In my system a User class facilitates authentication by username/password or a user token. An AuthPage clas