incubator-lucy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew S. Townley" <>
Subject Re: [lucy-user] Mostly re: the SWIG part (was Re: [lucy-user] Question about query parsing API
Date Sat, 26 Feb 2011 13:26:43 GMT

On 25 Feb 2011, at 7:45 PM, Nathan Kurz wrote:

> 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.

I wasn't really advocating SWIG as a solution with the above; more that it's a known beast
and people can create bindings for something they don't know the internals for relatively
easily.  I get why you've gone with something like Clownfish.

>> 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
> 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
> easily.

I get what you're saying, but here's the rub for me:  I'm not really a developer anymore--I
just play one on TV. ;)  At the moment, I'm wearing about 10 different hats, and I'm trying
to stabilize my own platform so I can divest myself of as many development responsibilities
as possible.  If I don't, I won't be able to do a lot of the other work that I need to be

I'm confident that I *could* do the Ruby bindings, I'm just not sure that taking on yet another
development task is very smart right now.  Puts me in a rather unpleasant dilemma, actually,
because I want to help, and I suspect that I'm going to hit more issues with Ferret as I go
along since it doesn't seem to be designed exactly for how I want/need to use it.  Unfortunately,
I can't make any more promises at the moment. :(

Andrew S. Townley <>

View raw message