functions from add-on packages, was: Newbie question: testing for lvalue
Subject: functions from add-on packages, was: Newbie question: testing for lvalue
From: Stavros Macrakis
Date: Mon, 12 Feb 2007 09:01:09 -0500
wOn 2/12/07, Jaime E. Villate <villate at fe.up.pt> wrote:
We should define a clearer policy about src-share-share/contrib.
I proposed a policy in an email to the list on 10/25/06, which was
essentially an idealization of the status quo. Barton added some ideas.
Here is a slightly revised version of the proposal.
-s
--------------------------------
The core Maxima system (in src) should have consistent,
good-quality, and widely useful notations and functionality that are
actively maintained by us. Every part of the core system should
interoperate nicely with every other part. Functions should cover a
large part of their domain and give clean errors or noun forms when
used outside their domain. Notations should be unambiguous and
consistent. All Maxima programs can depend on the core functionality
being available; incompatible changes should be avoided.
The share directory contains additional functionality which may be
special-purpose or unmaintained. The core system does not depend on
the share directory. Although share packages should strive for the
consistency and quality of the core system, different packages may
use different and non-standard notations or conventions, which are
not necessarily recommended by the Maxima project. Some share
packages may not only not interoperate correctly, but even cause
problems if loaded into the same Maxima system as other share
packages. Functions may only cover special cases, and may even give
incorrect results silently if applied outside their design
domain. Implementation mechanisms may be much more inefficient than
core algorithms (e.g. using pattern matching for
simplification). User documentation for functions defined in share
should be contained in the main Maxima user documentation. Share
code should have regression tests, but they need not be a part of
the standard Maxima test suite.
The contrib directory contains packages which may be suitable for the
core system or the share directories, but which have not been
evaluated fully enough to put there.
By these definitions, there are several parts of the core system which
probably belong in share. One is poisson, which interoperates with
almost nothing else. Another is cf, which uses list notation to
represent continued fractions -- no other part of the system
understands this. Then there are cases where I think we agree that
the lack of interoperation is a bug we should fix (e.g. core matrix
inversion doesn't support floats or bfloats).