Finding and Evaluating Open Source Projects

Nov 16, 11:00 pm

Article Author: Henrik Ingo
.NET 3.5 Books

Introduction


This article is part of a series that is aimed at professional .NET developers whose experience is largely confined to the traditional closed source world, and who either need to evaluate whether it would be beneficial to use an open source project for some application, or have made that decision and hence will be stepping into the open source world for the first time. The previous article examined the open source community, looking at the business reasons why you might or might not choose to go open source, and at some of the different cultural expectations and rules of etiquette that distinguish the open and closed source worlds, and which could easily trip up your marketing department if you aren’t aware of them. This article moves on and presumes that you have decided that it would be best to search for an existing open source project for some application your business requires. In this article you’ll learn how to evaluate competing projects to see which one is likely to be most suitable. The article will finish off by discussing some of the best places on the Internet to look for .NET-related projects, and will also look at a couple of popular such projects.


Evaluating Existing Open Source projects


A good open source principle to remember is that choice is good . But sometimes even I have to admit that too much choice is just – well – too much.


This is a serious challenge when you are about to get involved in an open source project. A good example is provided by content management systems. There are literally a thousand open source content management systems out there. Even if we restrict our search to ASP.NET-based CMS’s, I can still find about a dozen alternatives without even looking.


Even if you are just picking an open source application to use and despite the fact that you’ll download it for free, it will still be an investment of your time and energy. The example of choosing a CMS is actually a very good one. Often it will be an investment in infrastructure, say you bought some new hardware to run the application on. Particularly for large companies, the amount of time each user spends learning a new system will amount to a sizeable investment in itself. And what’s worse, you start accumulating data into the system. In short, once you have made your choice, you are hoping you will be using the application for as long as possible. Obviously, if you were planning to also contribute code to the project, your investment will be even bigger.


Narrowing the Choice Down


When you have a dozen options to choose from, you usually have to narrow it down to at most two or three, simply based on looking at each project’s website. If there are screenshots of the application, those will often give you a good picture of the quality of the application. Browsing through the documentation is another option, especially when screenshots are not available.


Then you’d want to check out the maturity of the project. Is this the first release or has the project been around for a while? Bear in mind that traditionally open source developers are very conservative when it comes to version numbers. Version 0.9 can often be considered quite stable and usable. This will of course vary.


On the other hand, you also make sure the project is still alive and try to estimate its future vitality. When was the last release? When is the next one due? How many developers are there? How many users? If you can find a mailing list archive or a web forum, how active is it? (And if you can’t find one, you should worry about that.) What does the discussion look like?


These are some things you should be interested in when narrowing your options. Remember, you are not only interested in a good application, you are interested in a stable project with a promising future.


In the end, you’ll pick one, download it and have a try. Of course the most important aspect is still, whether the application suits you functionally, i.e. it actually works the way you like it to work. At that point we get to another interesting question: Do you know what you want?


More rigorous evalution


At the Debian developers conference this summer, Debconf5, I had the opportunity to meet Martin Langhoff. He has consulted the New Zealand government on evaluating open source projects and gave a talk on the subject. A video of the talk is available here. The background for his work was that when making government contracts, you have to follow a formal procedure where the contract is given to the best bidder. "Best" is usually decided not only on price, but also on things like support for the product, and stability of the company. Points are given based on the financial status of the company, how many users the application has based on licenses sold, and so forth. When New Zealand got interested in open source, they found that the formal model that had been developed for proprietary software didn’t fit well for someone who wanted to bid on a contract with open source software.


The New Zealand government therefore had to develop a similar procedure that was better suited for open source. Many of the things they gave points for where similar to the things I’ve already outlined above. Things you intuitively look for, but these now had to be explicitly stated in the government procurement procedures.


For instance, they gave points for the number of independent developers in a project. The ‘independent’ bit is important here: Even if a project seems to have many developers, if it turns out that they are all on the payroll of the same company, then the project is on somewhat unstable ground. They also tried to estimate the number of users based on downloads and amount of people in the mailing list archives.


During the development of these procedures, Martin found that many of these things really are good predictors of the continuity of a project. Things like mailing list activity correlated highly with whether the project was still active one year later or not.


Martin’s methods also included actually getting in touch with the project. For instance he would try to find a bug in the application, report it to the developers and see how his report was received and handled and how quickly the bug was fixed. Then he would also look up an open bug from the project’s bug tracker, or if there was none try to find a bug himself and fix it and send in the patch. Testing how open the project is to receiving contributions from new developers is in my opinion a very good test on how likely the project is to succeed, because that is the very essence of what makes open source so great.


If you are about to make a huge investment (in time and effort) in some open source software, or it is going to be a very important part of your infrastructure, you might want to incorporate some of Martins more rigorous methods into your evaluation process as well.


Finding Open Source Projects


The easiest way to identify open source projects in the area you are interested in is to use one of a number of websites that are dedicated to listing or hosting projects. I’ll quickly review some of the most useful such sites here.


SourceForge


SourceForge.net is a project hosting service for open source projects. It provides all the tools an open source developer might need, ranging from discussion forums and bug trackers to a compile farm for those that need to compile their code to different operating systems and hardware architectures.


If you’ve not heard the term before, a compile farm is a server/servers, which will compile your source code into binary code for you. One reason to use a compile server(s) is simply that for large projects compiling can take a lot of your processor time, so you might want to use another machine for that. Since Unix and Linux can run on many processor architectures, it is an especially valuable service to the average Open Source developer who merely has a standard PC at home. Of course, GCC can compile to other target platforms as well (you can use an Intel PC to create PowerPC binaries) but if you want to run unit tests, ie run the compiled app, you have to run it on the target platform. Websites, apart from ASP.NET and JSP-based websites, are not compiled, and even those run on virtual machines, so there is no need for cross platform compiling (although you could use a compile farm if you wanted to)


For most of us, SourceForge is just a good place to find open source applications. While there are other places providing similar hosting services, SourceForge is by far the most popular. Recently it exceeded 100,000 projects hosted. Many open source projects do not really use the services of SourceForge but register their project there anyway to take advantage of the download mirrors and for the visibility they get by joining.


The search tool on SourceForge is interesting, because results are sorted based on " project activity ", which means the projects with active developers, many downloads, etc will be on the top of the list.


You’ll find many ASP.NET projects on SourceForge, just type " ASP.NET " in the search or browse to them via the " Programming language " branch in the software map. In my experience, the other sourceforge-like hosting services do not contain many ASP.NET projects, so SourceForge would be your main interest here.


Freshmeat


Freshmeat.net is a directory of open source projects. At first you may find it similar to SourceForge, but actually Freshmeat doesn’t offer any hosting services. It is just a big database of open source, and even some proprietary software. The entries on Freshmeat contain links to each project’s homepage (which might for example be hosted by SourceForge) and to download the software. Users can comment and rate each project and the rating is used for sorting projects when displaying search results. Additionally, Freshmeat uses the same Trove software map categories as SourceForge (a system known as Trove).


In short, SourceForge is a good place to develop open source software, but Freshmeat is the right place to search for such, because it contains projects from many places, not just SourceForge. You can subscribe to projects you are interested in, to get announcements of new releases and such.


If you are the developer of an open source project, make sure your project is listed on Freshmeat. There is however no obligation that the developer himself be the person to create the Freshmeat entry. In fact, if you find that some software you use or are interested in is not on Freshmeat, you could add it there and provide a service to the community!


Csharp-source


Csharp-source.net is a directory of open source applications written in C#, so it should be of interest to readers of ASP Today. I personally like the simplicity of this site (and it’s big-sister counterpart for java apps: Java-source). The main page lists one recommended app for each category, and links to a page where you’ll find more apps in the same category. For each app there is a short info and links to it’s homepage. It is a mystery to me on what basis the recommended app is chosen or how the others are sorted, but on a quick glance the ordering seems to make sense, and that’s what counts.


Other Sites


Other .NET focused sites I’ve seen seem to mix freeware and shareware together with open source, so they are not very good directories to search for specifically open source software. On the other hand, if you are the developer trying to get publicity to your project, I’d say that any publicity is good publicity. If you can get yourself listed on places like ASP.NET Web you should definitively go for it. GotDotNet.com, the home of the Microsoft .NET team, may come to mind as a place for .NET code, as that site allows users to upload code, however the focus here tends to be more on one-off uploading of small code to demonstrate techniques or perform some utility task – that’s not quite the same as a full open source project.


In addition to Freshmeat you might hear of some other open source directories. A problem that users often face is to find a good (or the best) application for a given task. Say a Windows user has started to use Linux and is wondering what would be the best program to create a webpage. There are a couple of directories focused on answering specifically these types of questions. Sadly, the only directories I will comment on here, I cannot recommend. A quite popular one is the FSF/Unesco Free Software Directory – this is hosted by the Free Software Foundation (FSF) with support from UNESCO. In true democratic fashion it tries to list every possible alternative out there, and to make matters worse, the apps are just listed in alphabetical order, which kind of renders the directory useless when there are tens of alternatives for a given task. In short, this directory fails to answer the question: "name a good application for a given task?" (Which is precisely what the layout of CSharp-source and Java-source does and the reason I like those directories.)


Another oft mentioned directory is OSDir.com, provided by the O’Reilly network. OSDir has tried to do the right thing, and only include truly good alternatives for each category. But alas, in my opinion the directory doesn’t seem to be very well maintained. For instance, at the time of writing SUSE Linux is still referred to as its own company, although it was acquired by Novell ages ago. Also the categorization is a bit confusing: Since Firefox runs on many platforms, it is not found under Windows applications, which is silly in my opinion. (There is a separate list of multi platform apps.)


In Europe many countries have started similar directories in their own languages, in order to promote usage of Linux and open source applications. In my own experience those can often be better than the two mentioned here, so if you know of such a directory in your country, look it up. For English readers, it seems Freshmeat is without competition. Sadly Freshmeat is so big it can be a bit overwhelming, but the rating system helps to weed out the true gems.


Some Open Source developer tools


You should be able to find many interesting ASP.NET related and other open source projects from the above links. Here I have decided to pick a few developer tools that the open source community has produced. You might be interested in these tools because they are free, because they provide a feature Microsoft doesn’t or because you wan’t to use open source as much as possible for the coolness factor alone.


For example’s sake I’ll also spend a few sentences on a "quick glance" evaluation of the project, in the fashion I have outlined above.


Mono


http://www.mono-project.com/


As you may well know, the developers of Ximian, which was acquired by Novell, have developed an open source implementation of .NET. This is also the only serious competition to Microsoft’s own implementation. Unlike Microsoft .NET, Mono will also run on platforms other than Windows. One could say it actually provides an important cornerstone of the .NET infrastructure, that Microsoft has neglected.


Apart from Windows.Forms, Mono implements practically everything from .NET 1.x. The ASP.NET implementation especially is said to be very good. (I dare you to break it, but if you do, remember to file a bug in the bugzilla!) So if you’re interested in running your ASP.NET website on Linux and Apache, it is completely possible. The only major stumbling blocks for such portability are things you can only blame yourself for, like not being consistent with case-sensitivity of filenames. On Windows you can get by naming a file " Login.aspx " and linking to it as " login.aspx ", but that won’t work if you move to a Unix system. For more portability information, see the Mono ASP.NET FAQ.


On a quick glance evaluation Mono scores very high. First of all, it is the only open source .NET alternative. But of course that is not enough. It is also a stable and fully functional .NET environment, with enough history to give it credibility. The main company backing Mono is Novell, a big company which is also already using it for its own products. And talking about credibility, do you know who the lead developer of Mono, Miguel de Icaza is? Miguel and his friends from Ximian started the Gnome desktop, one of two major desktop environments on Linux and now also used on other Unix environments such as Solaris. Miguel is one of the most respected open source developers, comparable to Linus Torvalds (creator of Linux) himself.


The only theoretical threat to Mono would be Microsoft. Ironically, when Mono was being developed, many in the open source community were against it just because they thought Microsoft’s track record on playing nice was so bad, that we shouldn’t have anything to do with a technology coming from Redmond. At the same time I saw Mono being demonstrated in many Microsoft sponsored events as evidence that .NET is a multiplatform and multivendor technology. Now that Mono is a functional platform however, these attitudes have changed. Mono is getting a foothold in the open source community, while Microsoft has actually hinted at patent lawsuits and blocked Mono out of its Professional Developer Conferences, giving the paranoids a chance to grudge a not so silent "I told you so". I personally cannot see however, that anything could stop Mono. See http://tirania.org/blog/archive/2005/Sep-06.html for a discussion of blocking Mono from PDC, http://lwn.net/Articles/141232/ for other new about Microsoft and Mono, and http://tirania.org/blog//texts/patents.html for a wider discussion about patent concerns in general, At best, Microsoft could weaken the interoperability between the two platforms. It wouldn’t be the first time Microsoft did that, but on the other hand they might just do more harm to themselves by choosing that path.


Conclusion: Mono is here to stay. Indeed, you might want to test your .NET apps on Mono, in order to ensure you’re app is portable. Even if you are not planning to ever use Linux, you never know…


SharpDevelop and MonoDevelop


http://www.icsharpcode.net/OpenSource/SD/


Especially ASP.NET programming benefits greatly from using the graphical designer in VS.NET. But you might not have Visual Studio available, for whatever reason. With the advent of the new Express Edition of Visual Studio 2005, pricing shouldn’t be an issue anymore, but for some, free is always the cheapest alternative. (Of course, you might want to choose an open source IDE for purely ideological reasons.)


SharpDevelop is a very good open source Integrated Development Environment . It comes with Wizards, a Class browser, code completion and syntax highlighting. Sadly, the one feature still missing is a graphical designer for ASP.NET. So I guess we are stuck with the one true Microsoft IDE if we want that. Another major feature lacking in SharpDevelop is integrated debugging and integrated support for source code management, which will both be in the 2.0 release.



Figure 1. SharpDevelop is an Open Source IDE for .NET.


As for the quick glance evaluation, there really isn’t much to say. There aren’t many alternatives, so either you like SharpDevelop or you are stuck with Visual Studio. (Or some other proprietary IDE such as Borland C# Builder. SharpDevelop also provides both importing and exporting to and from Visual Studio projects. This is a very good thing, because if you decide to go with SharpDevelop, you will always have a fallback route if you run into problems later. Thus the risks with trying out SharpDevelop are virtually negligible.


Since SharpDevelop is based on Windows.Forms, it will not run on Mono and thus not on Linux. MonoDevelop is a port of SharpDevelop that uses Mono’s own GTK# widget library instead. Now you have an IDE that runs on both Windows and Linux, but in the course we also lost the graphical GUI designer, which was designing Windows.Forms GUIs. A GTK# designer does not exist yet, so MonoDevelop is basically an IDE for those that are prepared to write their code by hand. On the upside, MonoDevelop integrates nicely with the Mono debugger, which is a clear plus. MonoDevelop seems to be somewhat of an official IDE for the Mono platform, which gives it some credibility and a hope of a brighter future.


NUnit and NUnitAsp


http://nunitasp.sourceforge.net/


One tool that also comes integrated with SharpDevelop is NUnit. NUnit is a .NET version of a very popular unit testing tool for Java: Junit. Unit testing is a very simple kind of testing, where your software component is loaded into the testing framework, and you provide a series of tests like "The method Sum() with inputs 2 and 3 should return 5". In fact NUnit might be the most popular open source .NET tool that exists. And even if the new Visual Studio Team System is going to include some nice testing tools of it’s own, most of us will probably continue to run a less expensive version of Visual Studio and integrate NUnit with it instead. For those of you who want to do just that, you should see TestDriven.NET, which is a VS.NET plugin for integrating NUnit.


Testing your business logic by way of calling some methods is one thing, but testing your actual .aspx pages is a bit more complex. You might for example want to test whether some text exists and is visible on the page. Input is given via form fields or by clicking links. An extension to NUnit called NUnitAsp, provides a way of testing your ASP.NET site running in the server environment and running the tests as if using the website with a browser.


As I said, NUnit might be the most used open source .NET tool today. As for NUnitAsp, the SourceForge project has 4 developers, which is pretty good for a project this size. The project has been in a stable state for years already. The last release is from 2004, but there is activity in the CVS repository, so the project isn’t stagnated. Most importantly, by a simple Google search you can verify that it is well known, mentioned in many blogs, well documented and in all aspects seems to be a solid tool you can rely on.


Other tools


Obviously there are plenty of other open source tools a developer might find useful, the above are just some that are especially interesting in an ASP.NET context. One common need many readers will have, is source code management. For the moment, Subversion is probably the way to go, it also has a good Windows client called TortoiseSVN. For the future, keep an eye on the topic of distributed source code management.


Conclusion


In this article you’ve seen some of the ways that you might evaluate an open source project. One serious problem with open source is that for a given task there are often way too many apps to choose from. I have outlined a process to weed out the most promising apps on a quick glance and explained what to pay attention to when choosing the one you want to start using. You’ve also seen some of the places you can use to search for open source projects. In particular, SourceForge and Freshmeat are the two biggest sites to find open source software, while Csharp-source is .NET specific. These are also good places to promote your own projects on.


Finally, I’ve introduced you to some open source .NET tools, namely Mono, SharpDevelop and the NUnit and NUnitAsp testing tools.


The final article of this series will examine open source licensing.

Founders at Work

Commenting is closed for this article.