On 25 Feb 2011, at 7:45 PM, Nathan Kurz wrote: > On Fri, Feb 25, 2011 at 6:56 AM, Andrew S. Townley <[email protected]> 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 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 > 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 doing. 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. :( ast -- Andrew S. Townley <[email protected]> http://atownley.org
