Return-Path: X-Original-To: apmail-incubator-lucy-dev-archive@www.apache.org Delivered-To: apmail-incubator-lucy-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 394E64C54 for ; Sat, 4 Jun 2011 13:27:56 +0000 (UTC) Received: (qmail 12471 invoked by uid 500); 4 Jun 2011 13:27:56 -0000 Delivered-To: apmail-incubator-lucy-dev-archive@incubator.apache.org Received: (qmail 12373 invoked by uid 500); 4 Jun 2011 13:27:55 -0000 Mailing-List: contact lucy-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: lucy-dev@incubator.apache.org Delivered-To: mailing list lucy-dev@incubator.apache.org Received: (qmail 12346 invoked by uid 99); 4 Jun 2011 13:27:55 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 04 Jun 2011 13:27:55 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [209.98.116.241] (HELO pekmac.local) (209.98.116.241) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 04 Jun 2011 13:27:48 +0000 Received: from pekmac.local (localhost [127.0.0.1]) by pekmac.local (Postfix) with ESMTP id 2308C587076 for ; Sat, 4 Jun 2011 08:27:27 -0500 (CDT) Message-ID: <4DEA32BE.3060403@peknet.com> Date: Sat, 04 Jun 2011 08:27:26 -0500 From: Peter Karman Reply-To: peter@peknet.com User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: lucy-dev@incubator.apache.org References: In-Reply-To: X-Enigmail-Version: 1.1.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Subject: Re: [lucy-dev] Lucy the Library Scott Gonyea wrote on 6/4/11 12:05 AM: > Is there any work happening, on making Lucy into a distributable library? I'd > love to write some Ruby FFI bindings... But that can't happen unless lucy can > be compiled/installed and linked against. > > I'd love to help out and spread lucy. It looks like a terrific project. :) > Hi Scott, Glad to hear you are interested in helping out with Lucy. The project has its origins in a collaboration between a Perl and a Ruby project, so getting a Ruby implementation underway (again) is a priority for us. Lucy isn't designed as a linkable library, though that's a common misunderstanding (I had that misunderstanding at first too). The traditional model is a standalone C library, compiled independently, and then a dynamic language like Ruby, using something like SWIG or FFI, gets linked to the C library and accesses the C library functions through the dynamic host language bindings. Instead of that traditional model, Lucy provides a nearly-complete C implementation, like a kit. Each dynamic host language then needs to write some required functions in a binding module using Clownfish, and then the whole thing is compiled once into a language-specific binary. There is no independent, linkable C library. That's actually a feature. The Lucy model arose out of a desire on the part of the KinoSearch (Perl) and Ferret (Ruby) projects to share C code between them, while retaining the highly idiomatic and language-specific optimizations of the respective projects. They could have done the traditional linkable C library approach. IMO the Clownfish approach offers some nice advantages, not least the ability to override C classes in the native host language. We want to make it easy to get started on a new language implementation, like Ruby. To that end we're discussing right now[0] an example implementation so that folks like yourself could have some grok-able working code to start from. Please stick around. I'm sure Marvin Humphrey will have some ideas about places to look to start familiarizing yourself with how Lucy and Clownfish work. [0] http://s.apache.org/x9 -- Peter Karman . http://peknet.com/ . peter@peknet.com