 |
Projects for TeXmacs |
 |
1.Improving the current
implementation
[Should be completed]
2.Memory management
If I have the courage, I might one day write a garbage collector for
TeXmacs.
3.Graphical interface
We wish to move towards Guile-Gtk or another
portable graphical user interface. Now that we have found someone
for making a Windows port, this not an urgent issue anymore though.
4.Encodings and fonts
-
Systematically use Unicode.
-
Some changes have still to be made in the way font encodings are
handled. This should make it easier to maintain fonts with
characters from several physical fonts, virtual fonts, special
characters, etc.
-
Currently, the current logical font is determined from a fixed set
of environment variables only. The current typesetting font should
rather be a tree (instead of a string), which is evaluated (so
that environment variables are replaced) and then passed to find_font(display,tree). The current font can then be
a joined font and future fonts might depend on user environment
variables (i.e. colored fonts, using more than one color).
5.Speed
In order to speed up the program, we already made the major change
that not the whole document is typeset again when making local
changes. However, several other main optimizations should still be
made:
-
Indexing file names which are in the distribution. This may
accelerate booting the program.
-
Encode the system environment variables; this will globally
accelerate the program. Also, intermediate data during the
typesetting process might be encoded in a more binary way.
-
The typesetter should be made lazy in a more fundamental way.
6.Scheme
The Guile/Scheme
interface should become more robust and well documented. Several
things still need to be done for this:
-
Implement a system for “contextual overloading”.
-
Better preservation of locality.
-
Systematic use of closures throughout the code.
-
A clean interface for manipulating TeXmacs content (a unified
interface for both internal TeXmacs trees and the associated
Scheme representation).
-
Documentation.
7.Plans for the future
[Should be completed]
8.Typesetting
The typesetter should be reorganized and improved as follows:
-
Decouple the style-sheet language from the actual typesetter.
-
Better support for agglomerated documents (from physically
different documents).
-
Incorporation of better linking primitives (XLink, Proclus).
-
More types of dynamic objects, like animations, help balloons,
etc.
-
Better line-breaking of large formulas.
9.Extra facilities for editing
texts
Although cursor movement, selections, etc. have already been
implemented, some other standard editing facilities have not yet
been completed. Let us mention a few of these:
-
Searching/replacing texts, formulas, certain environments etc. and
regular expressions.
-
Mathematical facilities: simplification of a selected region,
substitutions of formulas in other formulas, etc.
-
Version control.
-
Data compression and protection.
-
Grammar checkers and automatic translation programs. Does someone
know where to find detailed free dictionaries and stuff like that?
-
Incorporation of free speech recognition program.
10.A universal spreadsheet
We would like to incorporate a “universal spreadsheet”
facility into TeXmacs. The idea is that all dependencies between the
cells in the sheet are analyzed by TeXmacs, but all actual
computations are delegated to an extern system of your choice, like
one of the currently supported computer algebra systems. Also, the
data of the spreadsheet will not necessarily be formatted in a
rectangular table; one can also imagine dependencies between nodes
of a tree, elements of a graph, or anything else.
11.Technical pictures
I also would like to include a facility for drawing technical
pictures. In this implementation you should be able to benefit from
the fact that you can define macros for making geometrical
constructions. It would for instance be possible to write a style
file for drawing electronic circuits or chemical components with a
nice icon bar for selecting circuits or components, just as you
select lines and circles in usual pictures.
12.Tools for usage on the web
and in networks
It would be nice to have a better integration of TeXmacs with the
web. As a first step, we need a clean internal plug-in for Wget or Curl with support for
cookies, security, etc. At a second stage, the Html converters
should be improved to take advantage of this. After that, we may
think about things like collaborative authoring via the web,
integration with preprint servers, etc.
Another interesting thing would be to incorporate tools for live
conferencing inside TeXmacs using the recent concept of mutator
tags. We actually expect this to be quite easy and this would open a
different road towards collaborative authoring, instant messenging,
etc.
13.Interface with computer
algebra systems
The following improvements should still be made in order to link
TeXmacs to computer algebra systems:
-
Improving the layout of computer algebra sessions.
-
Add extra features to increase the interoperability between
TeXmacs and computer algebra systems and to give additional
control over the layout of big output.
-
More semantics for the objects being communicated. This may either
be high level information (like Openmath or HTML 4.0 mathematical
markup) or low level information (including information about the
representation of data), depending on the required speed.
-
Further possibilities for evolution concern highlighting,
debugging facilities and so on.
14.Interaction with other
GNU-like projects
It might be nice to increase the interaction between TeXmacs and
other GNU-like projects, such as Gnome or multiplatform GUI's. This
might facilitate the incorporation of extern data into TeXmacs
documents or increase the number of supported platforms. On the
other hand, several TeXmacs features, such as its font handling,
might be interesting for other projects too.
15.Roadmap for upcoming
developments
It is difficult to give a precise roadmap for the TeXmacs
development, because our plans are permanently adjusted as a
function of unexpected needs, help by new contributors and humour.
Nevertheless, we tend to spend a significant time on a few major
objectives, while amusing ourselves with the implementation of a few
new features. Roughly speaking, our roadmap can therefore be divided
into three major parts:
-
A limited number of major objectives for the upcoming stable
versions (1.1 and 1.2).
-
A certain number of minor objectives, subject to continuous
changes, and which progress as a function of available time.
-
Other projects, which are developed by external contributors, but
which occasionnaly require changes in the TeXmacs core.
15.1.Major objectives for the
upcoming stable versions
Our main focus for the next stable version 1.1 (to be released
during 2007) is on the improvement of the user interface and
documentation. This comprises the following developments:
-
Increased standardization of the user interface: use M$-style
keyboard shortcuts as the default (and provide Emacs
compatability as an option), further simplification of the menus
and increased use of popup windows.
-
Development of a markup-based graphical user interface for popup
windows. This new interface might only be ready after the next
stable version 1.1.
-
Development of user-friendly tools for documentation and
translations, which can be used in a collaborative version over
the web.
-
Completion of a TeXmacs user manual and make it available in book
form.
The next stable version 1.1 should also contain a more robust
version of the graphical drawing tool, which is developed by Henri
Lesourd. Finally, we plan to create an association for the
proposition of free scientific software. One of the objectives of
this association is to create a simplified system for making
donations to TeXmacs and sell our software and documentation.
Within a slightly longer time period of about one or two years, we
have also started to reorganize TeXmacs so as to make it a stable
development platform for developments. The aim is to reach as
quickly as possible a point where the different parts of TeXmacs are
well documented and modularized, so that they can easily be further
developed in parallel by different people. Most of these deeper
developments will reach their maturity only in the after-next stable
version 1.2, and comprise the following items:
-
Improve the quality of the TeXmacs makefiles so as to make them
completely compatible with automake and autoconf.
-
Improve the Cygwin port and other ports of
TeXmacs and monitor the availability of TeXmacs in major
distributions.
-
Reshape the low-level window interface so as to make the interface
to Xlib easily portable to other systems, such as Gtk, Qt, MacOsX,
Windows, etc. Also provide plugins for Cairo,
OpenGL, etc.
-
Replace the current widget system by a markup-based system, with
the possibility to use widgets (from Gtk, Qt, Aqua, etc.) from
standard GUI's instead of the TeXmacs-provided style files.
-
Separate the style rewriting engine from the typesetter and make
both completely lazy.
-
Increase the robustness and use of DRDs (Data Relation
Definitions), which contain meta-information about TeXmacs or
user-provided DTDs.
-
Migrate as much as possible of the high-level interface from C++
to Scheme.
-
Increase the robustness of TeXmacs and its Scheme
APIs by providing detailed exception semantics and tools for
debugging.
-
Provide extended documentation for developers and intelligent
interactive ways to use this documentation.
15.2.Other things we are working
on
Even though our main focus is on the stabilization of TeXmacs and to
make it more suitable for developers, we intend to continue some
time on the development on new features. A few points currently have
our priority:
-
Further development of the graphical drawing mode. First, the
upcoming support of Cairo, OpenGL, etc. should
improve the rendering quality. Secondly, we intend to allow the
user to create new macros, either by explicit constructions or
constrained-based constructions. Finally, we would like to
incorporate several features which are typically found in editors
of vector graphics, such as Inkscape.
-
Extended features for computer algebra sessions, such as automatic
folding of large expressions, lazy output (with subexpressions
which can be further evaluated by clicking on them), cas-aided
writing, etc.
-
Providing more semantics to mathematical formulas by providing a
simple way to construct parsers and pretty printers and to use
them for establishing a bijection between presentation and content
markup for certain well-defined languages.
-
Continue the development of remote TeXmacs servers for providing
web-based services in combination with TeXmacs. These services
comprise chatting (with mathematical formulas) and collaborative
authoring.
-
Development of universal spreadsheet tools, which can be connected
to any external plug-in for doing the computations. In a similar
vein, external plug-ins might be used to draw graphs of functions
in the graphical mode.
15.3.Ongoing external
developments
Some people which are not part of the core development team use
TeXmacs for other projects. We do our best to support such external
developments and make the necessary changes inside TeXmacs when
necessary. Here follows a list of a few initiatives that we are
aware of:
-
Lionel Mamane is developing a plug-in for the Coq proof assistant, called Tmegg. A first version of this plug-in is about to
be released; please check Lionel's homepage. Similarly, Henri
Lesourd is developing an interface to the Omega
system. The use of TeXmacs as a front-end for proof assistants
and theorem provers raises interesting questions about
asynchroneous plug-in evaluations, keeping track and appropriate
rendering of the state of a prover, appropriate mathematical and
proof markup, etc.
-
Saugata Basu, Richard Pollack and Marie-François Roy have
written an interactive book “Algorithms in Real
Algebraic Geometry” using TeXmacs. Any people interested
in developing addional interactive features inside TeXmacs are
invited to contact us.
-
TeXmacs is used in combination with Maxima
in a high-school education project at the Lycée
Villegénis at Massy Palaiseau
(nearby Paris). In view of this project, we
intend to further simplify the user-interface and to make it
easier to install up-to-date TeXmacs versions under Windows.
-
Felix Breuer and formerly David
Mentré have considered developing a literate
programming plug-in for TeXmacs. Any concrete implementation
of their proposals would happily find its way into the main
distribution.
If you want to start a project based on TeXmacs, then please let us
know.
© 1999–2003 Joris van der Hoeven