Morons on Open Sourcing
Posted December 22nd, 2002 @ 05:25pm by Erik J. Barzeski
Charles Connel uses an article entitled "All Source Code Should Be Open" to put in his bid for "Idiot of the Year" as far as I'm concerned. This article illustrates such a tremendous lack of understanding, lack of thought, and lack of the most common forms of common sense that the author should be open sourced. After all, maybe we'll be able to work out all the bugs in his thought process.
The article starts with an assumption: "Most software is poorly designed and built." Frankly, I don't know that that's true. Most of the software I use day to day is quite enjoyable, quite stable, and fairly pleasant. Most of my software adheres nicely to Apple's Human Interface Guidelines. But I'm smart enough to realize that I don't run most of the software available, for all OSes, and so I'm in a rather limited position to claim whether "most software is poorly designed and built."
I am, however, in a position to point out the obvious. Let's take the article piece by piece. The basic tenet of the article is that by open sourcing all software - packaging the source code with the binary - software quality will rise because computer programmers will be more easily held accountable for their bad code. Let me be clear: he is not saying that every application should be GPL'd or whatever. Just that the source should be available with the binary.
Let's consider the first obvious point: go to sourceforge.net and find ten projects you'd consider "well designed and built." There are very, very, very few. Many less, in my opinion and the opinion of many (most?) than in the world of closed-source software (by percentage, by number, whatever). It's plainly obvious that "open sourcing" software does not lead to increased quality.
"Because few people ever see their immediate product (the source code), what would motivate engineers to do better? The answer is that all source code should be open and included in every software release. This single policy change would have a profound impact on the quality of software systems worldwide."
No, it wouldn't. Does my mom give a rat's ass about Microsoft Word's source code? Hell no. Do I? Hell no. I've got all sorts of free, open-source applications on my computer, and frankly, the only source code I look at is the source code I wrote (and Adium's, as I am contributing to that project). I'm a programmer and even I couldn't care less about the source code to Mail or Calculator or AOL Instant Messenger or SpamSieve or BBEdit. Would it be nice to have? Yeah... so I could steal bits and pieces. But I'm getting ahead of myself...
When you drive across a bridge, its design is open for inspection. You can see the overall structure, the method used to anchor the cables, the thickness of the roadbed, and so forth. If you want a closer look, you can walk the bridge and see more detail. The same is true of housing construction and automobile design. You can see both the outward appearance and the inner structure of these engineering products. With a little effort and some background knowledge, it is possible to independently evaluate the design and construction of these objects. Some internal parts may require extra work to see, such as underwater bridge pilings, roof trusses, or automobile crankshafts. In principle, though, there is nothing to stop you from examining them, and experts routinely do so.
The key here is that "experts routinely" do so. Guess what? Even in a three-person company we have peer review. We're our own experts. Code for Microsoft applications is viewed by tens or even hundreds of people by the time it makes it to the store shelf. It is examined by "experts." Connel totally misses the point.
He goes on to say that "We cannot see whether we are buying junk or quality." Guess what? This is something my mom is capable of figuring out for herself. She can tell crap from the good stuff. She's not an idiot - she's not a software engineer - but she's not an idiot. And frankly, a "good" app can be written in "bad" code. It's highly unlikely, it's been done. Showing my mom source code won't help her to determine whether an application is "well built" or not.
"This secrecy [ed: closed source binaries] is the key reason we have such lousy software." Uh huh, no. Software engineering has been in existence for perhaps forty years. Mechanical and civil engineering have been professions since the first cave man put a log across a creek (the first bridge).
The solution is to release all software with a copy of its source code.
I broke "the rules" on that one by block quoting a line less than three lines long, but I wanted to set it apart because it's so important. Let's repeat that again: "The solution is to release all software with a copy of its source code." This would accomplish nothing helpful. Not a damn thing. The only thing this would lead to would be theft. If I released the source code to MailDrop, a competitor with a slightly tweaked UI and some changed method names could appear within a week.
And any buyer who cared to could inspect the source code to make sure they were getting good quality. Of course, not every software buyer has the expertise to perform this inspection, but some do.
I'm curious how many "some" is to this guy. If we consider all developers that know the language that software is written in, we're looking at about 0.1% of the computer using population for popular software packages. How many software developers write real estate software in C++ enough to be able to evaluate a real estate software package from another company? Three? Four?
In fact, the only people outside of the company who releases the product that would care about the product's source code are the product's competitors. Oh, but Connel dismisses this quite handily:
I can picture software executives everywhere clutching their chests in horror at this proposal. What about intellectual property rights? Wouldn't software companies engage in widespread theft of each other's hard work? No, they wouldn't, because this is already covered by copyright law.
Connel, let me be the first to tell you: they would. And they would not necessarily because people are "evil" but because they're ignorant. People don't view grabbing one line of code from somewhere as "illegal." Even if they did, sometimes people are evil. Can you look at another person's algorithm, go write your own from scratch, and honestly claim that the previous algorithm did not in some way affect how you wrote yours? Even if the competitor's code is bad, you can learn from it to better your product.
Furthermore, there are so many companies out there that aren't Microsoft that people would steal whole chunks of code knowing that they'd never get sued. Does my company, Freshly Squeezed Software, have the time or money to sue anyone? Hell no. If we were somehow "forced" to release our source code, we'd get out of the software development game altogether. It simply wouldn't be worth it at all. We have enough trouble getting our customers to view the tab clearly labelled "Support." How many of those people give a rat's ass about our source code? None. The only people that would care are a) our competitors and b) someone who wants to steal a chunk of our code for their own app (which may or may not "compete" on the whole).
Connel concludes the article by stating that "open sourcing software" is like publishing a novel. He likens the text you see in a Tom Clancy novel to the source code of an application. Sure, he says, you could copy all of Tom's work and publish it under your own name, but Tom would sue you and win.
This only further illustrates how poorly Connel understands the topic. Rather than liken the final, printed text to the source code, I liken the final, printed text of a book to the binary. To the user-visible GUI, and to the "does it work?" of the app. If Tom Clancy novels came with the thousands of pages of notes, a brain dump of his writing knowledge through high school, college, and his professional career, as well as every one of his editors' notes, then maybe we could begin to compare a Tom Clancy novel to source code. Until then, Connel can simply shut the hell up. But he doesn't...
Stealing software is just as difficult as stealing literature, for the same reasons. It is notoriously difficult to plug software fragments into another program, as is shown by the frustrations of the software reuse movement.
To those comments I have only this to say: no it isn't. If Connel is indeed in the running for Idiot of the Year, I expect him to get a lot of votes.
Posted 23 Feb 2003 at 8:35am #
In response to my previous post on open sourcing software, I decided to come up with a list of similar things to including the source code with all software. If software was required to ship with the source code, then:All novels should ship with every ...
Posted 10 Aug 2004 at 8:14pm #
...now I'm truly reaching back to the dawn of time, but when I find a rich vein of thought I like to follow it to the end. Thanks for keeping a great development blog!
You hit the nail on the head with this one, or, more precisely, you hit two nails on the head:
1.)Quality
"Code for Microsoft applications is viewed by tens or even hundreds of people by the time it makes it to the store shelf."
I was a sr. dev at Microsoft - I know this is true.
2.)Competition
"The only people outside of the company who releases the product that would care about the product's source code are the product's competitors."
Why is this so hard for people to understand?
I'm not opposed to open source per-se, but it's patently silly to assume it can replace all other forms of development. If I'm writing a software product for profit why the heck would I want to share the means to produce my product with competitors?
This seems to dovetail with Joel Spolsky's rant about not outsourcing core-competencies.
Posted 22 Mar 2005 at 10:25pm #
Tom Clancy is a crappy arthur who needs to be slapped. His novels are repetitive shit.