In the case of RPC, I think, not just Python and Java, but all supported
languages, should be compatible with each other.
Tibor
On 12/02/2013 10:56 PM, Philip Zeyliger wrote:
It sounds like you're proposing to break language API compatibility.
Are you also proposing to break wire compatibility for Avro HTTP RPC,
Avro Netty RPC, and/or Avro datafiles?
I'd be appreciative of a mechanism by which systems that happen to use
Avro currently need not be forced to choose one version or another.
(One approach to this is to use a different package name.)
As for adding to your list, I'd like to see a code-generated API for
Python. (We like to call these APIs "specific" but I find that
terminology confusing.)
-- Philip
On Mon, Dec 2, 2013 at 1:42 PM, Christophe Taton
<[email protected] <mailto:[email protected]>> wrote:
Hi all,
Avro, in its current form, exhibits a number of limitations that
are hard to work with or around, and hard to fix within the scope
of Avro 1.x : fixing these issues would introduce incompatible
changes that warrant a major version bump, ie. Avro 2.0. An Avro
2.0 branch would be an opportunity to address most issues that
appeared held back for compatibility purposes so far.
I would like to initiate an effort in this direction and I am
willing to do the necessary work to gather and organize
requirements, and draft a design document for what Avro 2.0 would
look like. For this reason, if you have opinions regarding an Avro
2.0 branch or regarding issues and features that could fit in Avro
2.0, please reply to this thread.
To bootstrap, below is a list I gathered over the last couple of
years from several discussions:
* Specification
o Improved support for unions (incompatible change with
named unions and union properties).
o New extension data type, similar to ProtocolBuffer
extensions (incompatible change).
o Clear separation between Avro schema (data format) and
specific API client concerns: for example, the way Avro
strings are exposed through the Java API should not
pollute the schema definition. Each particular Java client
should configure their own decoders with the way they want
Avro strings to be represented.
o Clarification of compatibility and type promotion (safe
lossless conversions vs. best-effort lossy conversions):
promoting int to float potentially loses precision, which
is not necessarily acceptable for all clients. Avro
decoders should let clients configure which mode they need.
* IDL
o Generalized IDL for Avro schemas.
o Support for recursive records.
o Meta-schema : IDL definition for a schema.
* Java API
o Truly immutable schema objects (no properties / hashcode
mutation after construction).
o Immutable records.
o Complete record builder API (current record builders do
not play well with nested records).
o Complete generic API (there currently is no GenericUnion
or GenericMap).
o Improved unions support : union values as java.lang.Object
are less than ideal; union values could expose the union
branch through an enum (nulls could be handled specifically).
* Python 3 support
* RPC
o SASL support
o Full Python/Java parity and interoperability.
Please, comment or extend this list. Provided enough interest,
I'll happily digest feedback and organize it into a document (most
likely a wiki page?).
Thanks,
Christophe