incubator-lucy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marvin Humphrey <>
Subject Re: effort
Date Sat, 21 Nov 2009 04:19:01 GMT
On Fri, Nov 20, 2009 at 08:17:55PM -0600, Peter Karman wrote:

> I have some time. How can I help?

I'd say that the easiest place to make a difference right away would be
simplification of Charmonizer.  There are lots of other tasks you're qualified
to take on, but they require more up-front investment.  Furthermore, if you
grok Charmonizer, it will be slightly easier to grok other parts of Lucy.

Conceptually, Charmonizer is just "using C to configure C".  It's supposed to
be easy to understand.  

Any place where Charmonizer's architecture *isn't* easy to understand is a
design flaw.

The goal is to have you and Nate to acquire a sense of mastery over the
Charmonizer layer, while reducing the effort that others will have to expend
in the future to acquire the same sense of mastery.  

I don't expect that major changes will be necessary, but if you come up with
something and you can persuade us that it makes things easier to grok, so be

The two tasks I'd suggest are superficial style changes which will serve to
familiarize you with most of Charmonizer's modules.

Task #1:

    The core Lucy code base has adopted a naming convention taken from the Perl
    code base: the names of all static functions are prepended with "S_".
    Charmonizer predates the adoption of this convention; we should switch
    over to it:

     /* Write the "_charm.h" file used by every probe.
     static void

Task # 2:

    Again in core Lucy, function names in .c files always use "short names"
    whenever the "LUCY_USE_SHORT_NAMES" macro is in effect -- e.g. we use
    "Sort_mergesort" rather than "lucy_Sort_mergesort".  
    Within Charmonizer, we should be consistent about using short names
    everywhere the "CHAZ_USE_SHORT_NAMES" macro is in effect, but currently
    there are lots of places that we don't -- e.g. we use "chaz_Test_plan"
    rather than "Test_plan" within charmonizer/src/Charmonizer/Test.charm:

    -chaz_Test_plan(TestBatch *batch)
    +Test_plan(TestBatch *batch)
         printf("1..%u\n", batch->num_tests);

    To see a list of offenders, run the following command from trunk/:

    find charmonizer/src -print | grep "\.c" | grep -v svn | xargs grep chaz_[A-Z]

If you aren't interested in working on Charmonizer, we'll still be able to
find things to do.  However, the things we need most right now are boring,
somewhat more difficult, and offer little immediate gratification.  Most of my
time these days goes into porting KS's test code to C and increasing test
coverage.  Simultaneously, I'm removing kludges and fixing known bugs.  If
there's a module you want to do that for, let me know.

If nothing has piqued your interest so far, please pick a part of Lucy that
interests you, without regard to whether it advances us towards our primary
goal of an initial Lucy release.  I'll iterate over proposed changes with you
until we arrive at a patch that's suitable for Lucy -- just as we've done in
the past with KS.


Marvin Humphrey

View raw message