Is dead code ever a good line?
An interesting question came up in some after-hours discussions the other day.
Is it ever a good idea to open source a program or technology from within a company if the company is no longer enhancing it? Basically, is dead code ever a good thing for open source?
My immediate reaction to this was no. Then yes. And finally, a definite maybe. (Inspired no doubt by a glass or to of my new fave-rave Cabernet, Parallel.)
So, it seems wise to appeal to the wisdom of the internet. What do you think? (If you want to go comment before reading farther, feel free, I'll wait).
First no. It seems that if a company is no longer interested in a product, then the act of open source is a Monty Python attempt to run away. Companies that open source code, particularly complex code have a obligation to aid and assist the community in working with that code. One of my rules for considering open source (in fact, the principal rule) is "Who cares?". That question goes both ways. Who cares about the code inside the company as well as outside the company. What shape is the code in? Who takes ownership? It seems like the problems are big, bigger than any advantages.
But then, well, yes. If a company isn't interested in supporting or extending a product, why shouldn't the open source community (mythical though it may be) have a shot at it. Aren't there customers that are using it? What happens to them? Can't the mere act of opening good code balance against the lack of corporate support?
Finally (in vino veritas, you know), a definite maybe, surrounded by ifs.
If someone cares that the program continues, and is will to commit their resources, why shouldn't the code be released? If the code is good enough, and doesn't include other properties, why not release it? If a community is available to control and govern it, why not? If the product was good enough to build a market on its own right, why should we believe it can't continue?
So, to both of my readers <grin>, what do you think? Should dead code be released? Are there examples of it working, or failing? And what do you think are the steps that would help us decide?
Comments
Funny, I know a company that did that, it was called Allaire (or was it Macromedia already I can't remember) with a program called Spectra. I think this mostly matters to companies using the product that can't or don't want to immediately switch, but in most cases that I have seen this, the product eventually dies (though sometimes pieces of it make it into another product). This, I think, is the primary point...said company says "this is no longer our responsibility" while leaving some kind of option open to existing customers.
Posted by: Brian Rinaldi | February 6, 2008 12:28 PM
I wholeheartedly, decidely, 100% agree with the definitely maybe stance.
If the product has an existing user base who depend on said product and that user base has the inclination to maintain, improve and evolve the product then it is a total waste for that product not to be opened up.
On the flip side, any users looking for something with said projects features, who decide to adopt said open sourced project (that has no existing os momentum from previous users) are left being noobs trying to make good of a stagnant technology, not the ideal people to take responsibility for the evolution of the project. They would perhaps be better off having gone with an alternative. Maybe.
Good post, but why the ponderation? Where did the thought arise from? Did you have any specific examples in mind?
well, yes, but it's an internal discussion at this point. But historicly, I came up with Ingres, Netscape as positive examples.
Posted by: DannyT | February 6, 2008 1:18 PM
I think the answer is hell yes, particularly in Adobe's case.
I'm going to take a moment and gripe about a typical situation which underscores the importance of this point.
I can think of a few situations in the past where open sourcing the code for the Macromedia Flash v2 (i.e. MX 2004) components would have saved a lot of developers, including myself, from a lot of pain and grief. The fact that Macromedia had abandoned the v2 component code back in 2005 (maybe earlier?), and yet would not open source it, left the Flash development community with little alternative than to use alternate component frameworks because patching up holes in the component framework was simply not a legal option. I remember back when the v2 components were released, a few bright stars in the community found fixes and patches for them, but were unable to distribute this code because of the closed policies surrounding these components. This made a lot of people extremely unhappy.
None of the alternate component sets were satisfactory, because none of them were as complete or feature-rich as the v2 component set. And so we waited for someone, anyone to step up to the plate. We waited for MCOM to complete its vaunted component set, which would supposedly save us all from the bugginess of the v2 architecture. But by the time they were released, Flex 2 and AS3 was just around the corner -- why bother?
I say this not to gripe for the sake of it, the past is the past, but to emphasize that Adobe should never, ever, EVER repeat this mistake ever again. This one goof nearly killed component-based development for the Flash Platform back in the day, only to be saved at the 11th hour by Flex 2 and AS3. So obviously MacromediaAdobe has learned since then.
Many of us cheered a massive hurah when Adobe announced plans to open source the Flex SDK. Alas, we were now saved from a fate worse than death by having to use closed source components. To the Flash developers in the trenches, the ones who sweat blood and tears to make Flash live up to its potential, we are glad not to have to hack our way through closed code with a chainsaw just to build good apps. Thank you for opening up, and later open sourcing the Flex SDK.
But lot of developers working with legacy AS2 code are still not happy. I've even seen development teams violating the EULA and decompiling the entire component architecture, just so they can fix a few things and put out a stable version of their application. So it would be a bit of an understatement to say that it would be a saving grace for them, or if nothing else offer some sort of closure on the issue for the rest of us who have moved on, if the MacromediaAdobe Flash v2 component set were open sourced, at long last. Better late than never.
And while you're at it, Flex 1 & 1.5 and all the cool MM Dev Kit components that rarely saw the light of day outside of Flex 1-land. And if you have not already, please open source the Flash CS3 component SDK as well.
Adobe, if you really want to embrace the open source movement, you need to do this, for your loyal community of Flash developers who have stood by the technology through the years and helped nurture it to what it is today.
Sincerely,
A plea from a passionate Flash and Flex Developer.
Posted by: Joseph Balderson | February 6, 2008 1:20 PM
When you pick an open source product for a business critical application, the risk associated would be very high and you need to make sure there's enough backing to a product so you know it will be supported in the future
The exceptions on the rule are obviously relatively small libraries/apps and products that the company's internal developers know enough about, to fix bugs themselves as they come up.
Posted by: Evert | February 6, 2008 2:00 PM
Your points are correct in my view. Code should be posted up even if it's old/dead. All code is old once you write it. ;) But, my real reason for yes is because over time things will pass, things will fail, but people are reading, learning, and online code repos like Google Code will be digital/technical libraries. Which they already are to most of us.
Posted by: Chris Charlton | February 6, 2008 3:11 PM
I'd say that it really depends and that it's a matter of "image".
One example: I have heard that code quality was a deciding factor when Macromedia opted not to make another version of Generator. It just wasn't feasible to do a full rewrite and the code was (supposedly) too messy to extend. In this case, releasing the code would reflect poorly on the company. I doubt that many would like to see their 4-5 year old code out in the open. As programmers, we keep growing in terms of skills and I personally would not like to have my old spaghetti code out for others to see? Kind of a poor CV that only tells how you were at coding before this software went into "maintenance mode".
That said - as the very "lightweight" programmer I am (AS3 + PHP), I'd love to have a peek at the code behind commercial software from Adobe. I'd probably learn a lot from it.
As for simpler things such as components and frameworks, this makes much more sense. The chance of such code surviving is usually bigger since there will be more people with the required skills to work on it.
J
Posted by: Jensa | February 7, 2008 1:07 AM
... and I love your cat! ;-)
Posted by: Jensa | February 7, 2008 1:10 AM
Not to beat a dead horse, but in the case of the v2 components, anyone with a decompiler can take a look at the source, so the emperor has no clothes anyways, no secrets there. And it won't make Adobe look bad because... well it was Macromedia's fault ;) But what this particular open sourcing will do is allow the development community to take further care of a very cherished code base, and those developers working with legacy code a reprieve.
Posted by: Joseph Balderson | February 7, 2008 7:59 AM
"Is it ever a good idea to open source a program or technology from within a company if the company is no longer enhancing it? Basically, is dead code ever a good thing for open source?"
Code does not break. If you have an application based on a database, and the company that produced that data base no longer wants to support it, you are up a creek. But if the company open sources the database, and that database continues to meet your needs, you are no longer stuck, and the company garners good will, instead of possibly losing a customer.
For example, Microsoft is end of lifing Windows XP, in an attempt to force people to upgrade to Windows Vista. Microsoft has no intention of open sourcing Windows XP, and people are going to be lef holding the bag, or spending a ton of money to upgrade to XP. Windows Vista is not an upgrade to Windows XP and many applications that work on Windows XP will not work on Windows Vista. If you need to do a major re-write to an application to port it to a new operating system, you are very likely to look at possibly an entirely different operating system, such as Linux. This will be a loss of a customer to Microsoft.
Posted by: Gostak | February 21, 2008 4:23 AM