
\section{What is Maxima?}

Maxima (pronounced \maxp\footnote{The acronym \Max\ is the corruption of the main project name MACSYMA, which  stands for Project MAC's 
SYmbolic MAnipulation System. {\it MAC} itself is an acronym, usually 
cited as meaning Man and Computer or Machine Aided Cognition. The
Laboratory for Computer Science at the Massachusetts Institute of Technology
was known as Project MAC during the initial development of MACSYMA.  The name
MACSYMA is now trademarked by Macsyma Inc.})
is a large computer program designed for the manipulation
of algebraic expressions. You can use \Max\
for manipulation of algebraic expressions involving
constants, variables, and functions. It can
differentiate, integrate, take limits, solve equations,
factor polynomials, expand functions in power series, solve differential 
equations in closed form, and perform many other
operations.  It also has a programming language that you can use to 
extend Maxima's capabilities.


\subsection*{The Dangers of Computer Algebra}

~

With all this marvelous capability, however, you must bear in mind the 
limitations inherent in any such tool.  Those considering the use of 
computers to do mathematics, particularly
students, must be warned that these systems are no substitute for
hands on work with equations and struggling with concepts. These systems
do not build your mathematical intuition, nor will they strengthen
your core skills. This will matter a great deal down the road, especially
to those of you who wish to break new ground in theoretical mathematics
and science. Do not use a computer as a substitute for your basic
education.

By the same token, however, proficiency with computers and computer
based mathematics is crucial for attacking the many problems which
literally cannot be solved by pencil and paper methods. In many cases
problems which would take years by hand can be reduced to seconds
by powerful computers. Also, in the course of a long derivation, it
is sometimes useful for those who have already mastered the fundamentals
to do work in these systems as a guard against careless errors, or
a faster means than a table of deriving some particular result. Also,
in case of an error, fixing the resulting error can often be much
quicker and simpler courtesy of a mathematical notebook, which can
be reevaluated with the correct parameters in place.

But just as a computer can guard against human error, the human must
not trust the computer unquestioningly. All of these systems have
limits, and when those limits are reached it is quite possible for
bizarre errors to result, or in some cases answers which are actually
wrong, to say nothing of the fact that the people who programmed these
systems were human, and make mistakes. To illustrate the limits of
computer algebra systems, we take the following example: when given the 
integral \verb@Integrate 1/sqrt(2-2*cos(x))@ \verb@from x=-pi/2 to pi/2@, 
Mathematica 4.1 gives, with no warnings, \verb@\!\(2\ Log[4] - 2\ Log[Cos[\[Pi]\/8]]@
\verb@+ 2\ Log[Sin[\[Pi]\/8]]\)@ which \verb@N[%]@ evalutates numerically to
give 1.00984.  Maxima 5.6 returns the integral unevaluated, the commercial 
Macsyma says the integral is divergent, and Maple 7 says infinity. (Cite Maxima
Email list here.)
Had the person who wished to learn the result blindly trusted most of the 
systems in question, he might have been misled. So remember to think about 
the results you are given. The computer is not always necessarily right,
and even if it gives a correct answer that answer is not necessarily complete.

\section{A Brief History of Macsyma}
\label{history}

The birthplace of Macsyma, where much of the original coding took place, was
Project MAC at MIT in the late 1960s and earlier 1970s. Project MAC was an MIT
research unit, which was folded into the current Laboratory for Computer 
Science.  Research support for Macsyma included the Advanced Research Projects 
Agency(ARPA), Department of Defense, the US Department of Energy, and other 
government and private sources.

The original idea, first voiced by Marvin Minsky, was to automate the kinds 
of manipulations done by mathematicians, as a step toward understanding the
power of computers to exhibit a kind of intelligent behavior. \cite{MAC-M-124}
The undertaking grew out of a previous effort at MITRE Corp called Mathlab, 
work of Carl Engelman and others, plus the MIT thesis work of Joel Moses on 
symbolic integration, and the MIT thesis work of William A. Martin. The new
effort was dubbed Macsyma - Project MAC's SYmbolic MAnipulator. The original 
core design was done in July 1968, and coding began in July 1969. This was long
before the days of personal computers and cheap memory - initial development 
was centered around a single computer shared with the Artificial Intelligence 
laboratory, a DEC PDP-6.  This was replaced by newer more powerful machines 
over the years, and eventually the Mathlab group acquired its own DEC-PDP-10, 
MIT-ML running the ITS operating system. This machine became a host on the 
early ARPANET, predecessor to the internet, which helped it gain a
wider audience. As the effort grew in scope and ability the general
interest it created led to attempts to "port" the code - that is, to
take the series of instructions which had been written for one machine
and operating system and adapt them to run on another, different 
system. The earliest such effort was the running of Macsyma in a MacLisp 
environment on a GE/Honeywell Multics mainframe, another system
at MIT. The Multics environment provided essentially unlimited address
space, but for various reasons the system was not favored by 
programmers and the Multics implementation was never popular.
The next effort came about when a group at MIT designed and implemented a machine
which was based on the notion that hardware support of Lisp would make
it possible to overcome problems that inhibited the solution of
many interesting problems.  The Lisp machine clearly had to support 
Macsyma, the largest Lisp program of the day, and the effort paid off with 
probably the best environment for Macsyma to date (although requiring something
of an expert perspective).  Lisp machines, as well as other special
purpose hardware, tended to become slow and expensive compared to
off-the-shelf machines built around merchant-semiconductor CPUs, and
so the two companies that were spun off from MIT (Symbolics Inc, and 
LMI) both eventually disappeared.  Texas Instruments built a machine called
the Explorer bases on the LMI design, but also stopped production.

Around 1980, the idea of porting Macsyma began to be more interesting,
and the Unix based vaxima distribution, which ran on a Lisp system 
built at the University of California at Berkeley for VAX UNIX demonstrated 
that it was both possible and practical to run the software on less expensive 
systems.  (This system, Franz Lisp, was implemented primarily in Lisp with 
some parts written in C.) Once the code stabilized, the new version opened up 
porting possibilities, ultimately producing at least six variations on the 
theme which included Macsyma, Maxima, Paramax/Paramacs, Punimax, Aljbar, and 
Vaxima.  These have followed somewhat different paths, and most were destined 
to fade into the sunset.  The two which survived obscurity, Maxima and 
Macsyma, we will discuss below.  Punimax was actually an offshoot of Maxima - 
some time around 1994 Bruno Haible (author of clisp) ported maxima to clisp.
Due to the legal concerns of Richard Petti, then the owner of the commercial
Macsyma, the name was changed to Punimax.  It has not seen much activity since
the initial port, and although it is still available the ability of the main
Maxima distribution to compile on Clisp makes further development of 
Punimax unlikely.

 There is a certain surprising aspect in this multiplicity of versions
and platforms, given how the code seemed tied to the development environment,
which included a unique operating system.  Fortunately, Berkeley's building 
a replica of the Maclisp environment on the MIT-ML PDP-10, using tools 
available in almost any UNIX/C environment, helped solve this problem.
Complicating the matter was the eventual demise of the PDP-10 and 
Maclisp systems as Common Lisp (resembling lisp-machine lisp), influenced by 
BBN lisp and researchers at Stanford, Carnegie Mellon University, and Xerox, began to take 
hold.  It seemed sensible to re-target
the code to make it compatible with what eventually
became the ANSI Common Lisp standard.  Since almost everything needed for
for Macsyma can be done in ANSI CL, the trend toward standardization 
made many things simpler.  There are a few places
where the language is not standardized, in particular connecting to
modules written in other languages, but much of the power of the
system can be expressed within ANSI CL. It is a trend the Maxima
project is planning to carry on, to maintain and expand on this
flexibility which has emerged.

 With all these versions, in recent history there are two which have
been major players, due this time more to economics than to code
quality.  1982 was a watershed year in many respects for Macsyma - it
marks clearly the branching of Macsyma into two distinct products, 
and ultimately gave rise to the events which have made Maxima both 
possible and desirable.  MIT had decided, with the gradual spread of 
computers throughout the academic world, to put Macsyma on the market
commercially, using as a marketing partner the firm of  Arthur D. Little, Inc.
This version was sold to the Symbolics Inc., which, depending on your 
perspective, either turned the project into a significant marketing effort
to help sell their high-priced lisp machines, or was a diversionary
tactic to deny their competitors (LMI) this program.  At the same
time MIT forced UC Berkeley (Richard Fateman) to withdraw the
copies from about 50 sites of the VAX/UNIX and VAX/VMS versions
of Macsyma that he had distributed with MIT's consent, until some 
agreement could be reached for technology transfer. Symbolics hired some of 
the MIT staff to work at Symbolics in order to improve the code,which was 
now proprietary. The MIT-ML PDP-10 also went
off the Arpanet in 1983. (Interestingly, the closing of the MIT Lisp
and Macsyma efforts was a key reason Richard Stallman decided to form
the Free Software Foundation.)  Between the high prices, closed 
source code, and neglecting all platforms in favor of Lisp Machines  
pressure came to bear on MIT to release another version to accommodate 
these needs, which they did with some reluctance.  The new version was distributed
via the National Energy Software Center, and called DOE Macsyma. It 
had been re-coded in a dialect of lisp written for the VAX at MIT
called NIL. There was never a complete implementation. At about the 
same time a VAX/UNIX version "VAXIMA" was put into the same library by 
Berkeley. This ran on any of hundreds of machines running the Berkeley version of 
VAX Unix, and through a UNIX simulator on VMS, on any VAX system.
The DOE versions formed the basis of the subsequent non-Symbolics 
distributions. The code was made available through the National Energy
Software Center, which in its attempt to recoup its costs, charged
a significant fee \verb@($1-2k?).@  It provided full source, but in a 
concession to MIT, did not allow redistribution.  This prohibition seems 
to have been disregarded, and especially so since NESC disappeared.  Perhaps 
it didn't recoup its costs! Among all the new activity centered around DOE 
Macsyma, Prof. William Schelter began maintaining 
a version of the code at UT Austin, calling his variation Maxima. He
refreshed the NESC version with a common-lisp compatible code version.


There were, from the earliest days, other computer algebra systems
including Reduce, CAMAL, Mathlab-68, PM, and ALTRAN.  More 
serious competition, however, did not arrive until Maple and Mathematica were
released, Maple in 1985 (Cite list of dates) and Mathematica in 1988 (cite 
wolfram website). These systems were inspired by Macsyma in terms of their 
capabilities, but they proved to be much better at the challenge of building
mind-share.  DOE-Macsyma, because of the nature of its users and maintainers, never 
responded to this challenge. Symbolics' successor Macsyma Inc, having 
lost market share and unable to meet its expenses, was sold in the summer of 
1999 after attempts to find endowment and academic buyers failed. (Cite Richard
Petti usenet post.)  The purchaser withdrew Macsyma from the market 
and the developers and maintainers of that system dispersed. Mathematica and Maple
appeared to have vanquished Macsyma.

It was at this point Maxima re-entered the game.  Although it was not
widely known in the general academic public, W. Schelter had been
maintaining and extending his copy of the code ever since 1982. He 
had decided to see what he could do about distributing it more widely.  
He attempted to contact the NESC to request permission to distribute
derivative works.  The duties of the NESC had been assumed in 1991 by
the Energy Science and Technology Software Center, which granted him
virtually unlimited license to make and distribute derivative works,
with some minor export related caveats.  

It was a significant breakthrough.  While Schelter's code had been available 
for downloading for years, this 
activity became legal with the release from DOE granted in Oct. 1998, and
Maxima began to attract more attention.  
When the Macsyma company abruptly vanished in 1999, with no warning or
explanation, it left their customer base hanging.  They began looking
for a solution, and some drifted toward Maxima.

Dr. Schelter maintained the Maxima system until his untimely death in
July, 2001. It was a hard and unexpected blow, but Schelter's obtaining
the go-ahead to release the source code saved the project and possibly
even the Macsyma system itself. A group of users and developers who 
had been brought together by the email list for Maxima decided to try and
form a working open source project around the Maxima system, rather
than let it fade - which is where we are today.

