I was pointed to this interesting article by Roger Whitney. It's a lessons learned paper dealing with Open Source development. There's a bunch of good stuff on things you ought to know about OS projects before you jump in - here's the most interesting (to me, at least) bit:
C/C++ is no longer a viable development language. This may seem obvious to some people, and other people may recoil in shock. In college/grad school we were taught to believe that C/C++/Java, etc are the best languages in the world, so it was a very difficult transformation to accept that these languages are not viable development languages for application level work.
C++ is seen to be great for execution speed, static binding, object orientation, templates, and more. However, it is absolutely lousy for development time. Here's why:
Java somewhat fixes the learning curve and the standard library problem, but still has the other two problems, and in addition requires the user to download the JRE before you can run any java program (a 25 MB separate install). One of my previous jobs had us trying to deploy a client-side Java program to much failure because of this hurdle. Server-side programming doesn't have this problem so Java may not be such a bad choice for that.
- It requires compilation " as your code grows larger, the wait time to see if your code works increases. This delay directly affects how fast your code is developed.
- It's really, really, really hard for people to learn it, and this directly impacts the number of developers you will have on an open-source project.
- It uses static binding (Isn't that supposed to be a good thing?)
- There are no standard libraries for C++, so there's a lot of reinventing the wheel. (Yeah, there's the STL and others, but each one has a huge learning curve associated with it).
if you want to get somewhere in a reasonable time period, pick a dynamic language. If you're going to do that, look at Smalltalk.