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 <ni...@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.
rb
--
Ryan Blue
Software Engineer
Cloudera, Inc.