How do you expect Wolfram Research, Maplesoft and similar deal with such
issues? They must hit them too. I suspect they have a few nightmares with
this, but the best way is probably to have decent documentation. If code is
well commented, and has references to papers where the algorithms are
published, then it sill probably be maintainable.
Actually I've had the same "literate programming", deep documentation
discussion with
developers from Wolfram and Maple. According to them, neither program
has good
internal documentation. They can rely on the fact that they can pay
people to maintain
the source and the "knowledge continuity". I have begged them to improve it.
Why would *I* care? Because of the future. Think about things in the
long term.
There are very few companies that last 50 years. Indeed, Maplesoft was
bought recently.
What would happen if Wolfram and MapleSoft died? Well, in the worst
case, the failing
company just disappears. Nobody can run MMA or Maple code anymore. This
creates
a *huge* black hole in computational mathematics. (Think Derive and
Texas Instruments).
There is the possibility that the code might be released but it is a
very slim chance.
Companies that go bankrupt get their assets sold. The source code would
be the major
asset and there would be a lot of people wanting to get paid so they
won't likely make
the code open source. (Think Macsyma and Symbolics)
But lets assume the best case, that MMA and/or Maple became open source.
Here I have a great deal of experience because *I* got the open source
version of
Axiom which was a very large, very complex program. Axiom was sold
commercially
as "one of the big 3". Internally it was mostly code with about 3 lines
of useful
documentation. The "released" version of the code lacked the front end
(saturn),
the back end (nag libraries), the new compiler (aldor), and required a
running
Axiom in order to build Axiom so it had to be restructured to
self-bootstrap.
The only reason that Axiom came back to life is that I was one of the
original
developers and had a deep understanding of the system internals. I'm not
bragging,
I'm simply pointing out that it is difficult to organize and repair a
"million things of code".
Even with my deep understanding of internals (some of which I wrote) it
still took a
year to make it available. I found that I couldn't understand my own
code and I always
try to write dirt-simple code, unfortunately without comments.
Now imagine that someone handed you the (partial but mostly complete)
source code for
MMA or Maple. And imagine that it contained 3 useful comments.
Is there any chance of rebuilding these programs into runnable systems?
I think not.
Now imagine that MMA and Maple were fully literate and could be read
like a novel.
Which would you prefer?
Which scenerio benefits computational mathematics in the long term?
Now apply the same lesson to Sage. Assume that 30 years from now, none
of the
original developers are connected with the code and there is no one to
ask. It will happen.
Tim Daly
--
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org