avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ryan Blue <b...@cloudera.com>
Subject Re: [DISCUSS] Release and code management
Date Mon, 16 Nov 2015 20:22:03 GMT
On 11/16/2015 08:10 AM, Sam Groth wrote:
> So I have developed for a similar scenario where we had APIs in 3 different languages
that needed to be kept in sync. The releases were split, and we only had some high level tests
to verify compatibility and therefore had to be very careful what changes we made to avoid
failures across many different use cases of our APIs. There were a few people who were required
to review any changes to this API. I feel that in a project with as many implementations as
Avro, it will be difficult to have this same level of review. If it's possible to write some
linked tests for most of the implementations like Niels suggested, it should be ok to split
the releases. We would still have to pay close attention to changes in these test cases.
> Sam

I agree with the need to validate that files are to spec, but we 
currently have that problem regardless of whether we release components 
as a group or individually. Right now we don't do much cross-language 
testing at all so I think this should be a goal (an important one!), not 
a requirement for changing our releases.

>       On Saturday, November 14, 2015 7:54 AM, Niels Basjes <Niels@basjes.nl> wrote:
>   Hi,
> First of all a +1 from me to move to git.

Sounds like we have consensus around moving to git, so at least we can 
get that started.

> Regarding the "how many parts and the release cycle";
> In general I'm in the "release often" camp.
> Yet I understand the needless confusion if a certain language has not
> changed.
> How about this idea:
> We create a separate project (avro-spec) with the specification/testcases
> and such that guard the language specification. All language specific
> implementations must reference this (perhaps by using the git feature of a
> "linked submodule") and run the tests during the language specific deploy.
> The version of this module therefor the version of the Avro format
> specification.

This is similar to what we do in Parquet: we have a parquet-format 
project that has meaningful versions for file compatibility. The version 
for this dependency doesn't necessarily determine the version of a file 
because the API can choose what underlying version it uses.

> I think it would be good if these modules use a version that essentially is
> <avro-spec version>-<library version>
> This way the libraries can have a separate release cycle and still clearly
> indicate the supported Avro specifcation.

I think this makes sense. Right now, while we have only one version of 
the file format, do we need to include the format version in all version 
numbers? We could put off that step when we have more than one format 
version to worry about.


Ryan Blue
Software Engineer
Cloudera, Inc.

View raw message