views:

838

answers:

16
+17  Q: 

Comb Technology

This question is about the rare case of software that is neither in active development nor moribund.

First, why is it so rare for software to ever be finished? It seems "no longer in active development" is often synonymous with "moribund". Second, what are exceptions to this? Donald Knuth's TeX is a famous example. It's been untouched for years yet remains massively popular. Knuth even has a cash bug bounty, which is never claimed anymore. There are probably various unix utilities like this, used ubiquitously yet with the source code in stasis. I'd like to collect some interesting examples and commentary on why this is rare.

Come to think of it, software is not unique in this regard. I'm reminded of this gem from The Onion:

http://www.theonion.com/content/node/29571

In fact, I propose a new term for software like TeX that is ubiquitous yet no longer under active development because it's bug free and just works: "Comb Technology".

What are interesting examples of Comb Technology in software?

 

+7  A: 

why is it so rare for software to ever be finished?

Because, as the world always changes, requirement specifications always change.

Second, what are exceptions to this?

There are exceptions because there are indeed a few problems that are so circumscribed and well defined that their specifications are unlikely to change anymore.

I guess another example are the BLAS subroutines for linear algebra. I don't think they have been "untouched for years", but surely they are well-established and unlikely to undergo substantial changes.

Federico Ramponi
I don't agree that BLAS is a good example. There are new implementations like CUDA BLAS or new version of ATLAS taking advantage of SSE.
vartec
+3  A: 

http://www.zlib.net: Current release, zlib 1.2.3, July 18 2005

chaos
Do I probably use zlib without even knowing it? If so, this is an especially good example.
dreeves
It's extremely likely.
chaos
+4  A: 

I second Frederico's answer: the world changes, software adapts.

TeX is actually a pretty good example of what happens if you don't adapt: working with non-english text is a PITA, Unicode is a PITA, OpenType is a PITA, the fact that I have to compile my documents multiple times to get all the indices and references and bibliographies right is a PITA.

All those decisions made sense 21 years ago, but some of them don't anymore.

Unix tools are another example: many of them still assume that all input and output is 7 Bit US-ASCII. I can't even spell my name with that!

Jörg W Mittag
As for compiling multiple times, check out latexmk. Also note that LaTeX is a set of macros built on top of TeX.
dreeves
@Jo:rg, what do you mean, you can't spell your own name in 7-bit ASCII?
paxdiablo
You should check out XeTeX/XeLaTeX, Jörg. It's the TeX engine, w/ the LaTeX document preparation system, modified to use OpenType and handle Unicode. Input is UTF-8. Things like quotes, dashes, and anything else Unicode are *quite* easy to use in it. I use it for all new documents I create.
Michael Trausch
@Michael, what you're saying is that Tex is actually an example of a tool that is no longer useful in its original incarnation as this discussion want us to believe. So even though the core source code may be unchanged we're adding layers around it to achieve a tool that is useful in 2009.
Peter Lillevold
+2  A: 

When something works well enough, why alter it?

Paul Nathan
Right, so it's surprising that it's (apparently) so hard to find examples of this in software.
dreeves
A: 

software with no bugs is obsolete.

software that requires no new features either supports a stagnant niche, or is unused.

sometimes, even the best developers get bored with the same old software every day, and just quietly vanish

Steven A. Lowe
I guess your claim is that there genuinely are almost no examples of "comb technology" in software. What examples come closest?
dreeves
@[dreeves]: it is rare to find a product still being used with a static source base. It is less rare to find a product still being updated but with an interface the hasn't changed in decades, even when it should. Unix/Linux comes to mind... ;-)
Steven A. Lowe
IIRC, TeX has been mathematically proven to be bug-free. It's obsolete?
RCIX
@[RCIX]: no, but having a sense of humor on SO may be
Steven A. Lowe
+2  A: 

Arguably all that Cobol code that ran unchanged until the year 2000 was an example of a near miss, comb-technology-wise.

As an even more ludicrous example, when I was young I wrote an MS Access database application for my grandfather who was (literally) a traveling salesman. It kept his customer list, let him take notes on them, schedule future visits, and implemented a crude (non)solution to TSP (I got a lat-lon database from the US Geological Survey and when he chose a customer as a destination, it simply listed all his other customers that were "on the way" -- within an ellipse with foci at the start and destination). He used that for well over a decade, with me never touching the code again (I mean, for God's sake, it was Visual Basic and MS Access), until he retired.

Anyway, I'd rather hear examples of "comb technology" that is also actually popular (like combs!), but perhaps we're scraping the bottom of the barrel here.

dreeves
+2  A: 

Software is really a collection of instructions for a computer. The capabilities of computers and other software is constantly changing, so new versions are made to expose or integrate with new capabilities.

A more apt analogy than simple tools like a comb or razor may be organisms adapting to their environment: constantly evolving to stay competitive. TeX is sufficiently well adapted and its market is sufficiently small and static that it doesn't need to adapt. But even a bug-free web browser from 1998 would not survive in the mainstream today.

dmo
That's a great point. Though, still, I suspect there are more interesting examples of non-evolving yet very well adapted software. If I knew any biology I could probably point to more examples in nature as well -- certain bacteria perhaps.
dreeves
Maybe Archaea? http://en.wikipedia.org/wiki/ArchaeaLike biology, the software that can survive, unchanging is going to be relatively simple and existing it a small or stagnant market. I'm sure a lot of process control software falls in this category.
dmo
+1  A: 

If It Ain't Broke, Don't Fix It.

I once learned that the hard way. We had a hardware + software prototype set up in an apartment, and wanted to show it to a potential investor.

The investor was on his way (pre-cell-phones), and my co-worker thought he would neaten-up the workbench.

Then we decided to try the walk-through one more time. We started it up - or tried to - and got NOTHING.

In straightening up the workbench, the power-supply foil touched the equipment rack - a diode went "click", and we were sunk. That is a miserable feeling.

The investor arrived, and that's when I first heard that expression.

So if it's good enough, leave it alone.

Mike Dunlavey
Ha, great story! Though I'm not sure it's germane except as more reason to be surprised that examples of "comb technology" are so few and far between.
dreeves
@dreeves: I know. I couldn't resist.
Mike Dunlavey
+4  A: 

Well. Here's an example. Not terribly great, though.

Tk

Yes, it gets some occaisonal attention because it 'looks dated' and so forth, but really, it has existed with very little change for a very long time. Here's why, I think. It's simple enough to throw at many problems and rich enough to solve them. It's portable, practically out of the box and has no external dependencies. Yet it's modular in such a way that it can easily adapt or consume new technologies as they become available. It was quickly ported to Cocoa, for example. It adapted to Unicode and OpenType. Simple add-ons can give Tk apps international input with little extra work, even on platforms with no support for it.

Tk has changed, in the ways combs have changed. As new materials become available, new manufacturing processes, the combs have taken advantage of that, but the interface has remained unchainged because it was already so close to perfect.

TokenMacGuy
Great answer; just the sort of thing I was looking for! I'm surprised at how few answers along these lines people have come up with so far...
dreeves
+1  A: 

My first thought, was TCP/IP and UDP. Any changes to these protocols would have serious and immediate consequences on a huge number of computers, so the only way the could be changed is if they are completely replaced. The best illustration: IPv6 is still virtually unimplemented.

In fact, that is also the justification for freezing new features in TeX. The only way to ensure perfect backwards compatibility is to freeze the code. New versions of TeX have been created to address changes in modern computing environments, but they must not be called TeX.

Jon Ericson
Ah, I hadn't thought about including protocols in addition to software itself. The real world analog to TCP/IP might be not combs but... I'm drawing a blank... any real-world protocol, I guess. Traffic laws, social institutions and ceremonies/traditions...
dreeves
+1  A: 

Why are you assuming that software that is not in 'active' development is rare?

Mainframes and iSeries (AS400) boxes are occasionally getting upgrades to their OSes, but I saw some propriety stats that showed that very few customers were even close to being up-to-date. The older versions work well enough, keeping up with the changes was unnecessary work.

It's hard to estimate how much of the world's core data is stored on those supposed 'legacy' technologies, but it is certain that it is huge. Twenty years ago, we were going to get rid of them, but most of those systems are still happily running somewhere. They may be more expensive than some of the newer technologies, but they have something huge going for them: they actually work! Yes, they are hard to change, but that turns out to be a good thing.

As for finishing, it is a relative term. Things in active use, like software, buildings and houses are never really finished. You're either up-to-date on the work or you're lagging behind.

Paul.

Paul W Homer
A: 

I guess that "notepad.exe" is an example too.

igors
i think they changed it for Win 7
m_oLogin
Notepad changes with every release of Windows - e.g. Unicode support - but because the interface doesn't change nobody notices. http://blogs.msdn.com/oldnewthing/archive/2004/05/25/141253.aspx
Dave Webb
+7  A: 

A wonderful comb technology example: Windows XP

Huge market base, wide acceptance, very mature, few complaints. All attempts at replacing it are met with extreme backlash. I think it's an awesome example. We all know that it COULD be better, but actually making it better is always a bitch.

TheSoftwareJedi
+2  A: 

"ping" would be from the ice-age (in IT-years). The implementation only changes depending on the underlaying networking stack (which varies with the OS).

So there you have it, software changes based on new needs, no exceptions (If there isn't a need to change then nothing will, ask mother nature)

thijs
+3  A: 

How about file formats? mp3s and jpgs have been around for ages now (even though there are better compression formats out there..), they are combs used everywhere.

m_oLogin
+2  A: 

Asking this question is to miss the point of the Onion poster within it, surely?

The thing about toothbrush & razor technology is that it's all bullshit, every last bit.

Toothbrushes worked just as well without a small kink in the handle. I use mine for a grand total of a couple of minutes a day, ergonomics are entirely irrelevant.

Toothbrushes worked just as well before they had little zig-zags cut into the bristles.

Toothbrushes worked just as well before they had coloured bristles to tell me when to get a new one. I managed to deduce when to buy a new one all by myself.

Toothbrushes worked before they had little rubber bits on the back for cleaning your tongue. If I have a sudden compulsion to clean my tongue with anything other than mouthwash (maybe I'd like to check my gag reflex?), I'll just use the bristles.

Need feeling foolish enough for buying into toothbrush adverts yet? Allow me to present the source of my unashamedly swiped rantings.

Back to software then: Jeff covered this on Coding Horror I'm sure, but how much of the development of your favourite software have you used? You've paid for all of it; you demand all of it; you complain when there isn't an endless torrent of it... but why? How much continuous development do you actually need? How many bells-and-whistles that you got exited over have actually made a difference to you?

Why is a need analysed, solved and then left alone a bad thing?

Right, I understand the mockery in the Onion poster and your last point argues that it often applies to software as well (though usually that's probably too harsh). I stand by the term "comb tech" even though I don't really agree that the changes in non-comb tech in software tends to be superfluous.
dreeves