"But you have the source!"
I heard that statement a little over a month ago at the Alt.Net Open Spaces event in Seattle. It's no secret to those who know the community, that open source technologies are at the very least promoted and in many cases you'll find many open source project committers within the Alt.Net community. Heck, David Laribee, a founding member if there is such a thing, in a post defined Alt.Net as (emphasis mine):
- You’re the type of developer who uses what works while keeping an eye out for a better way.
- You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
- You’re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
- You know tools are great, but they only take you so far. It’s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles (e.g. Resharper.)
The quote, and many like it, came in a session titled "Mature Open Source projects versus first generation Microsoft projects". The discussion centered around why some (many) developers, managers, and executives feel comfortable choosing a brand-new Microsoft product when a far more mature open source alternative exists. One the fears surrounding the adoption of open source is the lack of surety that open source project will exist in perpetuity. One needs to look no further than two projects, NVelocity and NDoc, to find historical evidence of an open source project vanishing. The main counter-point to that argument, and many others, was the quote above, that with open source, you were never truly left high-and-dry, since you had the source.
It's a noble thought, but really, who wants to manage another codebase in addition to their own? In fact I turn to open source project many times so I don't have to write my own code. Why re-invent what someone else has already done and guided to maturity? The idea that I can compile and manage another, possibly large, and probably complex codebase is hardly a comfort to me. It wasn't until a few weeks ago that I realize that the open source pundits were correct.
I have been working on a project for the last year that has, as of two versions ago, started using Watin to automate the downloading of a file from the internet. Watin is a testing framework but is used by many to automate business processes, which is what I use it for. If you haven't checked it out yet, it's beautifully simple.
Watin provides handlers to download a file, however, the code was hanging at the point where it should've cleared the download. I looked at every documentation page, blog post, and blog comment I could to see if I was missing something. My usage was correct. So I dug in a bit further using WinDowse to find the handle of the button that should be clicked. As it turns out the handle of the Save button in a FileDownload Dialog changed from 4424 to 4427 in IE7, who would've guessed it right? Well, since I had the source I went in and made the change, and voila, I'm back in business.
It gave me some confidence that if an open source project does cease, I can pick it up and patch it up. I still don't want to manage multiple codebases from many different source, but in the end the pro open-source guys were right, "You have the source!"