An Interview with GNU Guile Maintainer Marius Vollmer
For those who aren't familiar with Guile, can you give an brief
description of what it does and its role in the GNU Project?
The name "Guile" stands for "GNU's Ubiquitous Intelligent Language For
Extension". You could argue about Ubiquitous and Intelligent, but it
certainly is a general purpose extension language.
Emacs Lisp is probably the best example of an extension language: in
addition to being an editor that can be controlled interactively by
the user, Emacs can also execute Lisp programs and these programs can
perform editing operations or other actions. When the programs are
simple, one might call them "macros" or "scripts" but Emacs Lisp is
powerful enough to allow the writing of big applications such as a
mail and news reader, a web browser or games.
However, Emacs Lisp is tied to Emacs and the Lisp dialect it
implements is not very modern. Guile is intended to fix this: it
offers Scheme as the basic language and it comes as a library that can
be linked into any program that wants to be extensible.
The application can add new functions and data types and Scheme code
can then use them. The Scheme programs in turn can define functions
that are invoked by the application whenever appropriate. For
example, a window manager might offer functions for moving windows
around and the user might write a Scheme function that arranges
windows just like he wants it and bind it to a menu or key.
Another fundamental idea about Guile is that it was planned to offer
more than one language. Not all people might like Scheme, and for
those people we want to have a syntax that is more like C or Python,
say.
The role of Guile in the GNU Project is that all packages that want to
be extensible should use Guile, including Emacs.
What is the current status of Guile, and can you tell us a little
about the history of the project?
We have two branches of development right now: a stable one that only
gets bug fixes, and one where all the new developments happen. This
reflects the status of Guile. It is complete and stable enough to be
used for serious things, but at the same time, there are numerous
opportunities to improve the external API as well as the internals if
Guile itself.
In the development branch, we have better multi-threading support, for
example, we use GNU GMP for arithmetic on large numbers, debugging
support has been improved and the module system has been made more
predictable.
Guile has been started in 1994 when RMS posted "Why you should not use
Tcl" to comp.lang.tcl, resulting in the infamous "Tcl War"
(http://www.vanderburg.org/Tcl/war/). In that article, he stated that
extension languages like Tcl are important but that Tcl is not
powerful enough for writing big applications. RMS then came up with
the initial design for Guile (which was called GEL at that time, I
think, but no release was made with that name).
Before you became maintainer who were the other people who worked on
Guile?
The first maintainer was Tom Lord, who was followed by Jim Blandy.
Then Mikael Djurfeldt and Maciej Stachowiak and later myself joined
Jim. Gradually, people dropped out from this 'gang of four' (or
'guile fours', as I liked to call us) and but I'm still left. Many
skilled people are working on Guile and some can be regarded as
co-maintainers: Rob Browning is doing the 1.6.x releases among other
things, Neil Jerram is working on the manual, and I would like the
audience to give a big hand to Dirk Herrman for skillfully cleaning up
the messiest internals of Guile, and to Kevin Ryde for a god-like
amount of high quality bug fixes.
Many people are aware of some popular applications which use Guile,
such as GIMP and Gnucash. Could you tell us about some other
applications which also use it?
Actually, the GIMP uses SIOD, which is the predecessor to SCM.
Some Guile using applications that I find interesting are TeXmacs (a
scientific text editor with high quality wysiwyg), Snd (a sound
editor), Guppi (a data plotter and analyzer), LilyPond (a music type
setter), GNU Robots (a game), and GNU MDK (a MIX development kit).
Are there any GNU programs which don't use Guile currently, that you
would like see converted to use it?
Nothing specific, but then again I don't have a good overview of all
the GNU programs. I guess the Gimp would be nice. Also, having
access to the Gnome APIs.
If somebody wants to use Guile as a simple extension language for an
application -- for example, for reading runtime-parameters like
strings and numbers from a "dotfile"-type configuration file -- is it
complicated to do that?
No, I don't think so.
However, there are so many ways to integrate Guile into your
application, the hardest part might be to decide which way to chose.
You could use Scheme data syntax in your dotfile and just use Guile to
parse it, or you could execute your dotfile as a Scheme program (the
way Emacs executes .emacs as Lisp). You can design a special purpose
language (which is really easy in Scheme) and interpret the dotfile in
that language. Etc.
How would you compare Guile with other languages such as Perl, Python,
Tcl and Ruby?
In theory and in my opinion, Scheme is the best language of them all,
but there is nothing fundamentally wrong with Perl, Python, Java, etc.
The more options there are, the better.
In practice, core Scheme is missing important real world features such
as records, hash tables, generic functions, standardized error
handling, name spaces, or established libraries for tasks such as
string handling or accessing the operating system. Each Scheme
implementation adds these and additional things on top of 'Standard
Scheme', but each in its own way. The Scheme community is working on
this with the 'Scheme Requests for Implementation' (SRFIs) and things
look better each day.
As to Guile specifically, I think that it clearly has drawbacks
compared to other Scheme implementations but it still offers the
easiest way to embed it into your application (and it is getting
easier). Some common things might seem to be a bit complicated, such
as getting a backtrace from within C code, but everything is possible.
What is your background as a developer? How did you become active in
Guile and free software?
I'm a self-taught hacker; I was always more interested in programming
than in gaming. I still remember when I discovered the assembly
language of the Commodore C128. That was way cooler than any of the
games. Later, I discovered GCC on some fish disks for the Amiga and I
was pretty thrilled that you could get the complete source for a real
compiler. My Amiga was too small for really playing with the source,
and it was over my head anyway. But I was totally impressed that such
a thing existed, and I learned about the rest of the GNU Project, and
about the mission of Richard Stallman, and it all made so much sense
to me.
Later, when a friend showed me this new Linux thing that he was to
trying out, I bought my first PC and installed Slackware on it, from
about thirty floppies. I'm pretty proud that I never did DOS or
Windows.
The rest followed naturally. I do all my work with Free Software, and
the thing that interested me most was Guile. I started contributing
stuff and eventually, I became its maintainer.
Apart from Guile, what do you work on?
I'm in my last month of being a research assistant at the University
of Dortmund, in the department for Electrical Engineering and
Information Technology. I haven't really started yet to look for a
new job (but I'm open to suggestions...)
I also enjoy hacking on 'Gossip' (http://www.nongnu.org/gossip), the
simulator that I've written for my thesis work. Of course, it is
based on Guile.
Is there any story behind how you became a supporter of the free
software philosophy?
No, not directly, I was lucky enough to not have come into significant
contact with proprietary software at all. But my limited experience
with it has only reinforced my commitment to Free Software. These
proprietary software vendors promise so much, keep so little, and
don't let you fix their bugs. It's appalling.
What do you think the main challenges are for the free software
community today, and the best way to overcome them?
In the past, one challenge was to find enough people to work on Free
Software. Today, I think the main challenge is that we have to fight
to be allowed to work on Free Software. Things like software
patents, the DMCA, the push for the perversions that are 'Trusted
Computing' and 'Digital Rights Management', they all work against us.
It might even seem as if the technical progress that enables society
to advance nowadays comes from the hacker community and small,
independent firms, not from the big 'innovators'.
This only tells me that Richard Stallman was right all along: it is
all about freedom.
From your experience of working on Guile do you have any practical
tips or wisdom you'd like to share with other developers?
Only the usual ones: keep it simple and optimize later.
If somebody wants to learn more about Guile (or Scheme) are there any
books or tutorials that you would recommend?
The web site http://www.schemers.org/ is a good starting point for
Scheme in general. It lists online resources and has book
recommendations, among other things. Documentation for Guile can be
found at http://www.gnu.org/software/guile.
Thanks for taking the time for this interview and for your work on
free software!
Thank you for doing GNU Friends!