[ 
https://issues.apache.org/jira/browse/AVRO-1329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17103927#comment-17103927
 ] 

Felix GV edited comment on AVRO-1329 at 5/10/20, 7:28 PM:
----------------------------------------------------------

Hindsight being 20/20, having syntactic coherence between record fields and 
enum metadata does sound appealing. However, if an incompatible schema spec 
change is under consideration, then making field definition in a map-style 
rather than an array-style fashion is theoretically also on the table...

Personally, I think (or rather, hope) that this ship has sailed. In my opinion, 
having a 2.0 version at all would be a monumental failure. The one thing that a 
serialization spec ought to do is maintain compatibility as religiously as 
possible. I would argue that any fully-incompatible changes (i.e. not even 
backwards compatible) should be a whole new project/fork, rather than parading 
as a 2.0 version of a project that intrinsically should never have a major 
version bump. We can call it Captain Avro or whatever.

So essentially, my point is that there are 2 paths:

1) We consider backwards incompatible changes unacceptable, which means the 
symbols array will remain forever no matter what, and we need to make the best 
of the hand we’ve been dealt in terms of defining symbol metadata.

2) We consider incompatible changes acceptable, in which case, changes can be 
defined in any part of the spec (i.e. record field definition is also eligible 
for a facelift, not just enum definition).

Personally, I prefer working under model (1), but I would be curious to hear 
the rest of the community’s opinion. Also, any plan we cook up should take into 
account not just the ACSC spec but also the IDL one.


was (Author: felixgv):
Hindsight being 20/20, having syntactic coherence between record fields and 
enum metadata does sound appealing. However, if an incompatible schema spec 
change is under consideration, then making field definition in a map-style 
rather than an array-style is theoretically also on the table...

Personally, I think (or rather, hope) that this ship has sailed. In my opinion, 
having a 2.0 version at all would be a monumental failure. The one thing that a 
serialization spec ought to do is maintain compatibility as religiously as 
possible. I would argue that any fully-incompatible changes (i.e. not even 
backwards compatible) should be a whole new project/fork, rather than parading 
as a 2.0 version of a project that intrinsically should never have a major 
version bump. We can call it Captain Avro or whatever.

So essentially, my point is that there are 2 paths:

1) We consider backwards incompatible changes unacceptable, which means the 
symbols array will remain forever no matter what, and we need to make the best 
of the hand we’ve been dealt in terms of defining symbol metadata.

2) We consider incompatible changes acceptable, in which case, changes can be 
defined in any part of the spec (i.e. record field definition is also eligible 
for a facelift, not just enum definition).

Personally, I prefer working under model (1), but I would be curious to hear 
the rest of the community’s opinion. Also, any plan we cook up should take into 
account not just the ACSC spec but also the IDL one.

> Get per-symbol doc for enums
> ----------------------------
>
>                 Key: AVRO-1329
>                 URL: https://issues.apache.org/jira/browse/AVRO-1329
>             Project: Apache Avro
>          Issue Type: Improvement
>          Components: doc
>    Affects Versions: 1.7.4
>            Reporter: Felix GV
>            Priority: Minor
>
> It would be nice to have the ability to add documentation for each symbol of 
> an enum.
> Doug Cutting, quoted from the mailing list:
> Documentation per enum symbol is not currently supported, but would not be 
> difficult to add. Please file an issue in Jira if you'd like to see this. For 
> compatibility, in Json, this would probably appear as a parallel array of 
> documentation strings, e.g., something like:
> ("name": "Foo", "type":"enum", "doc":"an enum", "symbols":["X","Y"], 
> "symbols-doc":["X is X", "Y is Y"]}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to