incubator-lucy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nathan Kurz <>
Subject Re: [lucy-user] Mostly re: the SWIG part (was Re: [lucy-user] Question about query parsing API
Date Fri, 25 Feb 2011 19:45:53 GMT
On Fri, Feb 25, 2011 at 6:56 AM, Andrew S. Townley <> wrote:
> The advantages of SWIG are that it's pretty widely used, and anyone with experience with
both the source and the target binding language can usually get something working in hours,
not days.  It seems to me that for lucy to get the adoption it needs to grow communities
in other circles besides Perl, you need to start doing some marketing about how much easier
it is for Joe-random-developer to take a Clownfish-enabled project and automatically generate
the language bindings of their choice.

As Marvin's lost post claimed, SWIG is not really a good fit here.

> a) Learn Clownfish
> b) Implement Clownfish -> Lang conversion routines (in Perl?)
> c) Run it on the lucy source
> d) write binding tests
> e) tweak bindings and/or conversion, e.g. goto b
> f) rinse & repeat

Essentially correct, although it will soon be possible to do this with
only C and the target language (no Perl required).  Also on the bright
side, most of the heavy lifting only has to be once for Clownfish,
rather than once per project.  Unfortunately, this lifting is heavy
and has yet to be done, and will initially require working closely
with Marvin.

Realistically, your hypothetical Joe-random-developer isn't going to
be able to do this.  While turnkey documentation would help, that time
would probably be better spent just making/polishing the bindings
themselves for the most likely languages, which I'd guess would be
Perl, Ruby, and Python.  The full documentation can follow after these
are solid.

> I really like the mechanisms you're using in Clownfish--I really do, but it isn't going
to matter much (except for KinoSearch/Perl users) if there aren't people able to easily create
language bindings--no matter how much more powerful the plumbing is than SWIG or other approaches.

I think you're on the right path, but the bar is actually a bit
higher.  Lucy is not going to get significant traction in any language
until the bindings are sufficiently solid that Clownfish doesn't even
come up.  I think it's a great tool for the purpose, but it's a core
developers tool rather than an end-user tool.  It's more akin to
porting SWIG to a new language than merely adding a SWIG interface.

What's needed is a few more core developers (such as yourself) with a
strong language-specific itch and a willingness to dive into the C.
Once that works done (once), Lucy should start to spread pretty

Nathan Kurz

View raw message