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

Recommend specific core versions for the dependency #3643

Closed

Conversation

daniel-beck
Copy link
Contributor

@daniel-beck daniel-beck commented Aug 19, 2020

Alternative to / parts to be reused in #3630 by @uhafner.

I basically wrote this just to demonstrate that we're now able to get update site tier metadata to make more specific recommendations as mentioned in #3630 (comment). Then I added split-plugins.txt and now it's essentially a fully automated recommendation engine for core baselines.

I updated the text a bit to make sense "standalone" with the recommendations given, but the script parts could just as easily be integrated into #3630.

Screenshot

@daniel-beck daniel-beck requested a review from a team as a code owner August 19, 2020 23:52
@probot-autolabeler probot-autolabeler bot added chore documentation Jenkins documentation, including user and developer docs, solution pages, etc. labels Aug 19, 2020
Copy link
Contributor

@MarkEWaite MarkEWaite left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the technique very much! It fits nicely with the idea to use the knowledge from update center in the generation of the Windows download page so that we stop using the symoblic link to latest.

Copy link
Member

@timja timja left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Great to have it automated

Copy link
Contributor

@uhafner uhafner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using explicit versions is a great help for everybody! Thanks. This makes #3630 obsolete.

Copy link
Contributor

@jglick jglick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine I suppose, though my inclination is still to say that this is all making things unnecessarily complicated and that the most straightforward policy is just to do new plugin development against a current LTS baseline. Whenever I have checked plugin installation statistics, there are not really many people who are updating the plugin yet are not updating core to at least current LTS (if not weeklies), so the actual impact of the dependency is probably not that big; and having old core dependencies causes real harm to the Jenkins ecosystem. IMHO.

Comment on lines +18 to +19
* *Prefer ".1" LTS releases over weekly versions and later releases within an LTS line* for greater compatibility.
LTS releases with the same baseline usually don't have differences that would matter to plugin developers, and if they do, they may well behave differently on supposedly compatible weekly releases published shortly after the LTS baseline.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I agree with this advice (the *.1 part). Better to be testing the plugin against a core version that users are actually likely to have installed than some obsolete version with subtly different behavior. As for weeklies published after the LTS baseline, well yes but the same problem applies to *.1 also.

@daniel-beck
Copy link
Contributor Author

daniel-beck commented Aug 24, 2020

having old core dependencies causes real harm to the Jenkins ecosystem. IMHO.

Could you elaborate? The major reason I'm aware of is implied dependencies which this script takes care of. Most other reasons (outdated tooling and configuration etc.) seem obsolete since plugin parent POM 2.0 became independent of the core release.

FWIW I have an improvement over this PR prepared locally that I plan to submit as future enhancement to never recommend versions older than 36 weeks (i.e. generally recommend "previous" and "previous previous" LTS lines).

Whenever I have checked plugin installation statistics, there are not really many people who are updating the plugin yet are not updating core to at least current LTS (if not weeklies)

There are many maintainers for which stats are not useful as plugin releases are usually too infrequent, so it's more difficult to "prove" this relationship beyond a general statement on this page.

@jglick
Copy link
Contributor

jglick commented Aug 24, 2020

The major reason I'm aware of is implied dependencies

There are lots of miscellaneous stuff that is best kept up to date in plugin sources—newly deprecated APIs, changes to nullability annotations, deleted Messages, various behavioral changes that break unit tests, ad nauseam. A green build only against a two-year-old core means that basically any real change to the plugin that happens to require a newer core is first going to have go through a long list of cleanups that are by that point half-forgotten. A lot of times these are necessary for PCT as well. In my experience it is less of a hassle to do little frequent updates, Dependabot-style¹; and on occasion something like a plugin test failure actually forces the author of the original core change to reconsider it, which is better done sooner than later.

Many aspects of tooling are indeed independent as of plugin-pom 2.0.

never recommend versions older than 36 weeks

OK, that would be an improvement from my PoV.

it's more difficult to "prove" this relationship

Indeed.


¹Even though we cannot literally use Dependabot for this purpose yet—nor can jenkinsci/bom do that for you, since jenkins.version overrides its dependencyManagement.

@daniel-beck
Copy link
Contributor Author

Submitted an alternative #3655 with more aggressive baseline recommendation in the case that there were no recent plugin splits from core.

@MarkEWaite
Copy link
Contributor

MarkEWaite commented Sep 4, 2020

Submitted an alternative #3655 with more aggressive baseline recommendation in the case that there were no recent plugin splits from core.

I'd like to give this 24 hours for further discussion, then I intend to merge #3655. I think it is the right approach. Plugin authors can certainly ignore the recommendations or follow their own preferences, but I think recommending 2.204 (LTS - 2) and 2.222 (LTS - 1) as the preferred baselines are well suited to the Jenkins project.

@MarkEWaite
Copy link
Contributor

Closing this and merging #3655

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chore documentation Jenkins documentation, including user and developer docs, solution pages, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants