Packages and other user-friendly things (Was Re: solve(x/sqrt(x+2)=1, x))
Subject: Packages and other user-friendly things (Was Re: solve(x/sqrt(x+2)=1, x))
From: Raymond Toy
Date: Thu, 29 Oct 2009 19:16:35 -0400
Stavros Macrakis wrote:
>
> Some suggestions for sparing other users my pain:
>
> 1) When a loadfile changes name, leave a stub behind with the old name
> that prints a warning that the file has been moved, and then loads it
> from the new location. This is easy to do.
>
> 2) Include at least a one-line description of all share functions (not
> including contrib) in the main help library, mentioning what file to
> load them from. This requires some labor, but not specialized knowledge.
>
> 3) Add some specific help functionality to help find share files. This
> requires some programming as well as as more documentation data.
>
> 4) When a load file is loaded, full documentation should come with it.
> I haven't looked at the help system, so I don't know how hard this
> would be.
>
> 5) Add some easy way to load up-to-date share files from the
> sourceforge server without requiring CVS knowledge. The R system
> includes functions to install and update packages (and their
> prerequisites) so you neither have to be a systems programmer nor have
> to reinstall the whole system every time one package is updated. This
> requires real work, especially if it's going to be cross-platform.
>
> Just some ideas from a cranky old-timer.
I agree with everything you say. I had started to do some of this,
like having maxima search path automatically computed by listing all the
directories in share and contrib. I thought this would be
straightforward, but doing it reasonably in Lisp is a hassle for all of
the lisps we support. (Gcl being the most difficult..)
If we follow what emacs/xemacs does with info files, we can probably do
2 and 3. Item 4 seems a bit harder, but probably because I don't know
how the documentation stuff works anymore. (It used to be straight info
files, but they're not anymore.)
Item 1 could be solved if each package had some kind of autoload file
which maxima core would locate automatically on startup. Then using the
function would load up the package; you wouldn't need to load the
package. This is a problem if several packages define the same
functions, though. But maybe we don't want it to be so automatic. We
could at least have a function to list all available packages (with a
short description).
Item 5 seems the most difficult since that requires quite a bit of
work. If we could use usocket for all Lisps, we could just do a simple
http connection somewhere to grab the files. But someone would need to
define how this is all done, and someone would have to maintain each of
the packages.. Perhaps this would be a good time to use asdf-install.
But we would need to be able to call tar and gzip to extract items.
Ray