-
Notifications
You must be signed in to change notification settings - Fork 602
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
Going to tag v2.0.0 #383
Comments
Master readme sync'ed with v2.0.0: #354 |
@rtfb, this tag is causing issues in projects that use dep, and import libraries that import See shurcooL/github_flavored_markdown#12. /cc @sdboyer It's probably our fault for doing the wrong thing here, but FYI anyway. |
@sdboyer wrote a detailed and informative analysis at shurcooL/github_flavored_markdown#12 (comment). @rtfb, I think that should be enough information for us to at least resolve the issue. But we can also use it to consider alternative plan for how to offer v1 and v2 of blackfriday in the future. |
Uhh... Okay, so with current state of affairs, Blackfriday's v1 is unusable with
For those who use Blackfriday v1 transitively it's even worse, because it's difficult and non-obvious how to convince Having read all the material, it seems to me that golang/dep#902 would save our day here. It would allow us to continue with the plan that we developed in pre- One easy way to get out of it is to remove the |
If we're going to try to avoid semantic versioning from interfering with v1, I would suggest/consider doing it by adding some prefix to a valid semver. The prefix indicates that the semver tag applies to a different import path. Something like
I'm beginning to worry more that it's a plan we came up with before A radical approach to consider, not necessarily do, but to think through the cons/pros of is to rely on |
Well, apparently, Breaking existing code just by typing If I'm reading things correctly, golang/dep#902 will give us best of all worlds:
|
I know it can, but the problem is that we do not support/endorse it. Let's discuss only the supported/valid uses for now. So, our current plan is:
I don't think it's a problem. Let me explain why. In the "radical proposal" of using
So, with that approach, if someone wants to use blackfriday v1, they must vendor and we would provide semver tags for If someone wants to use v2, they don't have to vendor, or they could, it doesn't matter. Does that make sense? Again, I realize it's pretty radical, I just wanted to describe it so we can fully consider it and the tradeoffs/implications. But yes, the most obvious implication is that it means as soon as we release v2, all v1 users must have vendored blackfriday v1 or face build failures due to breaking API changes. This would be their [[constraint]]
name = "github.com/russross/blackfriday"
version = "1.x.x" |
hi folks - awesome to see you guys working through these things! i'm sure i'll end up referring people to this thread in the future as an example of people chewing through possible approaches.
a minor nit on this, but this should probably happen a rather small portion of the time - and primarily if the user is not using an existing tool for managing their dependencies; we do pretty well getting things right in the automated conversions. (that also may not be a panacea, though, because...reasons) still, though, not an outcome we should accept, for all the reasons you outline!
i do tend to think so, although it would require moving the |
OK, I'm no longer sure this is how things would work. While working on dep#903 I realized that once it's done, @shurcooL, are you saying that in your radical proposal we would also merge v2 to master? |
ack, i missed that bullet. yes, that wouldn't work - upgrading to v2 would entail changing import paths in all of their source code. |
In that radical proposal, yes, I implied that v2 would become master. However, I just realized that it doesn't have to! We could flip that around, which would make the proposal a lot less radical. Here's the less radical alternative:
Basically, in this alternative, blackfriday v2 would be available at the same import path as v1, but it would only be accessible via vendoring (with a tool like |
Even better, in addition to what you listed above, v2 would also be available via (non-enforced) If only we could find a solution to the transitive dependency problem of shurcooL/github_flavored_markdown#12... And I suppose we ought to, because it's super unobvious what's hit you when it does. And the victims would be far from us, we can't even help them effectively by documenting things. |
Sorta tangentially related. It looks like the latest release of v1 (1.4) is pretty far behind the latest master. Specifically, it's 51 commits and almost 2 years behind. Anyone using v1 and switching over to dep right about now (e.g. cpuguy83/go-md2man#28 ) will have to either downgrade to this relatively old release or just abandon semver and track the master branch itself. Neither of those options are particularly appealing. |
You're right, v1 got quite neglected while we were focusing on v2. And my initial reaction was a bit of a squirm, mumbling in my mind along the lines of "yeah, I know, but there wasn't much happening on master, is it worth having a new release at all...". Then I set out to collect the release notes, and, well, check it out! Thanks for a timely kick in the butt, @zevdg! ;-) |
Furthermore, this might be more tightly related to the discussion above -- what if we also have a
(or possibly with I'm not entirely certain this would work, but it should be quite easy to set up a Guinea pig repo for testing that, which I'll do. |
Nah, it's not helping... Nothing but an |
I applaud your effort to minimize disruption to downstream packages but I don't see any option that is totally painless for them. Making people switch to a gopkg.in v1 import path is actually one of the most disruptive options. Once all the libraries that directly import blackfriday v1 to switch to dep and add the appropriate In the meantime, this seems like one of the very rare cases where the |
Oh yeah, I didn't mean that as an approach to be forced on people. I was hoping that would be an optional extra to help the transitive users of Blackfriday to trick So yeah, so far I'm leaning towards the "less radical" @shurcooL's suggestion, plus a well documented |
Another observation. If we go with having same import path for both v1 and v2, then it becomes impossible to be able to view documentation for both via https://godoc.org, at least given its current implementation (it only shows documentation for the latest version any given import path). But that might be on godoc.org. Still, it's worth taking into account. For reference, I'm considering adding support for seeing godoc on gotools.org (see details here), which supports viewing any import path at any revision, so that could be helpful. |
Hey folks. I've submitted what I hope to be the last API-affecting PRs #381 and #382. Aftery they're in, I'm going to tag the tip of v2 branch with
v2.0.0
, migrate the relevant README changes to master and call v2 done.So this is the last call to shout out whatever API-affecting issues, concerns or questions you might have.
I plan to do that some time within two weeks if nothing comes up.
The text was updated successfully, but these errors were encountered: