Skip to content
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

vendoring and glide #286

Closed
matiwinnetou opened this issue May 11, 2016 · 8 comments
Closed

vendoring and glide #286

matiwinnetou opened this issue May 11, 2016 · 8 comments

Comments

@matiwinnetou
Copy link
Collaborator

Now that vendoring is default in golang 1.6.x and one of recommended tools these days to manage vendor dependencies is glide I would recomment to move to glide and vendoring for external dependencies.

Thoughts? @paked @EtienneBruines

@paked
Copy link
Member

paked commented May 11, 2016

At the moment I think we can consider most of our dependencies "stable" as they are maintained by the Go team and therefore (I believe) follow backwards compatibility standards. I don't think we need to vendor until we have packages which are outside of our control (and have a risk of being non-backwards compatible).

I'm also hesitant to use any vendoring system which will break go get and it looks like glide does that.

cc: @otraore

@EtienneBruines
Copy link
Member

Some dependencies, such as the luxengine/math, are not maintained by the Go team. However, these are mostly static - and if it fails, it's probably fixed within a few minutes/hours.

But it might hold some value for 1.0 - since it makes no sense to have 1.0 (i.e. at gopkg.in), to ensure engo is stable, but to fail because dependencies aren't.

@mewmew
Copy link
Contributor

mewmew commented May 11, 2016

For reference, we tried something similar in Azul3D using versioned imports and after a long evaluation period decided to ditch versioning in favour of vendoring controlled by the user (not the engine).

From azul3d/engine#1 by @slimsag

  • No more package versions.
    • The official way to do this by the Go team is to use vendoring. I highly approve of this approach, and it means users can get new fixes and features when they want them (rather than relying on me to release them first).
    • We will NOT try to avoid API-breaking changes. We will document these, and maybe even continue to use semver outside of our import paths, but otherwise not.
    • This means PRs that are merged will instantly be usable by users, instead of being delayed for long periods of time until the next release (sometimes months).

@paked
Copy link
Member

paked commented May 11, 2016

@mewmew With this model the user would also be responsible for choosing which versions of our dependencies to use too?

@EtienneBruines
Copy link
Member

@paked I would believe so.

@mewmew
Copy link
Contributor

mewmew commented May 12, 2016

@mewmew With this model the user would also be responsible for choosing which versions of our dependencies to use too?

Indeed.

The idea is to promote development and facilitate the design of a clean API. Rather than having a lot of "// Depricated" comments scattered throughout the source code, parts which are no longer supported will be removed in favour of cleaner API. Once such API-breaking changes are introduced, the change will be documented to state which versions (e.g. Git tag v1.2) of each package that are compatible. At least, this is how I interpret the release model, @slimsag would know more.

@paked
Copy link
Member

paked commented May 15, 2016

OK. I'm happy with this.

@paked
Copy link
Member

paked commented May 26, 2016

Closing in favour of #334

@paked paked closed this as completed May 26, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants