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

[best practices] managing LTS & release lines for userland modules #172

Open
boneskull opened this issue Mar 8, 2019 · 12 comments
Open
Labels
article Need to spread this information help wanted Extra attention is needed question Further information is requested

Comments

@boneskull
Copy link

boneskull commented Mar 8, 2019

I'm starting a discussion in Mocha around how we can best support multiple "LTS" release lines.

I'm familiar with what Node.js itself does (though I haven't ever cut a Node.js release myself; it seems essentially like trunk-based development). But I don't have an understanding of all the gotchas around something like this.

It does seem that, without proper tooling, maintainers will be in for a lot of pain in addition to the extra overhead that the strategy initially incurs.

I also don't know how other teams/projects that want to do long-lived release lines do it, and would love to hear from them!

How can we, as the package maintenance team, help projects that want to take this on? What works and what doesn't?

@boneskull
Copy link
Author

(I wonder if @BethGriggs might have some insight?)

@mcollina
Copy link
Member

We are currently doing this in Fastify with v1 and v2. It’s not super straightforward, especially in handling backports in a semi-automated way.

@dominykas
Copy link
Member

dominykas commented Mar 10, 2019

I like how semantic-release (v16, beta, not latest) solves it. Already put it in practice at work, at small scale to test - people mostly like it.

It is rather opinionated, though, so might not always be feasible.

I'm curious to hear more about what seems to be the issue?

@mhdawson
Copy link
Member

@mcollina any details on what you are doing that you can share that might be input for this discussion ?

@boneskull
Copy link
Author

For automating backports, maybe something like a GH Action which runs a post-commit hook against a given branch (e.g., master) that will automatically cherry-pick the changeset(s) to release branches if it passes CI? Otherwise maybe create an open PR someone can hack on? Really wouldn't know if this sort of thing would be too burdensome or failure-prone until it was up & running...

@ljharb
Copy link
Member

ljharb commented Mar 14, 2019

In my experience, backports very rarely land cleanly, even if there's no git conflicts - it's always required a trivial bit of human tweaking.

@mcollina
Copy link
Member

In Fastify we are currently maintaining two release lines, v1 and v2. We have no automated tool for backporting. As such, we require a backport from the original author or the PR or from the developer landing the PR - or if there is a need.

It’s a lot free form, and a bit of automation will help.

@wesleytodd
Copy link
Member

In my experience, backports very rarely land cleanly, even if there's no git conflicts - it's always required a trivial bit of human tweaking.

👍 Only trivial changes are able to be backported in an automated way. I am not sure how much automation will be possible here, but would love to see a POC on the idea.

In Fastify we are currently maintaining two release lines, v1 and v2. We have no automated tool for backporting. As such, we require a backport from the original author or the PR or from the developer landing the PR - or if there is a need.

In Express we do the same as @mcollina mentions that Fastify does. As an example of one backporting effort I am involved in:

expressjs/express#3714
expressjs/express#3218

As you can see, the changes are quite different, and any automated backport would not have worked. That being said, any help here would have been great, because the complexity in backporting meant that this sat for quite a while without being merged, and is still in a bit of limbo.

@Eomm Eomm added article Need to spread this information help wanted Extra attention is needed question Further information is requested labels Aug 31, 2019
@balupton
Copy link
Contributor

copy of my comment here #280 (comment)


FWIW

@bevry accomplishes the goal of this automatically for all of its packages, through the following pieces

@dominykas dominykas added the package-maintenance-agenda Agenda items for package-maintenance team label Nov 27, 2019
@dominykas
Copy link
Member

Adding this to agenda, if time permits - maybe we can visit this as part of #289

I'm wondering what can we do to move this forward?

  • From the discussions here, it seems the feeling is that automated backporting probably has a very low ROI
  • We could have a best practice document on various source control approaches to achieve multiple release lines in a project, but I figure there's probably a lot of similar documents already out in the world, so maybe from the perspective of this WG, just a list of links to some articles is good enough?
  • There's definitely some tooling that's useful when maintaining multiple major release lines. semantic-release has support for that (can't recall if it's only in the beta or in latest as well), there's probably some other tools/conventions that we can write up, but I wonder if we want to have a separate "this is how you do LTS" doc or if it fits better under existing publishing and versioning guidelines?

@Eomm
Copy link
Member

Eomm commented Nov 28, 2019

just a list of links to some articles is good enough?

We could start from that and then add a TOC in order to ease the learning process for the maintainers

@dominykas
Copy link
Member

Some specific things our LTS doc should mention:

@dominykas dominykas removed the package-maintenance-agenda Agenda items for package-maintenance team label Dec 3, 2019
balupton added a commit to balupton/package-maintenance that referenced this issue Dec 14, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
article Need to spread this information help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

8 participants