Software That Lasts 200 Years (2004)
bricklin.com
bricklin.com
Software is evolving because we have new problems to solve. I'd point out that Unix is 50+ years old and still going strong and used daily by millions of people.
I don't get where the assumption that these are timeless structures comes from - the New York City Subway system is falling apart and in need of continual maintenance. Roads constantly fall apart and need to be re-surfaced - it's not like we use incredibly elegant long term materials, we use blacktop because it's cheap now. Bridges and tunnels are being maintained all the time.
For example, the assumption that old bridges still solve modern problems. Compare:
https://www.youtube.com/watch?v=o4eM0qoUhaE https://en.wikipedia.org/wiki/Puente_Romano_%28M%C3%A9rida%2...
On the close to 2000 years old Merida's bridge, only peatons are allowed nowadays. If you tried to run a traffic of hundreds of 30tn trucks per hour on it, it would soon fall into pieces. Also, you have to take into account the maintainance that has been added to it during the ages (for example, the banks have grown closer and the extremum piles are now under ground).
http://scicomp.stackexchange.com/questions/3462/increasing-t...
“Ever since those beginnings in 1977, the TeX research project that I embarked on was driven by two major goals. The first goal was quality: we wanted to produce documents that were not just nice, but actually the best. (…) The second major goal was archival: to create systems that would be independent of changes in printing technology as much as possible. When the next generation of printing devices came along, I wanted to be able to retain the same quality already achieved, instead of having to solve all the problems anew. I wanted to design something that would be still usable in 100 years. ” – Donald E. Knuth: Digital Typography, p. 559 (quoted from http://de.wikipedia.org/wiki/TeX )
https://en.wikipedia.org/wiki/TeX
"Even though Donald Knuth himself has suggested a few areas in which TeX could have been improved, he indicated that he firmly believes that having an unchanged system that will produce the same output now and in the future is more important than introducing new features. For this reason, he has stated that the "absolutely final change (to be made after my death)" will be to change the version number to π, at which point all remaining bugs will become features.[11] "
http://www.ntg.nl/maps/05/34.pdf
"I have put these systems into the public domain so that people everywhere can use the ideas freely if they wish. I have also spent thousands of hours trying to ensure that the systems produce essentially identical results on all computers. I strongly believe that an unchanging system has great value, even though it is axiomatic that any complex system can be improved."
"Of course I do not claim to have found the best solution to every problem. I simply claim that it is a great advantage to have a fixed point as a building block. Improved macro packages can be added on the input side; improved device drivers can be added on the output side. I welcome continued research that will lead to alternative systems that can typeset documents better than TEX is able to do. But the authors of such systems must think of another name.
That is all I ask, after devoting a substantial portion of my life to the creation of these systems and making them available to everybody in the world. I sincerely hope that the members of TUG will help me to enforce these wishes, by putting severe pressure on any person or group who produces any incompatible system and calls it TEX or METAFONT or Computer Modern — no matter how slight the incompatibility might seem."
The example from the article about accounting software is another good example: legal requirements change, which means that the software must also change; book keeping software from 30 years ago is utterly useless today, not because it wasn't done well, but because too much changed.
Another example from the article: parking tickets. There were no parking tickets 100 years ago (80 years ago according to http://theexpiredmeter.com/2009/08/first-parking-ticket-issu...), and I doubt that however traffic looks in another 100 years, it will have not much in common with our current structure.
My takeaway is that we shouldn't worry too much about longevity of the software; the more important aspect is the data formats. They should be open and well-documented, so that folks in the future have less trouble dealing with our data footprint. Maybe our data will still be of value in 200 years; at least some of it, and at least a bit. But I doubt our software will be, regardless of how we write it. I do agree with his points about the need for better review processes and oversight.
Update: Forgot one important point: Input method and user input devices change a lot. Who wants to use software today that assumed a max screen resolution of 600x400 or even lower? And no mouse, no touch screen, no audio or image or video input, even it would be highly desirable for the problem domain?
Computer programs on the other hand are driven by fashion, and evolve rapidly. Digital documents created by programs will cease to be readable when the programs that could read those documents fall out of fashion, but this is not due to any short-sightedness by the developers of these programs, but rather by users that choose to prefer new (more fashionable) programs even when these are incapable of reading the documents they previously wrote.
Read more about SEMAT here http://semat.org/
Stuff like this is a prerequisite to creating software that is done, and can be used for 200 years without any substantial change.
Could Java ever get to that stage? What about some of the JVM ecosystem such as Tomcat or Camel?