Skip to content
This repository has been archived by the owner on Feb 24, 2024. It is now read-only.

December 1st, 2019: Buffalo no longer supports GOPATH. Go Modules are now required. #1723

Closed
markbates opened this issue Jul 2, 2019 · 2 comments
Assignees
Labels
breaking change This feature / fix introduces breaking changes s: accepted was accepted or confirmed

Comments

@markbates
Copy link
Member

At the beginning of the year I opened proposal #1545 to drop support for dep, I believe the best course of action since then is to only support Go Modules.

In order to support modules, non-modules, dep and other 3rd party package management tools, there is an ever growing set of branching logic to be found across all of the Buffalo eco-system. This leads to bugs, maintenance issues, etc...

One of the biggest problems that has been unleashed on the Go community is "Semantic Import Versioning". This requires that packages that are v2+ have that as part of their import path. So, for example, Plush should be imported as github.com/gobuffalo/plush/v3 if it were using modules, but it isn't.

Currently none of the Buffalo packages that are at v2+ or higher are currently unable to add module support as it is currently nearly impossible to support modules, non-modules, and dep at the same because of this semantic import versioning.

Since Go Modules are what we, as a community, will be using the more we move forward, I propose we stop fighting the good fight to support everyone and require that GO111MODULE=on be used for all of the Buffalo packages.

I believe the timing for this should be done after Go 1.13 is released, so probably in the fall of 2019.

This won't be without pain, unfortunately though, we are currently in a lot of pain, trapped in a world between all of these different ways of managing packages. At some point a decision needs to be made, and I think, unfortunately, this maybe the only sane path going forward.

This is a proposal, and as such, I welcome community input on this difficult topic.

@markbates markbates added breaking change This feature / fix introduces breaking changes proposal A suggestion for a change, feature, enhancement, etc deps-modules labels Jul 2, 2019
@stanislas-m stanislas-m pinned this issue Jul 3, 2019
@stanislas-m stanislas-m added this to the Proposal milestone Jul 5, 2019
@dankinder
Copy link
Contributor

I think it's a great thing that you guys have tried hard so far to be backward-compatible with deprecated dependency tools and want to be sensitive to that 👍But for several reasons I think it does make sense to support only modules:

  • Staying compatible is painful, as noted by @markbates -- this is true even for users like myself, the documentation is confusing in some places because the go tool semantics are a bit different with modules, plus the bugs that come up from the current complexity
  • Converting a project to modules from anything else is very easy
  • Unlike a typical libraries, the method of specifying dependencies makes a huge difference for buffalo
  • Buffalo is not even V1 yet, so people should not be shocked at such a change

Perhaps this can be done in such a way that the buffalo binary pre-modules-required still works?

@markbates markbates removed the proposal A suggestion for a change, feature, enhancement, etc label Aug 8, 2019
@markbates markbates modified the milestones: Proposal, v0.16.0 Aug 8, 2019
@markbates markbates changed the title Proposal: Support Only Modules (v0.16.0) Support Only Modules Aug 8, 2019
@markbates markbates added the s: accepted was accepted or confirmed label Aug 9, 2019
@markbates markbates self-assigned this Aug 9, 2019
@markbates markbates removed this from the v0.16.0 milestone Dec 1, 2019
@markbates markbates changed the title (v0.16.0) Support Only Modules December 1st, 2019: Buffalo no longer supports GOPATH. Go Modules are now required. Dec 1, 2019
@markbates
Copy link
Member Author

@fasmat fasmat unpinned this issue Nov 26, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
breaking change This feature / fix introduces breaking changes s: accepted was accepted or confirmed
Projects
None yet
Development

No branches or pull requests

3 participants