>> > email to go-package-management+unsub...@googlegroups.com.
>> > To post to this group, send email to
>> > go-package...@googlegroups.com.
>> > For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Go Package Management" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to go-package-management+unsub...@googlegroups.com.
Thanks Peter,
I'm on the fence about semver. I can see it's a sane standard that
makes more sense than inventing our own (only slightly different)
variation. My concern, and this is probably inexperience, is there is
no mechanism to express pre-releases. We have a similar problem at
canonical with deb packages, which have to do gross things like ,
go-1.4.99 rather than go 1.5rc1 as that would sort _after_ 1.5 final.
Thanks
Dave
Given a version number MAJOR.MINOR.PATCH, increment the:
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
[...]
9. A pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers immediately following the patch version. Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]. Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes. Pre-release versions have a lower precedence than the associated normal version. A pre-release version indicates that the version is unstable and might not satisfy the intended compatibility requirements as denoted by its associated normal version. Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92.
On 15 Aug 2015 2:56 am, "Daniel Theophanes" <kard...@gmail.com> wrote:
>
> I'm fine with semver.
>
> However rather than just use the top level package in a project, I would suggest the top level import path in a project. Like:
> golang.org/x/net/webdav-1.2.3-beta
Technically this would be
Because the WebDAV package lives in the net project (as defined by the remote import metadata). But with that aside this sounds like a good improvement.
> Second, I would propose exploring the possibility of creating the semver with automatically through a change log + api inspection.
That sounds fine but out of scope for this proposal. I want to remain laser focused on defining a single representation of a go project version, which I would enable tools like the one you propose to interoperate.
I think using semver for declaring versions is fine.You've touched on a number of points including project specification to where version tags would be stored. I agree considering those points is required for a relevant discussion in this.I agree that for practical reasons versions will almost always be stored in a VCS. However I would want to version a package tree separately from the repo. For instance the following three package trees all live in the same repo, but will have very different versions:* golang.org/x/net/context (v1.0.y forever)* golang.org/x/net/publicsuffix (v1.x.y API unlikely to change, but data will continue to be updated)* golang.org/x/net/websocket (v2.x.y API has already changed already I think, may again in the future)
--
You received this message because you are subscribed to a topic in the Google Groups "Go Package Management" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/go-package-management/B-MHT98dvEU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to go-package-manag...@googlegroups.com.
You received this message because you are subscribed to the Google Groups "Go Package Management" group.
To unsubscribe from this group and stop receiving emails from it, send an email to go-package-manag...@googlegroups.com.
--
--
On Sun, Aug 16, 2015 at 4:44 AM, <erik...@gmail.com> wrote:
> I would agree that the full name in the tag wouldn't necessarily be a great idea... and semver itself is something I'm fine with (although versioning might relate in some ways to the pkg grouping mechanism so I think progress is needed there, more below).
>
> In your example you show 'tag: net-1.5.0' which still has "part" of the name in the tag name (in this case "net"). I might go so far as to think just "1.5.0" would be better (or v1.5.0 if you need a prefix).
I can see a consensus forming for no prefix, so a vestigial "v" would seem odd.
--
You received this message because you are subscribed to the Google Groups "Go Package Management" group.
To unsubscribe from this group and stop receiving emails from it, send an email to go-package-manag...@googlegroups.com.
To post to this group, send email to go-package...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Do you have any feedback on the idea of putting the import prefix (the
path to the topmost package in the repo) in the tag name ? ie
"golang.org/x/crypto-1.5.0" ?
--
You received this message because you are subscribed to a topic in the Google Groups "Go Package Management" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/go-package-management/B-MHT98dvEU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to go-package-manag...@googlegroups.com.
golang.org/x/crypto is the authorative import prefix [1] for this repository
% curl https://golang.org/x/crypto/ssh?go-get=1 2>/dev/null | grep go-import
<meta name="go-import" content="golang.org/x/crypto git
https://go.googlesource.com/crypto">
The first element in the content attribute is the import prefix,
that's what we're using as the identifier in the tag. The source might
live elsewhere, in this case https://go.googlesource.com/crypto.
I agree that any prefix should be manditory. My objection to v is it
is like like the I on .net interface types, superfluous.
If there is to be a prefix (and that is the message I see here) then I
want it to serve some purpose and transfer some information to justify
having to look at it all the time.
What are the benefits of the "v" prefix other than being short ? I can
understand the pushback to including the full import prefix in the
tag, and consider that idea dead and buried, but if "v" is a
placeholder to filter out release tags for Go projects from other
tags, why not make it longer and more explicit, ie
go-version-<semver>
I would not imagine that "v" or "go-version-" would be part of any
dependencies.txt file as neither of those prefixes make any sense when
you want to describe a range of versions.
If you check this out (npm packaging system semver details): https://docs.npmjs.com/misc/semver
Not really I'm afraid, the compile has a fixed mechanism for resolving .a files, and changes to the compiler are out of scope.
Thanks
Dave
Hi,
I saw this thread only now I hope I am not too late in the discussion.
I like this approach very much and I was thinking that a tool could compile and store the packages tagged with the version in the GOPATH:
$GOPATH/golang.org/x/net/context.a // built with go build
$GOPATH/golang.org/x/net/context-1.0.0.a // built with coolTool
In this way a tool can produce and store versioned packages/artifacts under the project build directory.
This would solve the vendoring as well?
My two cents, I hope it makes sense.
On Monday, 17 August 2015 17:53:09 UTC+2, Daniel Theophanes wrote:
> Hi Chris,
>
>
> Fair enough. Let me explore one possibility of several I've thought of. Let's take the "golang.org/x/net" example again and let's continue to use repo tags/branches to associate version numbers with revisions.
>
>
> Quick specification:
> 1. Versions package trees cannot be nested.
> 2. If repo != package tree root, specify releases by "<relative-path-to-root>-semver"
> 3. If repo == package tree root, specify releases by "semver"
>
>
> Quick Implementation:
> 1. Update repo (not files, "git fetch") in GOPATH.
> 2. Checkout specific tree version into $PROJECT/vendor/... folder. Only copy used packages.
>
>
> Example:
> "golang.org/x/net/context" the tag would be "context-1.0.0"
>
>
> For tool implementations that already work with packages and not repos, it doesn't add any additional complexity. It would add one additional step for tools tools that currently only work with repos.
>
>
> I realize this isn't what other tool makers are used to implementing nor is it what they hold as an ideal. But to me it would appear to be a net gain.
>
>
> -Daniel
>
>
>
>
>
> On Sat, Aug 15, 2015 at 6:23 PM Chris Hines <chris....@gmail.com> wrote:
>
> Daniel,
>
>
> I am sympathetic to your line of thinking. I recently made the mistake of believing that gb vendoring worked at the package level until I was corrected by Dave. As Dave is fond of saying, currently [most] Go code isn't released. The golang.org/x/net package is no exception. Were it to be released, I believe the authors would be forced to re-evaluate the repository scope. But with the status quo, that is not a problem they face.
>
>
> Personally, I prefer to release my packages, or closely related sets of packages. I use Git tags to mark the releases in my repos, and that pushes me to create separate repos for separately released code bases.
>
>
> I would like to see more people take these issues more seriously, so I would love to see a solution that resolves that tension in an elegant way, I just don't know what that looks like at the moment. So if you have some ideas to make this situation better, I would love to see them.
>
>
>
> Chris
>
>
> On Saturday, August 15, 2015 at 9:02:46 PM UTC-4, Daniel Theophanes wrote:
>
>
> Dave and Chris,
>
>
> Under your proposed limits groups who use mono-repos and groups who use vcs where repo tends to be less granular cannot use such a versioning solution.
>
>
> Please also note that in vcs that lend themselves to smaller repos and where the project situation allows it I agree that the versioned package tree should be the same as a repo. I disagree that it would be more complicated, just different, in the 80% case. I would prefer a design that can still handle the golang/x/net repo case.
>
>
> If you haven't explored possible implementation mechanisms for such a package tree based version, I would recommend we do so before rejecting it. Believe it or not, not everyone I care about uses a DVCS.
>
>
> ... I am aware that groups who use mono-repos may not rely on versions in the first place and I'm aware most people in open source Go development use git. My point about handling each package remains. I understand that the other tools made to date are mostly repo based. I'm not totally sure we can come up with a better solution then to use VCS tags/branges, but I'd like to try. ...
>
>
> -Daniel
>
>
>
>
>
>
> On Sat, Aug 15, 2015 at 5:28 PM Chris Hines <chris....@gmail.com> wrote:
> On Saturday, August 15, 2015 at 12:01:58 PM UTC-4, Daniel Theophanes wrote:
> I think using semver for declaring versions is fine.
>
>
> You've touched on a number of points including project specification to where version tags would be stored. I agree considering those points is required for a relevant discussion in this.
>
>
> I agree that for practical reasons versions will almost always be stored in a VCS. However I would want to version a package tree separately from the repo. For instance the following three package trees all live in the same repo, but will have very different versions:
> * golang.org/x/net/context (v1.0.y forever)
> * golang.org/x/net/publicsuffix (v1.x.y API unlikely to change, but data will continue to be updated)
> * golang.org/x/net/websocket (v2.x.y API has already changed already I think, may again in the future)
>
>
> I know it is unlikely to happen, but I would argue that those three packages should be in separate repositories. I teach Git to a lot of people at my $job, most of them migrating from Subversion, and one thing that always comes up is the proper scope of a Git repository. My stock answer is that everything in the same repo should be released as a unit. The rationale is that Git tags are scoped to the repository.
>
>
> When you create a Git tag, you are tagging the entire source tree on the tagged commit. Git doesn't let you tag a subdirectory. Other VCS's differ, Subversion lets you create tags at any depth. Then again Subversion doesn't have first class tags, but rather a set of conventional operations that result in an artifact commonly considered a tag. Nonetheless, for the time being, Git seems to have won, so mostly we are bound by its rules.
>
>
> Chris
>
>
>
>
>
>
> --
>
> You received this message because you are subscribed to a topic in the Google Groups "Go Package Management" group.
>
> To unsubscribe from this topic, visit https://groups.google.com/d/topic/go-package-management/B-MHT98dvEU/unsubscribe.
>
> To unsubscribe from this group and all its topics, send an email to go-package-manag...@googlegroups.com.