-
-
Notifications
You must be signed in to change notification settings - Fork 229
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change bindings version for every breaking change #335
Comments
My personal opinion is that we don't need to maintain old versions so I think I would go for tags. Perhaps we can start with version v1.0 and increment the minor version after some non-breaking updates. If we have breaking updates, then we'll increment the major version and continue from there (e.g. v1.1 -> v2.0). I figure that should be simple enough to maintain and doesn't cause a lot of problems for the users. What do you think? P.S. Do you think I should tag our current master as v1.0 now? 😬 |
Ye, this is what I proposed in the Tags way. Keep master as unstable. Add taged releases with every change (perhaps we should think about grouping several changes into one, but it seems not likely with the way development is going so far). Add changelogs to each release like this: I would like all commit names to have issue number in them if they are done in response to an issue. Since there is not much stated in the commit messages, having link to an issue helps with finding what was changed and why.
Also having one CHAGELOG.md file in root dir with all the changes from version to version is helpful. If we are going this way this is what needs to be done:
|
Alright! I think once the existing PR is merged and the few recent issues we have are solved, I will tag master as v1.0, do some of the stuff you listed and we can start practicing our process then. Although I'm not sure if we should make a tagged release for every change. Perhaps we can tag it every month for starters? As for the release note, I was wondering if we can just use Anyway, that's just my two cents. If you feel strongly about the other styles of release notes, I will support you 😬 |
Example of commit: What it should be in the changelog imo: This is what I wrote in the BREAKING.md: And it can get quite wordy to list all the changes. Name changes are really important and should not be hidden. There will be a huge list of them in our case, all done in one commit. Also I think Wine's Doing it every month is great for us, but forces others to use master branch if their issue is solved but not yet tagged. |
Hmm you have a point. How about tagging a minor version for every issue that is resolved then? I think we'll have a reasonable number of tags that way and every tag will have a purpose behind it (e.g. every new tag is a new issue fixed!). About the commit message prefix, I personally think ours is easier to read and more consistent when read in many lines. But I did ask my colleague and he also seems to prefer the slash version so maybe we can think about changing to that 😂 As for the release note, we can use Perhaps we should start writing these guidelines down somewhere, maybe in |
I've looked in other alternatives and found that there will be and official Go solution to versioning, currently known as vgo. https://github.com/golang/proposal/blob/master/design/24301-versioned-go.md $ vgo get rsc.io/quote@latest # default
$ vgo get rsc.io/[email protected]
$ vgo get rsc.io/quote@'<v1.6' # finds v1.5.2 There will be some compatibility bits for vgo in Go 1.11 (August 2018), nothing major. Though Youtube video description states:
This twit states that vgo might be merged into 1.12: The good thing is that they use tags for it to work. So what we've discussed earlier is compatible with vgo. They propose the following package structures:
module "my/thing"
require (
"new/thing" v2.3.4
"old/thing" v1.2.3
)
exclude "old/thing" v1.2.3
replace "bad/thing" v1.4.5 => "good/thing" v1.4.5
Both solutions are good if old versions are kept alive with security or feature patches. In our case one master branch with version tags is enough. We might need to add There is also this:
|
Nice find! So I guess this means we won't be required to use gopkg.in for versioning in the future. The |
I'm also thinking to tag our current version as v0.3 just so we have some breathing space as we work towards v1.0. Breaking changes since v0.2 are getting pretty long. Do you have any objection? 🤔 |
This won't hurt, go for it. There is official |
Cool! I pushed v0.3 to the repository now. |
I'm currently working on Things to point out:
ChangelogAll notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning. Unreleased// TODO 0.3.0 - 2018-05-07// TODO 0.2.0 - 2017-11-01Added
Changed
Fixed
[0.1.0] - 2017-06-01 |
@malashin Oh I didn't see this! It looks great! I just finished writing the release note but perhaps I should write a Fixed section as well. |
Wow, you did a lot :) |
You're right, I found the commit as the last one in v0.2. Gonna remove that now 😛. Thanks for the tip! |
This was done because JoyDeviceEvent's Which can contain two different types:
For C it's doesn't matter, but in Go we can't have two different types in one struct field. Convenience has nothing to do with the change, JoyDeviceEvent contained wrong type of Which on addition of joystick device. |
@malashin Gotcha! I've tweaked the description to be more correct. Although on closer inspection, I wonder if any problem will be caused by having the type as |
Yes, this is the case. Go So far we've changed it to Having consistency with |
Though there is a problem of Go |
I've just found this issue campoy/flappy-gopher#9. This means that This makes it pretty much pointless. |
Yeah, that's true... I didn't think of that. I'll remove the note about it in README.md. |
@veeableful
We should look into making the package more dependable in terms of versioning with all the breaking changes we do.
We can use http://labix.org/gopkg.in.
This is the link we have for go-sdl, but since all our tags major versions are zero there is only one version available:
https://gopkg.in/veandco/go-sdl2.v0
Installation
go get gopkg.in/veandco/go-sdl2.v0
Package import
gopkg.in/veandco/go-sdl2.v0/sdl
Whenever a breaking change is committed we should increase the version via tags or a new branch.
If we are going to use gopkg.in then we need to decide if branches or tags are used for new versions.
go get gopkg.in/veandco/go-sdl2.v2
they will receive v2.1 in that case. And we should probably write what is actually changed in the release notes.The text was updated successfully, but these errors were encountered: