Skip to content

google.golang.org/protobuf versioning is confusing #1049

@sylr

Description

@sylr

Hi,

This morning I stumble upon a tweet linking to the golang blog's entry announcing the release of APIv2 of this project.

On a strict naming and versioning level I'd like to express my personal thought which tells me it would have been very hard to do things more wrong.

First of all you have chosen to release a new NON backward compatible version of your project, that you don't hesitate to name APIv2, with the tag v1.20.0 although the last tag of the previous line was v1.3.4. How could you not see how this is highly confusing ?

I can't understand why you chose to do that instead of tagging your new API v2.0.0.

Changing the import path from github.com/golang/protobuf to google.golang.org/protobuf does not make it right. It should have been a v2.0.0 tag.

And what about that change of import path ? Why ? How is that a good idea to have two different import path for the same project for two different branches ? How does one tell which is the new one from the old one from those import paths ?

Why was it wrong to have github.com/golang/protobuf and github.com/golang/protobuf/v2, which, by the way, is the convention enforced by go mod ...

And if the change of import path was mandatory (I don't want to assume why), then it should have been google.golang.org/protobuf/v2.

Also what about https://github.com/protocolbuffers/protobuf-go vs https://github.com/golang/protobuf ? Which one is supposed to be the good one ? At this time you cannot post issues to the first one but you can open PRs on both ...

So, to summarize, you decided to ignore of both SEMVER and go mod conventions resulting with a high level of confusion.

I really hope that no one will take example on what you've done here for their own projects.

Regards.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions