On 01/12/2016 05:09 AM, Aki Sukegawa wrote:
Speaking about versioning, semver mandates us a defined set of public API
that is covered by it.
As I don't think we can document every individual API, we need a set of
rules that can decide what belongs to public API.
For example, Protocol.readFieldEnd, is it public API ?


This seems like a shortcoming of "semver" for something like Thrift... in my mind the concept of a public "API" for Thrift is multifaceted (are we talking about the semantics of serializing/deserializing, the IDL file format, the CLI for compiler, etc). I'm not saying that "semver" is bad or anything just that it may not easily align with all projects.

The situation is further complicated by the fact that each language lib has its own "API"... so, for instance, some if change in the PHP lib mandates rolling over the version number then that could have adverse effects in other languages' package managers that base defaults off of "semver" versioning (please correct me if I'm wrong about this... I'm not too familiar with those tools I'm just basing my statement off of what I've seen posted on this list). I'm not sure how to solve that... seems like it might be difficult to make everyone happy in that regard.

In any case, in my mind the "public API" should at least include the IDL file format, the CLI, and the semantics of the read* and write* methods, and the common means of instantiating servers and clients in the various language libs.



Reply via email to