Open Source versus Source Out in the Open
An interesting point came up during my talk at Deeper In .NET on Saturday. (Korby Parnell has a flattering writeup as does Avonelle, BTW)
There's a difference between "Open Source" and "Source in the Open."
I've seen folks copy and paste directly from Google Groups and when prompted for a bit of code's origin they announce "It's Open Source."
Despite what many folks may have gleaned from some recent thinking out loud, I'm a fan of Open Source. Within the context of just .NET, I think that the (Windows Development) world is a much better place due to widely successful Open Source applications like NAnt, NUnit, log4net, NCover, Subtext, SharpDevelop, etc.
These projects are great places to learn how to code in .NET.
I made a comment at a conference once, where a lot of folks were badmouthing XML, complaining that the XML spec misses a number of important, albeit edge, cases and that it was generally a mess. Not meaning to be snarky (but succeeding) I introduced our next talk saying "I can't talk to the previous speakers concern about XML, but at Corillian we use success as a metric."
That's really what it comes down to. When you copy/paste/refactor/beg/borrow/steal someone else's code and put it into your application it's important that you know at least two things:
A. What it does.
2. That it works.
When one finds code in production (and you know you've found this yourself) with a link to a Google Group's thread embedded within the code's comments, you might want to pause a moment.
I'm much more likely to snarf an algorithm or technique from NUnit or SharpDevelop because I know those applications work and work well. They are successful by virtue of the fact that they are used. What they lack in Unit Tests they make up in sheer code coverage.
DasBlog has a number of nasty bugs lurking, some we know about, most we don't. However, it's tested every day on this blog and others. I know what it's good at and what it's not.
When an application is a trusted, used, successful "Open Source" Application, chances are it's code is more trustworthy than "Source in the Open."
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
Except when they're not. For example, until the most recent drop, Log4net was so full of egregious violations of the .NET naming guidelines that it made my eyes burn to look at.
This phenomenon seems to be most common in C# ports of formerly Java code bases.
I agree it's important to understand what the code is doing. No way around that.
I am leading the Commerce Starter Kit Open Source project (http://www.commercestarterkit.org) and I have to say that it's been a crazy freakshow since day 1. Over half my time goes to pimping OpenSource as a concept, and pushing some in the community to "contribute not complain" when they see things they don't like. Most are quite receptive and tend to "get it" when confronted with the notion that they can directly impact a large-scale project.
OpenSource in the .NET community is sort of mangled between, just as you say, "Source in the Open" and true OpenSource. Some say the definition is in the licensing (OSI - the "Open Source Iniative" will let you brand yourself as certified if you use one of their licenses. We use the Mozilla 1.1 so I spose we're certified), others will look to your source code management, and yet others (the zealots) will only consider you OpenSource if you are using Linux/Apache/MySQL/PHP (or the like).
All are welcome to check us out and contribute back. I am utterly stunned at how quickly, with the help of the community, we have put together a ROCKIN eCommerce tool. I sort of hate to call it a Starter Kit because it's rapidly moving beyond that. To see the latest: http://dev.commercestarterkit.org.
Good post Scott- also wonderful work on DasBlog. I use it and completely love it!
We write blogs every day (well some of us) and often we're doing it to answer a question or solve a problem someone posed us (hey, maybe you guys don't do this but walk with me on this).
A user will ask how to do something or we'll respond to some post in a newsgroup on a request or something just doesn't sit right with us and we'll write some tests to prove the right way to do it. Whatever the reason or motivation, that's what drives us to write some code specifically for a blog post.
A blog post that gets googled.
So I have to take exception that while my blog posts are not being used every day like DasBlog or NUnit is, it was put on the Earth for a good reason and I did spend some time writing it (and sometimes even writing tests around it) and by all virtues, it's valid. Will I stand behind any code you find on my blog written by me? Absolutely. Will it blow up and screw with your network. Maybe. But I for one will be sure to stand up and say it did as I'm not ashamed.
Anyways, just wanted to mention that some of us bloggers out there do post code and it is "Source in the Open" rather than "Open Source" but it does carry some sanity behind it.
Comments are closed.