This information was last updated on Dec 2, 2002.

This TODO list represents abbreviated notes to categorize the work directions
and note progress (completed items have a - prefix). Items are expanded as
the work thread moves into that subject. There is no priority and no schedule.
The ratio is (# of completed task per section)/(total completed tasks) and
is a measure of the ratio of effort between areas. Completed tasks are marked
with a - in column 1 (+ indicates changes since last update)

(22/108) Pristine sources is the main thread of developing Axiom
( 2/108) Splits are pieces of work to give away
( 2/108) Joins are pieces of work to incorporate or cooperate with
(29/108) New Development is a list of ideas for new directions or needed work
(13/108) Research is a list of ideas that need investigation
(40/108) Community is a list of supporting tasks for the algebra community

**************************************************************************
PRISTINE SOURCES (22/108)
 Motivation: create a new source tree and slowly migrate original NAG/IBM
             sources into the tree. This will ensure that only things that
             are properly required, used and tested get shipped. Further
             ensure that everything exists under make/cvs control.
- create top level directories
- create top level makefile
- build src
-  build lisp
-   hand build lisp
-   integrate into makefile
     /spad/lsp/gcl/h/386-linux.defs has EXTRAS code that refs ${OBJ}/${SYS}
     this code needs to be compiled before the gcl image is linked
     this code needs to be compiled for specific systems
     split the gcl changes out as patches to apply to the zip file
-   rebuild automatically
-    integrate the unzip
-    integrate the patching
-    automate the build
-  build bootsys
-   hand build bootsys
+   integrate into makefile
+   rebuild automatically
+   rewrite into pamphlets 
-  build depsys
-   hand build depsys
-   integrate into makefile
    rebuild automatically
+   rewrite into pamphlets
   build interpsys
    hand build interpsys
      fix bicase issue
      fix missing symbols in runtime issue
    integrate into makefile
    rebuild automatically
+   rewrite into pamphlets
   build algebra
    hand build interpsys
    integrate into makefile
    rebuild automatically
    rewrite into pamphlets
   build tests 
    hand build tests
    integrate into makefile
    rebuild automatically
    rewrite into pamphlets
   destroy and rebuild automatically
-  build CVS
   import /spad
  investigate automake
- obtain license
  move to Savannah
  develop compile farm

**************************************************************************
SPLITS (2/108)
 Motivation: several pieces of the system have nothing to do with algebra
             and either have old technology that needs to be rewritten or
             common technology that ought to be contributed to other efforts.

 HYPERTEX->BROWSER/TEX
  Motivation: hypertex was pre-browser technology. It should be rewritten
              to fit into today's technology. At least HTML, possibly XML.

 ASQ->JAVADOC/DOC++
  Motivation: asq is pre-javadoc. It should be rewritten to fit into the
              browser/tex new world of docs

 PLOT->GNUPLOT
  Motivation: plot has nothing to do with algebra but has some nice features
              such as data feedback from graph manipulation. These facilities
              should be moved to Gnuplot and the plot function retargetted.

 READ-EVAL-PRINT->TeXmacs
  Motivation: the time has come for 2d input. TeXmacs provides this. There
              needs to be a much tighter integration of TeXmacs and Axiom.
   Connect to TeXmacs community
+  Build TeXmacs on Linux
+  Build TexMacs on Cygwin
   Build TexMacs on Windows

 AXIOM I/O->COMMON SYNTAX
  Motivation: Rosetta should not exist. Algebra syntax should standardize.
              Existing committee work needs feedback from Axiom.

 AXIOM TEST SUITE->COMMON TEST SUITE
  Motivation: Algebra needs a hand-verified test suite which ought to be
              shared with other computer algebra systems. Needs a common
              syntax, could be a driver for previous item.

**************************************************************************
JOINS (2/108)
 Motivation: there are several CA systems with very interesting features
             and/or algebra. Axiom needs to import these ideas or find
             ways to cooperate with these projects.

 GAP->AXIOM
  Motivation: GAP has much stronger facilities for manipulating groups.
              Axiom can do group manipulation but GAP needs to be studied.

 OCTAVE->AXIOM
  Motivation: Octave has the capability to be a replacement for the NAG
              numeric libraries. Either an interface has to be retargetted
              or the code has to be ported to Aldor or Lisp.
-  Test rewriting Fortran code into Aldor

 MAGNUS->AXIOM
  Motivation: Magnus is strong in infinite group theory. Like GAP it needs
              to be studied and imported.
-  Discussion and proposal for work in this area with CCNY

 ASTRONOMER->AXIOM
  Motivation: Internal representation of polynomials that can be scaled to
              ~250k terms needs to be imported.

 COMBINAT->AXIOM
  Motivation: External basis representation of large polynomials needs to
              be imported.

 MATHEMATICA->AXIOM
  Motivation: Workbooks need to be imported.

**************************************************************************
NEW DEVELOPMENT (29/108)

 EXTERNALS DOCUMENTATION
  Motivation: in order to allow users to use the system we need to collect
              and organize the documentation and help facilities.

 INTERNALS DOCUMENTATION
  Motivation: in order to allow multiple developers to work on the system
              the structure of the system needs to be explained.
-  Directory structure
-   document shell script
   Makefile structure
-   document how the makefile tree works
+  Lisp structure
   src structure
    algebra 
+   boot
    clef
    doc
    etc
    graph
    htex
    hyper
    include
    input
    interp
    install
+   lib
    lsp
+   noweb
    paste
    sman

 ALGEGRA DOCUMENTATION
  LITERATE PROGRAMMING 
   Motivation: algebra code should be able to include research papers
               and documentation of design choices, space, time and
               complexity. Researchers should be encouraged to write
               literate programs. Literate programs should be easily
               turned into book sections or chapters. 
-   seek appropriate tools
-     tangle, weave
-     cweb
-     noweb
-   seek feedback
-   create preliminary setup
-   create example pamphlet (DHMATRIX)
-     define doc structure
-     prototype
+   modify/rewrite noweb
+     make undefined chunks transparent
+     example generation
      test case generation
-   create booklet example (MATRIX)
      define booklet structure
      prototype
+   integrate into make
+   integrate into obj/mnt
    integrate example (DHMATRIX2) into make
    integrate book example into make
    write pamphlets for type hierarchy
      write SetCategory pamphlet
      integrate into make
      integrate into test
    write pamphlets for data structure hierarchy
      write aggregate pamphlet
      integrate into make
      integrate into test
    create example pamphlet from scratch (PRIMES is in P algorithm)
      recreate paper in tex
      write algorithm
    create complex pamphlet (Barry Trager's Integration thesis)
-     recreate thesis in tex
      factor thesis into booklets
      factor booklets into pamphlets

 SINGLE-STEPPING
  Motivation: Users of algebra should be able to step thru algorithms at
              some "appropriate" level of detail. Hard to do as most 
              algebra algorithms differ from hand methods.

 LIBRARY CLEANUP
  Motivation: FullyExplicitRingOver needs a better theory basis, etc.

 GCL BUILD
  Motivation: run on a popular common lisp
-  Download GCL
-  Build image in /spad/lsp/gcl
+  Build Axiom on image

 CMUCL BUILD
  Motivation: run on a popular common lisp
   Download CMUCL sources
   Build image in /spad/lsp/cmucl
   Build Axiom on image

 CCL BUILD
  Motivation: run on a popular common lisp
-  Get final CCL sources from Arthur
-  Build image in /spad/lsp/ccl
+  Build Axiom on image
              
**************************************************************************
RESEARCH (13/108)

 AXIOM JOURNAL
  Motivation: Provide a motivation and place to publish Axiom algorithms
              in a literate programming style. Journal development will
              require refereed papers.
+  Discuss with Community
   Contact TOMS at ACM
   Create License for pamphlet submission
+  Create Prototype online site (www.nongnu.org/axiom/Journal)
     Create Journal directory
     Structure pages similar to Journal
     Integrate into CVS
     Allow dynamic referee lists
   Research online/offline references to Axiom in literature
   Create citations bibliography
   Get permission to mirror/host published papers
 
 COMPLEXITY
  Motivation: Axiom is fully layered. Research results in the lowest 
              layers can be leveraged to generate results in higher layers.
              Use Axiom against itself to create towers of complexity.
              Insist on complexity results in documentation.

 TEXTBOOK OBJECT
  Motivation: Axiom interpreter objects don't have a standard name for
              their parts and do not have a manipulation language for
              rewriting parts. 
              idea: have a "tree" primitive for each type
              idea: define a graph of tree to tree maps that label each 
                    edge with the transformation applied to the subtree

 TEXTBOOK CONTEXT
  Motivation: Equations are ambiguous when standing alone. Textbooks provide
              context in the surrounding text. This is not adequately 
              captured by the type system. A new approach to this issue
              is required.

 OPEN PROBLEMS LIST
  Motivation: Magnus maintains a community agreed-upon list of "open problems"
              This is an excellent source of PhD work and a good focus
              mechanism. Create and maintain this.

 PROVISOS
  Motivation: Assume is a weak, global mechanism for capturing provisos.
              A new proviso object needs to exist that wraps existing 
              objects, provides scope for provisos and provides an
              algebra of provisos based on type (arithmetic, boolean,
              typed, etc).
-  Review the literature to extract proviso forms.
-  Classify proviso forms.
-  Draft research paper
   Develop an arithmetic of proviso forms.

 INTERVAL ARITHMETIC
  Motivation: This is a fundamentally stronger way to represent uncertainty
              in results. It needs to be lifted from the numeric domain and
              defined symbolically. It needs to be integrated into the
              proviso algebra.

   Document interval.as algebra domain

 DOMAIN INTEGRATION
  Motivation: Axiom would be strongly useful in domains such as robotics.
              Areas such as backsolving of joint position can be fruitful
              areas of research. Deep integration in domains (DSP, Vision)
              needs to be pushed.

 SEMI-ANALYTIC SOLUTIONS
  Motivation: Axiom could provide parallel tasks that would continuously
              try to extract analytic solutions from incoming data. For
              example, in vision finding analytic edges to feed to a
              parallel recognizer algorithm.

 GAMES INTEGRATION
  Motivation: Axiom can be used to model games in novel ways. For example,
              flight games with pursuit curves that live in a non-uniform
              space (planet gravity, changing density across air/water).

 CONSTRAINED MODELS
  Motivation: Force motion that always remains analytic. Thus the final
              solution is known to be analytic. For example, constrain
              intersecting pipes to known boundary conditions. Computational
              geometry seems the most fruitful area.

 VALIDATION and VERIFICATION
  Motivation: Algebra systems need a high level of confidence in the results.
              Hand checking of the results is difficult and expensive. 
              Automatically substituting results into the original equations
              could raise confidence. Auditing of boundaries of algebra
              algorithms. Precondition/Postcondition results for domains.
              Audited test suites used for regression testing.

 ALGEBRA MANIPULATION LANGUAGE
  Motivation: Algebra systems have interpreters that embody a lot of 
              knowledge about the actions available to manipulate equations.
              This knowledge needs a language. The language needs to be
              crafted so that it can be added to domains and applied
              in symbolic form by a generalized simplification routine.
   Review the literature to extract manipulation sentences.
   Classify manipulation forms.
   Draft manipulation paper

 BOYER-MOORE THEOREM PROVER INTEGRATION
  Motivation: Computational logic is a branch of computer mathematics
              that is not currently available in Axiom. The Boyer-Moore
              theorem prover, written in common lisp, provides a good
              general purpose platform to study the interaction of the
              theorem proving systems with Axiom
-  Contact Boyer & Moore
-  Contact Chandy & Misra
-  Download ACL2
   Build ACL2
   Invoke ACL2 from Axiom
   Integrate ACL2 into Axiom
     Use Dijkstra's methods against SetCategory
   Draft research paper

 MetaPRL THEOREM PROVER Application
  Motivation: MetaPRL is a Higher-order Logic proof system that is well
              suited to proving Axiom-style languages. The proofs from
              this system would give higher confidence levels in the
              correctness of Axiom's algorithms.
-  Contact Artimov 
-   Review nuprl
-   Review MetaPRL
+   Construct trial example
+     Collect all sorting routines in Axiom
      Model the required subset of Axiom's language 
      Construct a proof of the sort algorithms

**************************************************************************
COMMUNITY (40/108)
 
 COLLECT AXIOM ALGEBRA DEVELOPERS
  Motivation: Work in Axiom has continued over the years but has not
              been integrated. Find this work and integrate it.
 
 COLLECT AXIOM KNOWN BUGS
  Motivation: Axiom has known bugs. Create a known bug list.
    Integrate fixes for catdef
    Integrate fixes for pleqn
 
 TRAIN AXIOM INTERNAL DEVELOPERS
  Motivation: Many of the subtasks listed above can be split off, done in
              parallel and lead independently. Find people who are interested,
              especially external projects (eg work with Gnuplot to enhance
              it with Axiom's abilities).
+  Set up cvs on Tenkan
+  Set up accounts for developers
+  Import current Axiom tree into CVS
+  Try system builds on developers machines
+  Exchange code via CVS
+  Expand platforms
+    Cygwin
+    Mingw
+    FreeBSD

 SUPPORT FRENCH WORK
  Motivation: An organized community will help focus new Axiom development.
-  Lyon conference presentation
-  Set up OSCAS group
-  Announce OSCAS group
-  Moderate OSCAS group

 SET UP SAVANNAH
  Motivation: Community needs all the usual tools enabled like bug list,
              mailing list, cvs, etc.
-  Set up mirror CVS (to verify that public CVS will be correct)
    import original code
    export original code 
-  Contact FSF about creating Axiom on Savannah
-    Set up Homepage
-    Set up Mail list
-    Set up Bugs list
-    Set up News
-      announce Axiom site creation
     Set up CVS
+     import License directory
      import code
     Set up Journal
+     create initial webpages
-  Developer mailing list created

 ROSETTA
  Motivation: the community needs to see and use the many open source
              computer algebra systems so they can compare and contrast
              the various systems. This will help focus the issues of
              what is currently possible and how hard it is to develop
              a large, general purpose system. Also useful for teaching.
-  Build Rosetta CD
-   collect open source systems
-   build them on a common subtree
-   write Rosetta document
-   write them to CD such that they can be run with installation
-   distribute CD to conferences, teachers, etc
   Update Rosetta CD
    add Axiom
    fix mistakes
    add paragraph per table
    update Rosetta document for Giac
    update Rosetta document for DoCon
    update Rosetta document for Macsyma
    write Meta-Rosetta document to expound on differences
    integrate systems with browser front-end
    build broken systems
     feed back diffs to original projects
    add new systems
    find new customers

 AXIOM WEBSITE
  Motivation: maintain a temporary website so that progress on making
              Axiom open-source is made visible and the community has
              a place to discuss issues and ideas (not necessarily
              related to Axiom but to the community in general).
-  create website
-  build interest list
-  create and maintain update schedule
-  tombstone website

 EXPLORE FUNDING MODELS
  Motivation: Find creative ways to pay people who work on Axiom. Everybody
              wants free developers but paid work will motivate development.
   Academic degree (BA in open source? BA in computer algebra?)
   Grant model by line of code
-   contact IBM
-   contact SUN
    contact NSF
    contact INRIA
    contact DARPA 
    explore other contacts
   Award Model 
-   Schelter Award
-    contact UTexas
-    contact FSF
     develop plan
      define award type and frequency
      find sponsor organization
-       Efraim Armendariz 
-       Brad Kuhn 
      find volunteers to judge award
    Oscars/Emmy/Tony award model for CA at ISSAC?
   Pay for support model