Hello Avro Developers-

I'm interested in contributing to the Avro project and, in particular, C
bindings.  I thought it would be good to introduce myself and my tentative
plan for development early on.  Any feedback you can give will be welcomed.

I plan to start by creating a simple C library for encoding/decoding the
basic Avro types (using an API very similar to XDR, e.g. avro_int,
avro_string, avro_bytes, avro_float, avro_void, etc).  Unlike XDR, we also
need support for things like maps and default values.  In order to make the
C code as portable as possible and provide for maps, memory pools, sockets,
etc, I'm going to use the Apache Portable Runtime (APR).  Not to be too much
of a suckup here on an Apache list, but I've had really good results with
APR. :)  Ganglia has been running on APR for over four years now and it made
supporting dozens of different platforms bareable.

My initial target will be to create a C protocol compiler using the Java
code already in Avro now (in the "specific" directory).  The auto-generated
code will need to be linked against libavro (with the base types) and
libapr-1 (for maps, pools, sockets, etc).  While I understand that dynamic
typing is a goal (and strength) of Avro it that will have to wait for C
until later.  This initial work should help make dynamic typing a
possibility later though.

Does this sound like a reasonable plan?  Should I continue pushing forward
on this or should I wait until Avro spec tightens up a little more?

Thanks for any feedback you might have.

Cheers!
-Matt

Reply via email to