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

CLI should allow major and minor versions for bootVersion parameter #1479

Open
mraible opened this issue Sep 21, 2023 · 5 comments
Open

CLI should allow major and minor versions for bootVersion parameter #1479

mraible opened this issue Sep 21, 2023 · 5 comments

Comments

@mraible
Copy link

mraible commented Sep 21, 2023

It'd be super fantastic if start.spring.io accepted the minor and major versions of Spring Boot instead of requiring it explicitly. That way, us poor saps writing tutorials about Spring Boot can have content that stays relevant longer. For example:

https start.spring.io/starter.zip bootVersion==3

Or even bootVersion=3.1. Please. 🙏

@snicoll
Copy link
Contributor

snicoll commented Oct 23, 2023

I can understand why you'd want a bit of control over things. I am guessing you are aware you can remove the bootVersion from that link altogether and it'll offer the current GA. That is in my view much better than bootVersion=3.

If we implemented this, it would be the same way we do for metadata handling, e.g. 3.1.x or 3.x.x. But before we dig into this, please confirm that removing bootVersion doesn't work for you, and if so why? Thanks!

@snicoll snicoll added the status: waiting-for-feedback We need additional information before we can continue label Oct 23, 2023
@mraible
Copy link
Author

mraible commented Oct 23, 2023

@snicoll Removing bootVersion works to get the latest GA. However, many of my tutorials have been QA'd with a certain version. Yes, y'all are great a backward compatibility, but sometimes things break or change between releases. If we remove bootVersion from our 3.x tutorials, we're just assuming that they'll work with 4.x, and that might not be the case.

@spring-projects-issues spring-projects-issues added status: feedback-provided Feedback has been provided and removed status: waiting-for-feedback We need additional information before we can continue labels Oct 23, 2023
@snicoll
Copy link
Contributor

snicoll commented Oct 23, 2023

However, many of my tutorials have been QA'd with a certain version. Yes, y'all are great a backward compatibility, but sometimes things break or change between releases.

Right but if you ask for bootVersion=3, I don't really see the argument as it would also give you the latest GA for several years. I understand this may improve the situation a bit and I am open to implement it but that won't eliminate the problem of a major version going away. For instance, assuming bootVersion=2 implemented, this is going to break in a month or so when we remove support as 2.x will be out of OSS support.

From that perspective, removing bootVersion altogether isn't so bad IMO. The only difference is that you have a bit more time before it starts breaking due to it being out of support. I guess, as a tutorial author, you'd like to know sooner than that, don't you?

@mraible
Copy link
Author

mraible commented Oct 23, 2023

As a tutorial author, I'd love it if the bootVersion we specified worked forever. If we create an example on GitHub that has the completed tutorial, it will work forever because the artifacts stay on Maven Central forever.

However, I realize y'all like to remove versions after they're unsupported, so it makes sense that they go away on start.spring.io. Because of this, we try to create tutorials that clone a repo first rather than using start.spring.io first. In the cases where we create from scratch, we always specify the specific version because we know that works. If we could specify a major or minor version only, there is a risk of it not being QA'd, and there is a bug in newer releases, but we feel that risk is small.

If the major and its minor versions go away at the same time, maybe this doesn't matter from a deprecation standpoint. However, users will benefit because they'll get a newer version when doing the tutorial.

I know that npm allows major versions (e.g. npm i -g generator-jhipster@7), and it'd be nice if Java had something similar.

@snicoll
Copy link
Contributor

snicoll commented Oct 23, 2023

If we create an example on GitHub that has the completed tutorial, it will work forever because the artifacts stay on Maven Central forever.

I am not sure this is a valid argument as neither you nor I want the community to learn something on a version that's out of support. At least, I suspect so!

If we could specify a major or minor version only, there is a risk of it not being QA'd, and there is a bug in newer releases, but we feel that risk is small.

Yes I got that. From that discussion, I acknowledge that having bootVersion=3.x.x would be useful during the time we swap from one major version to the next. However, this has the disadvantage that you won't get any feedback as the tutorial will continue to work on the previous generation as long as it is supported on the site. Once a major version is current and the tutorial works with it, I don't see an advantage compared to removing the bootVersion at all.

That said, the use case above is significant enough to consider adding support for it.

@snicoll snicoll removed status: waiting-for-triage An issue we've not yet triaged status: feedback-provided Feedback has been provided labels Oct 23, 2023
@snicoll snicoll transferred this issue from spring-io/start.spring.io Oct 23, 2023
@snicoll snicoll self-assigned this Oct 23, 2023
@snicoll snicoll added this to the General Backlog milestone Oct 23, 2023
@snicoll snicoll changed the title start.spring.io should allow major and minor versions for bootVersion parameter CLI should allow major and minor versions for bootVersion parameter Oct 23, 2023
@snicoll snicoll removed their assignment Nov 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants