Immediate plans for Octave include the release of a new “stable” version that I will
maintain to fix serious bugs only. If people are interested in having some form of
Octave continue along its previous development path, they will need to organize
that effort—my focus is now on future directions.
Although I will not be working much with Octave as it is currently implemented,
the future may involve a derivative of Octave. If the problems described in Section 3
are fixed in the ways that I have proposed, I believe Octave will provide a muchimproved
language. It will remain similar to Matlab, but incompatible. It will
be easy for users of one language to understand the other, but, in most cases,
difficult to share code between the two systems. If these changes are made, I can
see significant advantages and disadvantages. On the positive side, we will have a
more consistent language and an interpreter that is easier to maintain, and there
will be less effort wasted on the implementation of poorly designed features just to
have compatibility. Some possible disadvantages are that people will generally have
to choose one system or the other, we lose some users who see compatibility as an
absolute must, and we invent yet another scripting language.
Another possibility for the future is to leave the Octave language alone and
focusing on additional features (sparse matrices, parallelism, etc.) while fending
off the requests for additional Matlab compatibility. But as long as Octave is
generally compatible, users are likely to continue to want more, and I would prefer
a clean break from this problem.
If it is undesirable to invent yet another scripting language, then perhaps it
would be best to simply choose another general purpose scripting language that
already exists and add the numerical features from Octave to it. I was asked about
a merger of this type for Octave and Python, but as I examined Python more
closely, I decided that it did not seem to be well-suited for numerical computing
(though many seem to be using it for that purpose anyway). Other popular scripting
languages have similar problems.
At this point, I’m leaning more toward a streamlined Octave built on top of
some faster general-purpose scripting language such as Guile, the GNU project’s
embeddable Scheme interpreter. This would preserve the syntax of Octave (which
seems to be reasonably good for expressing numerical algorithms) and allow access
to the capabilities of the more general purpose language. Reasons for choosing Guile
are that it is intended to be used as an embedded interpreter, and it should not be
too difficult to translate Octave to Scheme.