June 25, 2007
As part of my new advertising initiative, Microsoft and I are teaming up to donate $10,000 in support of open source .NET projects.
Why am I focusing on .NET open source projects? In short, because open source projects are treated as second-class citizens in the Microsoft ecosystem. Many highly popular open source projects have contributed so much to the .NET community, and they've gotten virtually no support at all from Microsoft in return. I'd like to see that change. In fact, I'll go even further-- I think it must change if Microsoft wants to survive as a vendor of development tools.
Of course, I'm not the first person to make this observation:
- Scott Hanselman
It's a shame that Microsoft can't put together an organization like INETA (who already gives small stipends to folks to speak at User Groups) and gave away grants/stipends to the 20 or so .NET Open Source Projects that TRULY make a difference in measurable ways. The whole thing could be managed out of the existing INETA organization and wouldn't cost more than a few hundred grand - the price of maybe 3-4 Microsoft Engineers.
- Ayende Rahien
The open source community in .NET is big, but it is only a fraction of the size of the open source community in other environments (Java, for instance). This disparity can be explained by looking at the basic facts of the .NET community: there's one central vendor, Microsoft. This puts Microsoft in a position where they have the ear of every .NET developer, team lead and architect. And Microsoft isn't doing anything to foster a healthy OSS community around .NET.
In my company's commercial application we depend upon DotNetNuke, Nant, log4net, NUnit and other open source tools. Those open source projects help support us. In fact, without DNN, we would probably be out of business because our developments costs would be too high. In turn, my company helps support Microsoft through the purchase of licenses and MSDN subscriptions. Yet Microsoft does not complete the circle by financially supporting any of those open source projects.
- Joe Brinkman
I believe it is in Microsoft's best interests to identify a handful of open source projects to support, especially where those projects fill a void in the Microsoft product line, or where the project promotes the adoption of Microsoft products. However, I think the project bears even more responsibility to identify how they can benefit a potential corporate sponsor, and then actively pitch the idea to the corporation whose sponsorship is being sought. The project should care more about developing and growing this relationship than the corporate sponsor, since the project could well die without the support, while the corporation only loses one of many potential opportunities.
Open source software is at its best when you aren't obligated to do anything at all other than use it
. But given the disappointing lack of official support for open source projects in the Microsoft .NET ecosystem, it's time for us to band together and do something
about it. When Anand
mentioned that he could match my $5,000 donation with funds from Microsoft, I was thrilled. This is a fantastic opportunity for Microsoft to step up to the plate and make their support for open source .NET projects explicit in a very public way.
Here are my initial thoughts on splitting up the $10,000:
- Three donations of $2,500 for the most worthy established .NET open source projects.
- Five donations of $500 for new, up and coming .NET open source projects.
I'd also like to see this become a yearly event. As long as my advertising revenues hold up, I'm certainly willing to contribute a percentage back to the community every year.
All of this will be determined by popular vote, of course. Let's start by getting together a list of candidates. I'm soliciting nominations. Which .NET open source projects do you find most useful?
Posted by Jeff Atwood
If we are looking at shear usefulness, I would have to say that the only OSS .NET package I actually use is Paint.NET. It is extremely powerful and well worth your consideration.
In simple terms, my nomination is Paint.NET. Done.
Long list of worthy projects. My votes:
Commerce Starter Kit
NUnit, SharpDevelop and Paint.NET if applicable.
Lucene .NET port. Probably the best open source software library I've used. A few good engineers could build something based on Lucene in a month which would rival something like Autonomy which costs 100s of thousands of $$$ to license. But still there are lots of IR algorithms NOT in Lucene yet, that should get put into it.
"In fact, the whole MS platform eco system isn't suitable for open source tools to become very effective."
*bing*bing*bing* We have a winner.
If you really want to make OSS more prevalent on the .NET platform, this is the problem that needs to be attacked. There are things you can do with money that would help with that, but I don't see chucking money at the most successful apps being one of them.
How about something like setting up a SourceForge equivalent for .NET apps? Perhaps its not the best idea, but that's the *kind* of idea that should be looked at; something that helps make OSS developers more productive, and/or helps interested users find projects they might be interested in.
However, any progress you make is liable to be totally undone the next time some lawyer in some arm of Microsoft gets it in their head to attack OSS again. I don't see anything your $10K is gonna be able to do about that.
I vote for Video Postbox! Not on Sourceforge yet but I know the developer is thinking about opening it up!
So here you have all of these people raving about the OSS projects/products that are making their lives easier and I just have to wonder how many of them have contributed anything at all to these projects themselves?
Do we need Jeff to go out and get a list so that HE can contribute something on our behalf? How many of you who raved about Paint.NET actually clicked on the "donate" link and sent in a few dollars? BTW, I have.
Get off of your lazy butts and do this yourself instead of bashing Microsoft for not contributing to the tools that YOU say are helping YOU save time and money!
"I find Paint.NET userful and think it's a great program. Why isn't Microsoft paying them money so that I can continue to use it for free?". Sheesh!
BTW... can someone please flip Subsonic a quarter so that they can change their "catch phrase" so that it is at least grammatically correct? I'm certainly no expert on grammar but seeing stuff like that just makes me want to run away. Far away...
+1 for NUnit. Besides your noble initiative this post provides an additional benefit: the comments are a great place to get an overview over the latest collection of useful tools. Maybe worth a post by itself...
I vote for NUnit, RhinoMocks and Subversion.
"BTW... can someone please flip Subsonic a quarter so that they can change their "catch phrase" so that it is at least grammatically correct? I'm certainly no expert on grammar but seeing stuff like that just makes me want to run away. Far away... " Matt
Matt Please See:
You've hit the nail squarely on the head. Microsoft doesn't believe in Open Source because they look at Open Source as a competitor to the way they do business.
Every once in a while, Microsoft will start going through the motions of supporting Open Source, but then either Microsoft loses interest or some sort of power struggle took place, and strategic plans get changed. Part of the problem is the natural suspicion that many Open Source people (especially Linux users) have with Microsoft, but much of that is the suspicion Microsoft has with the Open Source community. To many managers at Microsoft, Open Source is a communistic movement which is out to destroy our American/Microsoft way of life.
Other major companies like Google, IBM, and even Sun actually not only provide financial support for the Open Source community (like Google's Summer of Code), but hire employees whose primary job it is just to work on Open Source projects. It's not that these companies are being altruistic. It's that their business strategy is dependent upon Open Source.
IBM is dropping it's own version of Unix, AIX, in favor of Linux. Google depends upon its own versions of the various Open Source tools to keep its servers up and running. And, of course, Solaris was originally based upon BSD, and most of the networking tools Sun needs are Open Source tools.
I'm a little surprised nobody has mentioned DotNetNuke. It's a pretty big one and offers a ton of functionality. Is it that the audience here doesn't use it? It a victim of it's own success and people don't think it needs financial support? I'm curious...
Give 10k to Castle
It's at least 3 products : Windsor, ActiveRecord, Monorail
Another +1 for the Castle Project. I wouldn't want to develop without it.
I see absolutely nothing wrong with putting money toward any OSS that is voted for in your post. Not because of some profound ideology that certain folks think needs to drive every decision revolving around Open Source, but because it is always nice to get a 'atta-boy' in the form of $$$ and certainly can't HURT an Open Source project.
Hate to belittle all the work that's been done, and maybe some can provide comments otherwise but…
Won't Mono fundamentally be killed by Silverlight and Subsonic by Linq.
Obviously these projects still have a need to be supported for existing development. For new projects I don't think I would wander into these territories again.
Other major companies like Google, IBM, and even Sun actually not only provide financial support for the Open Source community (like Google's Summer of Code), but hire employees whose primary job it is just to work on Open Source projects.
Newsflash: MS has been doing this for a while. Take IronPython for example, or WTL or WiX.
That is easy vote, at least for me. Castle
Lucene .NET port. Probably the best open source software library I've used. ..
Bob Stewart on June 27, 2007 07:37 AM
I would second this suggestion as this is a well-done and FAST search engine.
It is currently in incubation under the Apache Software Foundation. Not sure how much their contribution needs are compared to some smaller groups, however.
For open source, that mentality isn't that great: less people are
interested in devoting large piles of time to a project and when
it's released, the majority of developers often won't even think
about looking for an OSS alternative to commercial offerings.
I'm not too sure about that. There are plenty of companies out there (classic example, startups) that would go with the open (and often free) route to getting their offering off the ground. Also, OSS developers don't develop their product with a particular business model or idea in mind, IMO.
The main question I have when I see your post is: how will giving
money to a random set of projects suddenly make people more aware
that one can contribute and use open source code?
Well, for one, what Jeff's trying to do is get a feel for what projects out there people are really interested in. If there's genuine interest in these projects, and Jeff and I both think this is a worthwhile investment of our $$. As far as awareness goes, we're hoping the contributors accomplishments and the usefulness of the project will raise awareness. I don't think that's the only criteria, because there are several OSS projects out there that are not being used heavily, but the sheer concept is so beautiful that there's an entire ecosystem of contributors on that project. So, only time will tell.
In fact, the whole MS platform eco system isn't suitable for open
source tools to become very effective.
I'd have to agree with you - but that's something I'd like to change. In fact, there are teams in Redmond that are working on core components that are also realizing the value behind opening up the source in some cases - the AJAX control toolkit being a great example - http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AtlasControlToolkit
Instead of working WITH that code, MS releases a half-baked beta of
a never-going-to-be-released toolkit called Sandcastle.
I hope you're only exaggearating. Just to set the record straight - Sandcastle will be released.
hmmm, has anyone mentioned NDoc?
I am thinking in a different way.
I would go for " SUBSONIC ", with IronRuby support.
This would give us best of both the worlds. Ruby as well as dotNET.
Dont you think, IronRuby is one type of Open Source Project, officially paid for development to JohnLam.
Since they could licence Ruby.Net and take it further with a new name as IronRuby, then they could too support SubSonic and take it more further.
"I'm not too sure about that. There are plenty of companies out there (classic example, startups) that would go with the open (and often free) route to getting their offering off the ground. Also, OSS developers don't develop their product with a particular business model or idea in mind, IMO."
The main problem is, what's also described by a person earlier in the comments: devoting time to an OSS project is effectively eating away time to do commercial work. if you have to pay some bills, you better have some other sources of money, otherwise you can't work on OSS software, at least not with a lot of time.
So what happens? In java land for example, companies pay large groups of developers money to work on tools for java which are open sourced. The companies then sell services on top of these tools/libraries/servers. So to be able to do so, they provide their own platform for their business model by providing the open source stuff they release.
In .NET land, an ISV who wants to use this model runs into a big wall, which I've described also here in a blogpost I made in last december:
and which is that on average, the .NET targeting developer thinks along these lines:
1) the time I put into something has to be payed
2) if I need something from a 3rd party, I look for a commercial offering, or use MS' tools (first choice)
Maybe some OSS developers start their project just to get started. However as soon as something begins to become successful, you have to provide support, fix bugs, add new features etc. etc. 10 to 1 the vast majority here has never contributed a single line of code to any open source software project and only uses the open source products because they're ..... free (as in beer). When you have to spend time on supporting your OSS project as no-one else does (and believe me, even if a lot of people use your stuff, just a tiny little fraction actually provides patches and new features), you'll have to make a choice:
1) drop it
2) go full scale for it and get some money via other routes
Now, you might argue: this action from Jeff and others can help with 2), but that's not true: there are more than just a couple of projects out there which have some followers and support can become rather intense pretty quickly.
Furthermore, make no mistake: Mono and for example NHibernate are projects owned by a big company (Mono by Novell, NHibernate by JBoss which is owned by Red Hat): you want to donate money to these big corporations? Why? Invest it in tiny projects like NDoc, and even then... it's better to provide a better eco system where Microsoft doesn't step on initiative from the community and simply supports OSS tools out there which are used by more than a few people (like nunit, nant etc.) instead of rolling their own copied incompatible version.
However no sign on the horizon from redmond that you will do that. On the contrary.
"I'd have to agree with you - but that's something I'd like to change. "
I appreciate the initiative, but unless MS changes its own business model (from ISV to service provider) you'll likely meet a lot of closed doors, simply because what MS doesn't control is a liability: vs.net is a commercial product, relying on a 3rd party app is making things vulnerable inside itself, so MS has to roll its own.
You come with an example where MS provides the source. Great example. The thing is though: that's NOT what should be changed. MS should work _together_ with open source projects started by others, outside MS, and make sure these project don't hit a wall because MS thinks they have to do their own copied version of the same project. Until that changes, there's no OSS eco system on MS platforms simply because there's no start with the change of mentallity with the average developer using .net dev tools: they then still will see MS' only tools and if MS doesn't have it, they'll still look for commercial offerings. It's what MS calls the '3rd party oppertunity' which is still there but the particular 3rd party is in most developer's minds a commercial ISV.
"Just to set the record straight - Sandcastle will be released."
No offence, but how long is Sandcastle still in pre-beta stage? How long till some toolkit is released which benefits every single developer out there? It's not that the commercial offerings don't work, it's just that IF you want an eco system for OSS tools, you should support a community OSS offering which was already there: NDoc, not release something of your own. Because by doing that, you will effectively KILL precisely what you want to build up: why would new developers try to re-animate ndoc if MS comes with sandcastle? The answer to that question should be the direction into which MS should look. :)
Jeff, i like your text based ad at the end of your blog. it is not in your face. However, i wonder how effective it is for the advertiser since it is very easy to overlook it.
MS not supporting open source surprises you ?!
Come on! Please respect your readers and loose the ads! Please.
log4net, Mono, Lucene.NET
The open source tools I would like to see on the list of receiving donations: NUnit, Rhino.Mocks and Ahnksvn. I'd really like to see that GhostDoc (http://www.roland-weigelt.de/ghostdoc/) also gets a piece of the cake, even though it is not open source (but still free, as in "free beer").
Isn't building free software on top of a closed platform an awkward solution ? I guess it's an important factor that cannot be overcome by simply throwing money in the game. Who wants to build software on top of a platform whose producer can change the rules whenever they like (and have an history of doing so) ? It's nice to see that they're getting somewhat involved into some open source but I fear their only motivation is to gain traction behind their platform and thus entire Windows product line. Unless they change their politics, I fear they'll only have a marginal support from the community.
Maybe I'm wrong but most FOSS coder I know are educated, know the dark Microsoft history and won't get tricked that easily.
Obviously Mono should be the #1 contender. Aside from the fact that the team has done a tremendous job in porting the framework, there is the added bonus in that Microsoft officially giving money to support the Open Source port of it's framework might put Microsoft in an interesting position should Microsoft ever decide to weld it's "you've violated our patents" sword against the Mono project.
Won't Silverlight kill Mono?
(I know it's not a full implementation, but it's pretty stout).
Won't Linq kill Subsonic?
Personally I wouldn't prefer to donate to something that I will continue to use.
I vote for Subversion.
Maybe we could throw a bit of money at SourceSafe in an attempt to make it even close to par with Subversion?
(And yes, that's +1 vote for Subversion ::: http://subversion.tigris.org/)
MbUnit, too, while we are at it.
I'd suggest using wufoo.com to gather the results.
Great idea; I'll let comments percolate here for 1 or 2 more days, then put it up for vote. I also need to, y'know, collect the money..
Just to point out, JBoss is employing a single NHibernate developer, the rest of NHibernate contributers are not employed by JBoss.
NVelocity (part of Castle now I think)
Castle, NHibernate, SVN, NUnit/MBUnit
Donate it to Jamie's TDD.NET legal defense fund
I vote for Subversion.
Subversion is not written in .NET and therefore is ineligible. Sorry if I wasn't clear about this.
Oren, I wasn't trying to offend you, if I did, sorry for that. My point was that if the NHibernate projects needs money, the project owning company (Red Hat) should provide that money. It's not for nothing that they employ the main developer (which IMHO is a way to support the project with money and to guarantee there's always at least one developer full time on the project, precisely what this initiative tries to accomplish for other projects. It's now up to the mind change inside the heads of all these Morts out there ;))
SubSonic without question.
NDoc because after nearly a year of Sandcastle CTPs it seems MS won't be able to come up with a decent documentation product.
No offense was implied or taken :-)
Open source doesn't need money to become solid, it needs attention.
And nothing gets people's attention like money! ;)
This isn't the only grassroot effort going on to support OSS on .NET. http://haacked.com/archive/2007/06/27/christmas-for-.net-open-source-came-early-this-year.aspx
I really think we can extend the incubator idea Rob had to existing projects and also form some sort of organization to provide OSS mentoring. I'd be happy to teach the hard lessons I've learned, as well as learn from those who've run projects even more successful than mine.
Paint.NET or NUnit would be my nominations.
How about telling us about the details?
What is the purpose of the money exactly? Paying programming hours? Giving a Thank You notice.. here's some money? Paying for some expenses? I mean how long will the money have an effect on the development in terms of incentives. I mean $500 won;t keep some developers cranking code forever.
I have seen some suggestions for projects that are well established. I would rather see more money devoted for young good projects which need more support to stand on their feet.
I nominate MbUnit. It's hands down the best unit testing tool out there.
Are you focusing on projects that don't already have a corporate backer? For example, CruiseControl.NET is pretty well supported by ThoughtWorks.
my vote goes to ItextSharp.
it's a port of the iText open source java library written entirely in C# for the .NET platform. iText# is a library that allows you to generate PDF files on the fly. It is implemented as an assembly.
its really amazing. you can create pdfs on the fly, add digital signatures, ...
novastar22 at yahoo dot de
@Ayende and @Frans
Frans is right about that project owned by a company are stablished now and dont need the money or that must be provided by theirs companies.
ie MONO will dont go slower or faster if they get 2500 more bucks, I think that Jeff want to help comunity driven projects that are "OWNED" by the community.
BTW, some comments suggest soft that is not open source like TDD.NET or Lutz Roeder is clear for the article that them dont qualify
I think Bill Gates made $10,000 in the time it look for this webpage to load.
I think we should consider smaller projects where this could help, not large projects that already have money via corporate sponsorship (like mono) or commercial support (like dotnetnuke I assume).
Actually I think a better idea is to give the money to specific tasks like google summer of code. Just donate the money to the SoC project even. Or propose .NET coding projects on rentacoder.com. You could get a whole new .NET-based operating system developed there for about tree-fitty, I believe.
SourceSafe is such a burden.
Subversion++ (I know it's not .Net. Give me some money an I'll port it to .NET ) ;)
I second MbUnit and raise you the whole Castle project.
Open source doesn't need money to become solid, it needs attention. Just throwing money at open source is what MS is doing for years and it hasn't payed off. The reason for that is that the mentality of the average developer on MS platforms is that you simply pay for controls, libraries and tools and if you work on these products, you get payed.
You won't hear me complain about that mentality, as an owner of an ISV which targets .NET, I like that mentality from a business POV and with me all the other ISV's which do the same: target .NET. :)
For open source, that mentality isn't that great: less people are interested in devoting large piles of time to a project and when it's released, the majority of developers often won't even think about looking for an OSS alternative to commercial offerings.
THATs what's lacking in the MS' ecosystem for open source. You can throw money at it, but that mentality won't change. One of the core reasons it won't change is because MS won't let it be changed: if it does change, their days are numbered.
CMS using ASP .Net, VB .Net and SQL server.
Simple yet flexible.
Very interesting read ... I hadn't heard of almost any of these projects except for Paint.NET and NUnit. In particular, NGenerics looks very intriguing, and the license is compatible with Paint.NET's so I might find a way to use it.
I've tried to make a point of supporting the projects that help me out on Paint.NET. I've sent cash over to projects like famfamfam.com (EXCELLENT and FREE icon libraries) and Window Clippings by Kenny Kerr (http://weblogs.asp.net/kennykerr). Embarassingly I have not yet contributed to #ZipLib, which is an excellent library and is at the heart of the Paint.NET auto-updater. I was going to help out the TortoiseCVS guys with some 64-bit hardware because it didn't work on XP or Vista x64 at that time, but they managed to figure things out anyway (yes, I use CVS, and yes apparently according to Linus Torvalds that makes me "ugly and stupid" :)).
P.S. Thanks to everyone who's mentioned Paint.NET :)
-Rick (the Paint.NET guy)
I nominate the Commerce Starter Kit (CSK) - http://www.commercestarterkit.org - it's a well thought out, well constructed, versatile and generally excellent platform for commercial endeavours. It's one of the few pieces of open source software I know of that can help generate income rather than simply supporting the development process itself.
Well, you're right that you can't easily block the ad.
But, that begs the question - is preventing the ad-blocking a smart thing to do? I rarely click on ads (as I block most), but I *certainly* won't click on ads that prevent me from blocking them.
+1 for paint.net. Greatest program ever.
Add a vote for Paint.NET from me to the list if you'd be so good :)
I'd like to throw Paint.NET in the ring, as well. It seems to be quite well represented, but hey - it's good. Between the UI, the user developed plugin support, a vibrant forum...it's definitely revolutionary. Easy to use, moderately powerful. Paint.NET is fantastic.
Paint.NET for the win :D I've been using this application for quite some time now, and i have achieved lots of nice works! (find them on my dA account!) It has a great UI, a very supportive community, and ofcourse, the ability to create and share plugins, which i use even more then the included effects.
Definitely Paint.NET. The main author, Rick Brewster, has poured time and effort into this amazing program. When I started 6 months ago, I had zilch photo editing/creation experience. Thanks to the friendly community, using Paint.NET is now a daily joy of mine. :)
I think Jeff should decide for the funds he's got.
I think the amounts are pretty low. Maybe people who have built real work on these products can consider making donations. Do your own sums but that could help those who pour in so many hours.
Revival of NDoc
come to mind immediately.
I don't have a list of how to donate but that might be a useful thing for somebody to do. Maybe a web site that gives the developers of this code a chance to show all the work they're doing for free, to help inspire us.
Three donations of $2,500 for the most worthy established .NET open source projects.
Five donations of $500 for new, up and coming .NET open source projects.
* Rhino Mocks
* Screwturn Wiki
Paint.NET is the best an app can be.
laurence timms brings up a VERY good point. While the nature of this list is very developer-centric (not sure if that is a function of the readership or the nature of most open source projects), the CSK is focused on MAKING MONEY for you, and as a developer, your clients. While all of these tools are indeed very nice, and they help me, I don't see them as fulfilling the same promise as the CSK does.
But I'm partial :)
+1 Paint.NET - Simple to use and easy to learn. I use it just about every day and it would have to be one of the most useful free pieces of software I have ever found.
+1 for filehelpers.
Marcos Meli is beyond legendary, and works on a product that will add a lot of value but is very hard to put a ticket price on. He's exactly the sort of guy i'd like to see getting supported.
+1 for revival of Ndoc.
-1 for paint.net. They're just trying to steal from Microsoft's existing MSPaint.exe market. When microsoft do that to us, it's evil. When we do it to them, it's noble. ;-). (Just kidding, i love paint.net)
+1 for smaller donations to more people.
SQLite.net is an excellent open source ado.net provider for SQLite (which is an open source embedded database)
Screwturn Wiki - solid, simple to use and simple to extend
Any support to .net open source would be be most welcome. Even if you're not at the top it's a chance to get some exposure. How about having a few top 10 lists with different categories and donating to the top one of each.
My vote, but I'm biased ;-)
SharpForge - http://sharpforge.org/
My vote for MbUnit Rhino.Mocks.
I think you should start a website with a database-driven list of open-source .NET projects that has a wiki-like UI so anyone can contribute, complete with forums and links to projects on google code, codeplex, and so on. And you should apply to get some of that donation money to fund it. A bunch of loose comments on your blog won't cut it.
I really recommend like below
01. http://www.screwturn.eu/ (It is really awesome mid size .net wiki)
02. tp://www.commercestarterkit.org (with value)
The Castle Project
Namely Castle, Active Record and Mono Rail. They bring method and good sense to development madness.