[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Axiom-developer] new "projects" file
From: |
daly |
Subject: |
[Axiom-developer] new "projects" file |
Date: |
Wed, 26 Nov 2014 04:55:13 -0600 |
Axiom is being developed on a very wide range of topics.
Due to the range of topics and the available manpower the
development is slow but steady in many areas.
There has been, and continue to be, changes made in Axiom for each of
these areas.
In order to communicate better (that being the whole point of literate
software) these areas will be listed in a new top-level "projects"
file which contains entries for various subprojects currently in
process. It is not complete but it will be maintained on a regular
ongoing basis.
This is the initial version.
=====================================================================
This file contains notes on current development projects in Axiom
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Database reorganization
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The databases were intially created on an ad-hoc, history-driven
basis (e.g. the compress database was created when I needed to
put Axiom on a 1Meg memory machine. It is now gone).
1) reorganize the database layer use better technology
2) merge the databases into a single database.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Burge recursive parser
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The Burge zipper parser accepts input and "zips it up" into a
recursive data structure.
1) document this idea and the underlying data structures
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Charybdis
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recordandprint receives an sexpression form of the output,
computes subexpression lengths, and prints. This is an
implementation of the Charybdis paper.
1) use the paper to document Charybdis in detail
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom mkAtree
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
mkAtree receives the InputForm as an sexpression and constructs
a tree object.
1) This tree object to be documented in detail
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom src/interp cleanup
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
src/interp still contains many lisp files.
1) these need to be rewritten from machine-generated lisp to
human-written lisp and documented.
2) remove src/interp
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom interpreter merge
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
src/interp contains functions called by the interpreter.
1) tree-shake the interpreter to drag in the referenced
functions.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom compiler merge
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
src/interp contains functions called by the compiler.
2) tree-shake the compiler to drag in the referenced
functions.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom browser help
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
help files are generated for the algebra. )help calls an
external command called SPADEDIT. This currently either types
out the help file (straight text) or opens an editor of choice,
defaulting to vi.
1) SPADEDIT needs to have the choice of displaying the help files
in a browser window.
2) SPADEDIT needs to be able to handle pdfs
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom help files
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
All of the categories, domains, and packages needs a help file.
1) All of the exported functions need help files
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom display op examples
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
)d op somefunction will display examples which are taken from
++X lines in the export section of the constructor.
1) All of the exported functions need ++X example lines.
2) d op needs to display the ++ text for functions
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom makefile removal
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The makefiles are organized as a tree with shell variables passed
through the branches.
1) rewrite the makefiles into a single documented makefile
2) rewrite the single makefile into lisp
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom CATS expansion
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The computer algebra test suite (CATS) needs comprehensive
test suites for more coverage.
1) find a suitable textbook with a lot of examples of
input/output pairs (like Schaums). Write a CATS test suite.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom continuous integration
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Currently we follow a model of publishing a "release"
1) set up a continuous integration server
2) move to a continuous integration model so that every change
gets built, tested, and pushed immediately.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom buglist
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The bug list has some very old bugs on it and lacks entries for
known bugs.
1) pick a bug and fix it
2) pick up the bug list from fricas, test the open bugs, and
merge them into the bug list
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algebra availability documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Currently the algebra is just a pile of constructors. There is
no good organization by topic
1) organize the algebra by topic using some external, known
organization. possibly use maxima/maple/MMA organization
so users can compare.
2) highlight the areas where Axiom is weak or missing some
functionality and suggest new algebra
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algorithm documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The algebra uses some known, published algorithms and also
uses unknown, unpublished algorithms.
1) find an area with published algorithms (e.g. symbolic
summation) and find the corresponding Axiom algorithm.
Document it and reference the published papers
2) find an area where Axiom has old algorithms (e.g.
symbolic summation), update the algorithms, document
them, and reference the published papers
3) update the algorithm bibliographic history page to
trace the history, current implementation, and future
direction of Axiom's algorithms.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom history
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The history of Axiom as free software is documented in the
mailing list archives.
1) Condense, organize, and write a book on the history of Axiom.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom proofs
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom uses algorithms which have been proven in the literature
(e.g. Euclid's algorithm) in theory. Axiom reduces these to
practice.
1) prove Axiom's implementation of Euclid's algorithm
a) Math-to-Spad proof (e.g. COQ)
b) Spad-to-Lisp proof (e.g. ACL2)
c) Lisp-to-C proof (e.g. LLVM work)
d) C-to-machine proof (Conditional-Concurrent Assignments)
2) merge ACL2 beneath the Axiom interpreter and make it
available at the command prompt.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom category axioms
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Add mathematical axioms to Axiom's category hierarchy.
1) decorate each category with their axioms (e.g. monoid)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom numerics
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Since moving away from NAG, Axiom numerics are missing
1) expand bookvol10.5 with working lisp code and expose
the numeric routines in packages
2) investigate and recreate NAG-equivalent code for the
exposed NAG library routines
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Browser Notebook
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom can currently serve as a backend for a browser.
1) expand the existing notebook code bookvol11 to make
the notebooks more functional
2) expand/port the existing hyperdoc documentation to
the new browser
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom SVG hierarchy
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Currently the SVG graph of Axiom's constructors is static.
1) modify the static structure so clicking on a node goes
directly to the constructor algebra
2) modify the static structure to use a better, more useful
graph structure so it can be easily navigated in the browser
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom graphics
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom currently uses its own graphics package written in C.
1) rewrite the graphics package to use HTML5 canvas
2) integrate the graphics with the new browser front end
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom expression server
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom can listen on a port.
1) modify Axiom to take a command-line input from a port,
compute the result, and return it over the net.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algebra use documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Currently the algebra use documentation just shows how to call
various functions but not solving actual problems.
1) find a problem to solve, solve it, and document it in detail
2) create "intro" videos for new users showing how to
use Axiom in different domains. Relate these to the
algebra use documentation.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom new developer support
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom has videos of talks and videos of how-to.
1) expand the how-to videos for developers detailing how
to understand, maintain, modify, and extend Axiom
2) list and publish potential projects
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom src/input dispersal
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The src/input files were created as initial attempts at testing
and documentation. Thus there are two kinds of files in the
same directory.
1) reorganize the directory
a) move complete examples into the user's guide or the algebra
book
b) merge constructor example files with the constructor help
c) organize, cleanup, and expand test coverage files to support
continuous integration
2) remove src/input
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom youtube channel
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom has a new video library section
1) create a youtube channel for Axiom videos and upload
- [Axiom-developer] new "projects" file,
daly <=