This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: guile: going the way of DEATH




I'm not going to add anything to this discussion other than to say that I
 agree completely with the opinions below.  We've done alot of TCL work
here in the past simply because there hasn't been a better alternative in
terms of packaging, stability, and embeddability.  I've been on the fence
for a while hoping to be able to use GUILE once a well packaged / tight
release is available.

I would encourage the GUILE development community to take note.  I would
hope that this development effort can transform towards being more of a
product rather than an academic excercise.

Alexander L. Belikoff wrote:

> Hello everybody,
>
> What I'm gonna say will probably offend many of you. But my point is
> that it is better to discuss it now, before Guile is completely dead.
>
> John Osterhout's Tcl was designed with several goals in mind. So far,
> Guile hasn't addressed any of them:
>
> 1. Tcl is a *small* library, which is critical for an extension
>    language: libtcl.so is ~400K. Guile is very big - current version
>    of libguile.so is more than 1Mb - almost three times as big as
>    libtcl.
>
> 2. Tcl was written from scratch and consisted of a small number of
>    clean interfaces, defining the language and a small C API for
>    extensions. This was enough (and still is). All other Tcl-related
>    stuff is just a bunch of optional extensions.
>
>    On the opposite, Guile was initially based on one implementation of
>    Scheme (SCM) with some pieces borrowed from another one. This led
>    to a horrible mix of interfaces and interdependencies in the code.
>    Also, nobody even tried to define both Scheme and C API - they are
>    still in flux and dirty, lacking logical order.
>
> 3. Tcl has a very elegant GUI toolkit, which is not just a set of
>    X11 or Motif bindings.
>
> 4. Finally, Tcl was actively promoted for applications with frequent
>    bugfixes and releases.
>
>    Guile in this sense, is doing the other way: the only 'official'
>    release is the brain-dead 1.2 (dunno about that one, but 1.0 took
>    about 8 (eight) seconds to load a 'guile' program on my old 486),
>    which is about 2 years old. On the other hand, the Red Bean folks
>    are quetly developing Guile at their site, making snapshots
>    available. However, snapshots are different from releases - they
>    don't give people a comfortable feeling of program's getting mature
>    and they don't give developers an incentive to make a program ready
>    for general public: one can just keep producing snapshots forever.
>    The snapshots are used just by a bunch of enthusiasts, thus lacking
>    wider feedback, so the developers may not get an idea of what
>    most people really need, what the *real* priorities must be!
>
> All the above, in my opinion, is steadily leading us to the death of
> Guile. People will forget about it long before the next release and
> the only thing they will remeber would be the "Guile vs Tcl" flamewar,
> which led to nothing.
>
> Still, I think we have a chance. We must learn a number of lessons and
> if we do that, we'll be able to revive the project and to make Guile a
> standard and reliable GNU extension language.
>
> In my opinion, the following must be immediately done about Guile:
>
> 1. Interfaces must be defined and frozen. I mean both Scheme and C
>    ones. This is the most important thing now. The users (people
>    developing using Guile) must have a clean set of API and be sure
>    they won't change from release to release (at least,
>    significantly).
>
>    OTOH, nobody cares what really is inside Guile - whether it is SCM
>    or VSCM, or SIOD - this must be *completely hidden* from a user.
>    Same goes for garbage collection engine.
>
>    Once we define and freeze the API, we may produce a Guile reference
>    manual which won't change in the future.
>
> 2. Small is not just good. It is vital for an extension language. The
>    API must be *small*. Let's learn from Tcl. I'd suggest the
>    following set of API:
>
>    Scheme: R4RS, *basic* process I/O, formatted I/O, symbol table
>    access, regular expressions, *very basic* OS interface (directory
>    reads, system(), exec) - I'm literally going through the Tcl
>    reference manual
>
>    C: interpreter management, file loading, string code
>    interpretation, module creation API - modules must be .so files to
>    be dynamically loaded. This will give us the extensions development
>    framework.
>
>    And that's basically it. This would be THE Guile and it would be a
>    perfect base for further extensions development. People would be
>    able to provide extensions without cluttering Guile itself. After
>    all, not everybody needs SCSH compatibility, let alone the
>    notorious Ice - 'Guile Operating System'.
>
>    Until THE Guile is ready, I'd suggest temporary stopping of the
>    development of some other ambitious Guile-related projects: SCSH
>    compatibility and the compiler.
>
>    In the meantime, we may adapt the existing version of Guile to THE
>    Guile. But in the future, we may consider rewriting the Guile
>    interpreter from scratch to get away from SCM legacy.
>
> 3. Once it is done, several extensions must be developed (as .so
>    modules):
>
>    POSIX O/S services - to allow those developing OS utilities in
>    Guile greater control.
>
>    Low level socket interface - for the same reason.
>
>    A GUI module. I am not sure it should be Tk. After all, Tk still
>    contains a lot of Tcl legacy bindings, which would mess the things
>    up. I'd rather go for some C GUI toolkit and would make Guile
>    high-level bindings for it, learning from Tcl/Tk success. The
>    bindings must be really high level - not just the mapping to C API.
>
>    So far, the most obvious and attractive choice is GTK. It is stable
>    enough, it is THE GNU GUI toolkit, and it is supposed to be a GUI
>    of forthcoming GNU Desktop - Gnome.
>
> 4. *Official* releases must be fairly frequent - every 3-4 months.
>    This would grant wide feedback, which, in turn, would grant, we are
>    working on right prioroties. Guile advertising must be somehow
>    aggressive - it must be emphasized that Guile IS a standard GNU
>    extension language, and it IS ready for general use. People must be
>    shown, how easy it is to write  stuff in Guile, how it simplifies
>    things compared to C/GTK+
>
> I'd like to hear your comments. In particular, I'd like to hear from
> Guile development team. What I propose requires significant changes in
> their practices, so I'd like to know, what they think about it...
>
> Regards,
>
> --
> Alexander L. Belikoff
> Bloomberg L.P. / BFM Financial Research Ltd.
> abel@bfr.co.il
>
>