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

Warn when mixing milestone and GA releases #407

Open
philwebb opened this issue Mar 27, 2018 · 10 comments
Open

Warn when mixing milestone and GA releases #407

philwebb opened this issue Mar 27, 2018 · 10 comments

Comments

@philwebb
Copy link
Contributor

Originally raised at spring-projects/spring-boot#12651


On start.spring.io, if I ask to create a project using Spring Boot 2.0.0, I have the option of adding the Gateway dependency (part of Cloud Routing). The generated pom has the version set (via the spring-cloud.version property) to Finchley.M9.

I was under the impression that by asking for a starter project based off of an official release, I would only get officially released versions. It was only after I started digging into an issue that I realized I had been given a pom with milestone dependencies in it.

I would suggest some sort of indication on the page when a non-GA version dependency is selected while creating a project based off of a GA of spring-boot.

@snicoll
Copy link
Contributor

snicoll commented Mar 27, 2018

That is just the reality of things right now. Spring Cloud is not GA against Spring Boot so the other alternative is to disable Spring Cloud for such version (for the reason we've reached GA and Spring Cloud did not).

The Web UI represents a fair but not massive share of usage of the service so I am not keen to add a warning for that reason.

@irobertson you haven't really described what the problem for you was.

@irobertson
Copy link

The specific problem I had was as follows. We need a reverse proxy application with some fairly dynamic rules, and I've been looking into options for creating one in Java. I recently saw a Spring Cloud presentation, and thought it might be a reasonable option. After Spring Boot 2.0.0 was released, I took a look, and saw that it included the Spring Cloud modules; my assumption was that Cloud had been released as well.

Unfortunately, after an hour or so of experimentation, I started hitting features that didn't seem to be implemented yet. It was at this point that I realized I was coding against a library that is still in development.

I wouldn't want to see Spring Cloud taken out of initializer. One possible solution would be to simply add (Milestone) to the name used on the page. Alternatively, the page could list the version to be used for each component, regardless of where that component is in its life cycle.

@snicoll
Copy link
Contributor

snicoll commented Mar 29, 2018

I recently saw a Spring Cloud presentation, and thought it might be a reasonable option.

I am not sure I am following I am afraid. If you've seen a Spring Cloud presentation, then it is reasonable to assume that the feature is available (unless stated differently at the session). It's unclear why you state that the feature isn't implemented yet.

Regardless, I don't see an immediate way to "warn" that a group of dependencies are not GA (while the selected Spring Boot version is). We'd have to do this per dependency then (can be quite "fat" in the UI) with the constraints that it must work as well in IDE support (that represents the vast majority of access nowadays).

Note also that the version of Spring Cloud is available in your build script and I think it is reasonable to expect someone to look at the build definition to figure out the version.

Let's see what the rest of the team thinks.

@wilkinsona
Copy link
Contributor

wilkinsona commented Mar 29, 2018

I think we should try and do something here, but I'm not really sure what we should do just yet.

In the short term, this is only going to be a problem for another few weeks. Once Spring Cloud Finchley has GAed, there should be no immediate need for a Boot release to be combined with a Cloud milestone or release candidate. In the medium term, the problem will probably occur for a period of time post Spring Boot 2.1.

In terms of a solution, the information that's needed appears to be available in the YAML, but doesn't make it into the JSON that's served to IDEs (and the CLI). Perhaps a good first step would be to surface the bom that defines the version of each dependency in the JSON so that clients can map from the Boot version that's chosen to the bom that will manage a dependency's version. From that they can infer the version type (release, rc, milestone, or snapshot) of the dependency. Alternatively, the version type could be included directly in the JSON to remove the need for some of the client-side logic.

@philwebb
Copy link
Contributor Author

This might also be a good candidate for the README.md feature that @bclozel suggested. We could add a warning to that file that indicates there are milestone deps.

@spencergibb
Copy link
Contributor

I like that. Maybe instead of individual warnings on site, it could be a general note, maybe a visual yellow or something

@wilkinsona
Copy link
Contributor

We've talked today about the possibility of tagging dependencies. In addition to identifying milestone dependencies, tags could also, for example, identify third-party dependencies. We also talked about the possibility of grouping selected dependencies by their tags.

@snicoll
Copy link
Contributor

snicoll commented Aug 23, 2019

Now we have HELP.md we could have a generic HelpContributor that adds a note when a GA platform is using a non GA dependnecy. Alternatively we could add this contributor only on start.spring.io to make it an instance specific behaviour.

@snicoll
Copy link
Contributor

snicoll commented Sep 18, 2019

Blocked on spring-io/initializr#1006

@snicoll snicoll transferred this issue from spring-io/initializr Mar 17, 2020
@snicoll
Copy link
Contributor

snicoll commented Mar 17, 2020

We can add a note in HELP.md when such combination happens.

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

5 participants