Posts
1150
Comments
891
Trackbacks
1
Myths of Software Development: Open vs Closed Source

The thought occurred to me recently that there are some myths about software development that involve misperceptions of the similarities and differences between OSS (Open Source Software) and, well, everything that isn’t OSS (we’ll call it Closed Source Software (CSS) for the hell of it). 

I’m making no claims about how widespread these myths and misperceptions are, or even how accurate they are.  This is my blog, I can make things up if I want to.  But, I think it might be helpful to consider them.

The Stereotype: Machine.Specifications vs Visual Studio

In many of the places that I’ve worked at as a contractor or consultant (the difference is that, as a contractor, the client tells you what you have to do, while as a consultant, they ask you for your opinion and then, generally, tell you what you have to do anyway), there is something like an ‘Approved Software’ list, which, surprisingly, tells you what software applications, frameworks and libraries are approved for use (and which versions, typically).  More often than not, it includes both OSS and CSS.  There are pros and cons to be considered about the value of the existence of such lists, but that’s besides the point here.

Something that I think is probably not on a majority of such lists is an OSS project called Machine.Specifications, a library/framework/whatever ‘headed’ (by which I mean, I think he has a leadership role related to it, but not sure exactly what it is…inventor?  main contributor?  grand poobah?  all?  none?…again, doesn’t really matter) by Aaron Jensen.  What is it?  Well, it is a library/framework/whatever that assists .NET developers to practice BDD.  What is BDD?  Well, you should really just Google the term, but it is a practice/methodology/whatever of software development that revolves around creating specifications (surprise), which are usually created in tandem with business types, and which are executable in code.  And with Machine.Specifications, it means you get to produce ‘pretty’ HTML reports that, well, report on which specifications pass during development.  You can find more information about all of this by, well, using Google.

Anyway, what sort of misperceptions about Machine.Specifications and Aaron can we come up with, as a stereotype here? 

The first might be that there are probably only 17 or 18 people in the wild that actually practice BDD (or something like it), and as such, any library/framework/whatever that exists to assist in this has a user base of basically squat.  I mean, I use it, but that sort of proves the point.  It was created to ‘scratch the itch’ of a particular user or very small group of users, and so is largely irrelevant to almost everyone.

There’s next to no documentation (well, there are all those test cases, sorry, specs in the actual source code, but of course that doesn’t count) available.  The source code itself moves from place to place, which is really annoying.  You used to be able to get it through Subversion, but now it appears that the only way to get the most current version is through git, the latest fad source control tool of the kool kids, and no doubt within the next year or so, when the next latest fad source control tool of the kool kids comes out (mercurial?), you’ll have to get the source that way.  Which also means that whatever version of the code that I am currently using is almost definitely not the most current, and so I won’t be able to do what I need to do.  I actually came up against this recently.  Some blogger had some post about how to get the Resharper tool to execute the specifications, but since I don’t have the latest version, I couldn’t set it up.  As anyone will tell you, I’m not a kool kid, still working with Subversion, and so now I have to pretend to be one and setup git?  Great.

Also, I happened to meet Aaron at the Alt.NET Open Space conference in Seattle during April 2008 through Adam Tybor (whom I know from the Chicago Alt.NET group), and, well, he made me feel old.  Young guy.  One of the ‘Elutian Guys.’ 

So, there’s a nice stereotype for us.  OSS tool created by some young guy to fulfill the need of an incredibly small user base and you have to be a kool kid to be able to get the latest source.  Oh, and I’m guessing there’s no paid support for it either.

On the other hand, there’s Visual Studio.  Now, I’ve never worked for Microsoft (despite what some people think) and so don’t actually know for sure how the team that develops the IDE actually works, other than what I’ve read, or what I think I’ve read, about it.  Which if fine, since we are talking about misperceptions here.

Obviously, Visual Studio has a *huge* user base.  It is definitely CSS and has a team of God knows how many people working on it.  Because it has such a huge user base, and because the team that develops it works within an environment with a pretty significant regression test suite, there is a really good chance that if and when I use the latest version of it (which is whatever the current release is), it will behave as I expect it to. 

There’s also an incredible amount of documentation available for it, both online and offline.  If I have questions about how to use it, I can search through it and usually find what I need.  Even if I get ‘crazy’ and choose to use a CTP or Beta or RC version of it, I can usually find out how it works.  There are almost always QuickStarts to, well, help me start quickly on common usage scenarios.

And there is both paid and unpaid support for it, if and when I need it.

So, there’s another nice stereotype for us.  CSS tool created by a large team to fulfill a very large user base, with a solid source you can get, and which can provide you with good support if and when you need it, which is less likely, since there is comprehensive documentation for it.

Stereotypes are fun, but….

An obvious misperception of OSS is that it has to be produced by the young guy with the small user base.  The obvious counter-example is Linux (or, at least, the Linux kernel).  As far as I understand it, the vast majority of the people who work on Linux are paid to do so, whether because they are from IBM or other sources. 

But there is another contrast that I think is just as important.

The CSS you should be comparing OSS to is your company’s code base

Most of the clients that I have been a consultant/contractor with use a significantly sized code base that is internal to the client and which drives their business (to some extent).  And some of these clients have had a significant user base, i.e., the internal users.  Despite this fact, there is nothing about working with a client with a significantly sized code base with a significant user base of internal users that means that their documentation is well kept, or that the development standards they use follow anything like decent development practices/methodologies/whatever.

Within the .NET OSS space, it is easy to point to certain projects that are almost undoubtedly better developed and better documented.  NHibernate, Rhino Mocks (‘headed’ by Ayende), and StructureMap (‘headed’ by Jeremy Miller) are obvious examples.  Are your coding standards and/or documentation levels of your company’s code base equal to these?  I’m willing to bet, probably not.

In fact, I’m beginning to think that, in terms of quality, one should think of one’s company’s code base as an OSS project that just doesn’t happen to have an OSS license. 

Does this mean that OSS is inherently better?  No, I don’t think so.  But, I do think that the quality of the code that someone produces within the context of the development practices/methodologies/whatever that produces it is largely independent of whether it is OSS or CSS.

posted on Friday, September 04, 2009 8:08 PM Print
Comments
Gravatar
# re: Myths of Software Development: Open vs Closed Source
Aaron Jensen
9/5/2009 12:51 AM
As the MSpec Grand Poobah, I'd be happy to offer paid support for MSpec. What do you need?
Gravatar
# re: Myths of Software Development: Open vs Closed Source
jdn
9/5/2009 11:07 AM
As of now, I don't need anything really. I'm only scratching the surface of what it can do (and if I needed something, I'd try hacking it first myself).

Subversion mirror so I wouldn't have to learn git right now would be nice.
Gravatar
# re: Myths of Software Development: Open vs Closed Source
Aaron Jensen
9/5/2009 4:43 PM
You can actually just go to the github page and click download. Github will zip it up for you and give you the latest bits, no git knowledge required.

That said, when you get some time, I'd recommend at least learning the basics of git, more and more projects are moving there.

Oh and if you do stumble upon any mspec questions, just ask on twitter (if you use it) as I'm pretty good about keeping up on it... (let's see the visual studio team handle that! heh.)
Gravatar
# re: Myths of Software Development: Open vs Closed Source
jdn
9/6/2009 6:43 PM
Oh, I do know the basics of git. Sergio gave a 2+ hour presentation a few months back at an Alt.Net meeting. And I now have a Github account. Super.

But it's just extra things to learn that I don't really want to learn right now. It takes away from things I really want to do. But I know I have to, so, fine, I'll just spin through Jason Meredith's Git series from Lostechies.

But, of course, somewhere in post #2, i get a different output from what is there. Various mucking around and things seem more or less the same to a point. Did I miss a step, was that when the interception was run back for the TD and I was distracted...could probably figure it out, but that takes time.

And though git status is all swell, tortoisegit says some folders are red. Why? Let's right click and try certain things...oh, nice, immediate mis-spellings, that's encouraging. Oh, well, no big deal.

I've still got that nice Visual Studio integration that I have with VisualSVN.. well, sort of. Maybe. I chose the VS plugin with gitextensions, but I don't see what it did. And, ah, crap, I chose OpenSSH, and everything else like gitextensions and tortoisegit likes PuTTY. How do I fix that again?

And yes, this all sounds like "Oh those damn kids with the hair and the clothes", but it's just stuff I don't want to do RIGHT NOW, and would be so much easier if some people with git projects would have a 'more or less' in-sync Subversion mirror to help out the old and infirmed that walk amongst us. Like me.

But, I digress. Let me go git clone mspec. Where's my nurse, my meal needs to be cut up into tiny pieces, damn it!!!!

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 6 and 2 and type the answer here: