From: Andy Wingo <wingo@pobox.com>
Subject: Re: guile-lib things
Date: Tue, 29 Jun 2004 18:43:51 +0100 [thread overview]
Message-ID: <1088531031.1484.94.camel@localhost> (raw)
In-Reply-To: <20040627214307.GT3998@backlot.linas.org>
Hey folks,
Ya'll have made me nearly reverse my position, FBOFW :P
On Sun, 2004-06-27 at 16:43 -0500, Linas Vepstas wrote:
> On Fri, Jun 25, 2004 at 01:31:29PM -0500, Rob Browning was heard to remark:
> > Andy Wingo <wingo@pobox.com> writes:
> >
> > > [0] At one point, I wanted strictly taxonomic names for the
> > > modules.
> >
> > That said, I tend to prefer flatter namespaces for modules when
> > there's a choice. For example, modules like (text regexp pcre), (db
> > relational sql postgresql), or even (graphics opengl) seem
> > unnecessary and even potentially confusing to me.
>
> Yes! Deep taxonomies also hinder authors who are working on
> new stuff, which tends to cross boundaries: if it could be easily
> classified, it would be a whole lot more boring, and maybe not
> worth doing .... For example, suppose you had to classify a blog
> tool, say 5 years ago. What category would you have put it then?
> Is slashdot a blog or a news agregator? Who knows?
This strikes me two ways:
One, that the examples you give are examples of applications, not of
library routines. Modules == library routines, syntax, hooks, etc. Most
larger applications will have modules, of course, but that's separate --
those modules would be part of the app, not part of a library.
The second way this strikes me is that many guile programmers want flat
hierarchies. Your statement has been echoed quite a bit in the past. At
the risk of resurrecting horses only to beat them yet again, I'd make
some assertions:
1) There is a place for hierarchy in modules.
I take as evidence:
(a) Packages can have pieces. In my case, I built a texinfo processing
framework. There's a parser, an html transformer, a plain-text
transformer, etc etc etc. (texinfo-parse), (texinfo-to-html), etc are
manifestly stupid names, and moreover hierarchy is encoded in their
names already.
(b) Routines might be small enough that they don't have a package
identity. Most things in ice-9 are that way. Modules in ice-9 would
benefit from some kind of classification. (Is this true?)
2) Deep taxonomic hierarchies are too rigid.
Evidence again:
(a) Hierarchy doesn't appear in python or perl modules, except in the
case that all modules are part of the same package, or extend a common
package. Same in C (flat library namespace), same in Debian (flat
package namespace). If packages are classified, it's only for
presentation and not in ways that matter.
Corollary: taxonomic hierarchies in guile-lib as it stands indicate that
it considers itself to be the package, and is thus not, in its current
form, a suitable distribution mechanism for third-party code.
(b) Classifications change.
So, if guile-lib wants to be a distribution point (through a centralized
mechanism or otherwise), it should adopt a flat module hierarchy. If, on
the other hand, it views itself as a single package, then the answer is
less clear. This case is closer to slib, whose documentation is ordered
taxonomically, but whose require namespace is flat.
I guess this really comes down to the question, "What is guile-lib?" Is
it a distribution point, or is it an slib? (Although slib suffers a
similar dilemma: a debugger, for example, surely has an identity as a
package, not just some routines.) What is the virtue of another slib?
Should guile-lib take things from slib, just because it's easier for
guile (think modules, insulation against slib changes)? If it is in fact
an slib, should it have a (lib ...) prefix, as would be suggested by the
guile-lib name? Is it just another ice-9, but perhaps one whose
development hasn't calcified?
I've been a bit schitzophrenic about the answer to that question lately.
In the end, guile-lib is what people make it, so input from all is
welcome to make it a resource of maximum utility. I'm still ruminating
my answer to that, perhaps more later in the week.
Cheers,
--
Andy Wingo <wingo@pobox.com>
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user
next prev parent reply other threads:[~2004-06-29 17:43 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-24 18:03 guile-lib things Andy Wingo
2004-06-25 11:48 ` Andy Wingo
2004-06-25 18:31 ` Rob Browning
2004-06-27 21:43 ` Linas Vepstas
2004-06-29 17:43 ` Andy Wingo [this message]
2004-06-30 22:20 ` Rob Browning
2004-07-08 19:01 ` Andy Wingo
2004-07-03 16:48 ` Thien-Thi Nguyen
2004-07-10 4:44 ` Linas Vepstas
2004-06-27 1:22 ` ASDF for guile (Was Re: guile-lib things) Chris Hall
2004-06-28 13:33 ` Matthew Trout
2004-06-28 13:48 ` Andy Wingo
2004-07-01 21:42 ` guile-lib things Neil Jerram
2004-07-08 19:09 ` Andy Wingo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1088531031.1484.94.camel@localhost \
--to=wingo@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).