Subject: A few modest proposals for maxima maintinability
From: Raymond Toy
Date: 25 Sep 2001 09:52:07 -0400
>>>>> "James" == James Amundson <amundson@fnal.gov> writes:
James> There has been quite a bit of discussion here about future directions
James> for Maxima. The maintainability of the existing code should be the very
James> first concern. I have a set of modest proposals to enhance the
James> maintainability of the code base:
James> 0) I would like to see the code base focus on ANSI CL first, existing
James> Lisp implementations second.
Isn't already pretty close? CMUCL and Clisp are pretty close to ansi
and maxima works with them. There are some issues on debugging though
because the code uses evalhook which is CLtL1. CMUCL doesn't have
this.
James> 1) Port the build system to mk:defsystem from the Common Lisp Open Code
James> Collection (CLOCC, see <http://clocc.sourceforge.net>.) Right now the
James> build process for GCL is totally different for than that for CLISP and
James> CMUCL. I don't think anyone can build Maxima under anything but GCL
James> right now without looking under the covers.
But for CMUCL all you have to do is read the comments at the beginning
of compile-cmulisp.lisp and you know how to build it. The same
approach works for Clisp.
James> 2) Greatly reduce the number of conditionals (i.e., #+Multics) in the
James> code. Use the "port" package from CLOCC whenever possible. Remove
James> support for PDP10, Multics, etc.
James> 3) Reformat the code to consistent case and indentation conventions,
James> without changing any of the logic. Perform the case and indentation
James> stages in separate steps committed to CVS.
I disagree with 2) and 3). It's way to easy when doing these things
to say "Hey, this is ugly. Let me just tweak it like so." And
suddenly some weird case breaks and no one knows where now because
EVERY single line has been touched. It ain't broke so don't fix it.
However, I have no problems if something is broken and you fix it and
reindent and change case too.
Although I find the code written in a unique style, I can read and
understand some of it. Internals and stuff are beyond me right now
though.
Ray