Ziga wrote:
> *) It should be written in Common Lisp - this would allow the GUI to
> interact directly with the Maxima kernel.
I think its a good idea to have the GUI interact directly with the
Maxima kernel. However, a GUI would not need to be written in Common
Lisp in order to achieve this if 1) the GUI was written in the same
language that the kernel was written in and 2) the kernel
implementation had an API that converted Lisp data structures into the
implementation language's data structures and vice versa.
> *) Best way to do a gui is via OpenGL. 'Big' widget toolkits like Qt
> or wxWidgets don't have very good bindings for CL - also they are a
> big dependency and Maxima GUI would benefit from 'custom' widgets
> (like sliders, plots..) more.
My thought is that a more promising way to create a Maxima GUI is to
select an existing cross platform, professional quality, open source
IDE and build on top of that. This is similar to the way Wolfram
built on top of Eclipse to create their Mathematica IDE.
> A gui written in CL can also provide intelligent code coloring -
> differentiating between bound and unbound variables, checking syntax
> correctness on the fly ...
Getting access to tools which are designed to do things like this are
one of the benefits of building on top of an IDE.
> The lisp implementations that could do such a gui are probably SBCL
> (but sbcl has no threads on windows yet) and ClozureCL,
Another Common Lisp implementation that can be added to this list is
ABCL (Armed Bear Common Lisp). It is cross platform, multi threaded,
and it has access to a very good cross platform GUI API.
> To conclude - I think it is possible to implement a great 'live' GUI
> for Maxima in Common Lisp, which would depart from the usual input/
> output paradigm that is currently used in Maxima,Mathematica,Maple
> and be very intuitive and fast to work with, pretty looking, easily
> extended (Maxima based RAD?) and better than what's currently out
> there.
If one starts with a cross platform open source IDE as a foundation,
everything you listed here is definitely feasible and the time frame
for achieving something that is usable is shorter than I think most
people would estimate.
However, I have the following two questions about a Maxima GUI:
1) If this GUI did everything you listed, would it matter what
language it was written in?
2) Making a Maxima GUI like this available would probably result in a
significant increase in the Maxima user base. Does the Maxima
community really want to have a larger user base than it does now?
The reason I ask is that at one point the Sage community thought they
wanted a large user base, but when they started attracting a
significant number of users they discovered that large numbers of
users are difficult to support.
Ted