quarkusio / registry.quarkus.io

Quarkus Extension Registry application
https://registry.quarkus.io
Apache License 2.0
10 stars 11 forks source link

Separate the notion of currently recommended platform versions for new projects from still supported versions #32

Closed aloubyansky closed 3 years ago

aloubyansky commented 3 years ago

Today

https://registry.quarkus.io/maven/io/quarkus/registry/quarkus-platforms/1.0-SNAPSHOT/quarkus-platforms-1.0-SNAPSHOT.json

recommends 2.2.1.Final. Let's imagine that this version becomes the base for the RHBQ. While the RHBQ is in its delivery process and/or during its support period, the community moves on and starts recommending 2.2.7.Final or even 2.3.1.Final, what's important is 2.2.1.Final isn't listed as the recommended version for new projects or updates in the community registry anymore.

While

https://registry.quarkus.io/maven/io/quarkus/registry/quarkus-platforms/1.0-SNAPSHOT/quarkus-platforms-1.0-SNAPSHOT.json

may not mention 2.2.1.Final anymore, it is critical that

https://registry.quarkus.io/maven/io/quarkus/registry/quarkus-platforms/1.0-SNAPSHOT/quarkus-platforms-1.0-SNAPSHOT-2.2.1.Final.json

still works. Along with

https://registry.quarkus.io/maven/io/quarkus/registry/quarkus-non-platform-extensions/1.0-SNAPSHOT/quarkus-non-platform-extensions-1.0-SNAPSHOT-2.2.1.Final.json

BTW, the following URL still works today although 2.2.0.CR1 isn't listed as recommended, which is a good thing:

https://registry.quarkus.io/maven/io/quarkus/registry/quarkus-non-platform-extensions/1.0-SNAPSHOT/quarkus-non-platform-extensions-1.0-SNAPSHOT-2.2.0.CR1.json

We should support the same for the platforms. The reason it is critical is that, the RHBQ (in the example I described) will be mentioning 2.2.1.Final as its upstream version. So the registry client will be querying registry.quarkus.io for platforms and non-platform extensions compatible with the 2.2.1.Final. The way it is today, the base upstream platform isn't available to the customers of RHBQ.

gastaldi commented 3 years ago

@aloubyansky I'm introducing a boolean pinned column in the PLATFORM_RELEASE table (as a hint to never be deleted at some point) and introducing a pinned-versions attribute in the quarkus extension catalog descriptors for versions that should always be included/visible in the registry.

One question: Once we add 2.2.0.CR1 to the pinned-versions, it is correct to assume that this version will still not be listed in https://registry.quarkus.io/maven/io/quarkus/registry/quarkus-platforms/1.0-SNAPSHOT/quarkus-platforms-1.0-SNAPSHOT.json (because 2.2.1.Final is released)?

gastaldi commented 3 years ago

One question: Once we add 2.2.0.CR1 to the pinned-versions, it is correct to assume that this version will still not be listed in registry.quarkus.io/maven/io/quarkus/registry/quarkus-platforms/1.0-SNAPSHOT/quarkus-platforms-1.0-SNAPSHOT.json (because 2.2.1.Final is released)?

I think that's already answered in the description 😃

aloubyansky commented 3 years ago

I think pinned should be enabled by default. In other words, we probably should not be deleting information about the platform releases. Given that we have a database to store that. Perhaps, we don't even need a column for that? We do need a notion of the recommended platform though.

gastaldi commented 3 years ago

Right, my idea here is to mark releases that are not supposed to disappear (think cleaning up the database after some time).

About having a recommended platform, there is a is_default column in the platform creation ddl which is (manually) inverted in the productized environment