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
