micronaut-core icon indicating copy to clipboard operation
micronaut-core copied to clipboard

Consider extracting HTTP modules from Core

Open dstepanov opened this issue 3 years ago • 8 comments

Issue description

Now it's one of the biggest parts of the Core. It would be better to have it extracted to the own repo.

Modules included:

  • http
  • http-client
  • http-client-core
  • http-netty
  • http-server
  • http-server-netty
  • http-validation

WDYT @micronaut-projects/core-developers ?

dstepanov avatar Sep 09 '22 12:09 dstepanov

Also the buffer-netty and websocket modules

However much of the http stuff is tested in the test-suite modules, how can we move that?

yawkat avatar Sep 12 '22 07:09 yawkat

Partially move the test suite

dstepanov avatar Sep 12 '22 07:09 dstepanov

While I think about it, something to consider when we move modules out of core. Ideally they should also get their own groupId when publishing on Maven Central. However, changing the groupId means that older modules, which were not upgraded to latest Micronaut, may bring the old modules on classpath (e.g io.micronaut:micronaut-http) and therefore introduce a conflict. We could leverage Gradle's capability declarations to handle this automatically for Gradle, but for Maven, it probably means folks would have to introduce a bunch of excludes

melix avatar Sep 12 '22 07:09 melix

i dont think we have to support mixing major versions

yawkat avatar Sep 12 '22 07:09 yawkat

We have already done something similar with micronaut-discovery-client. It was spun off core with its own group id (io.micronaut.discovery).

Micronaut 2.x BOM included both versions:

  • io.micronaut:micronaut-discovery-client:2.0.1
  • io.micronaut.discovery:micronaut-discovery-client:2.4.0

In Micronaut 3, the io.micronaut version was removed from the BOM.

In this case, we have to extract those modules into their own io.micronaut.http group id (io.micronaut is reserved for core) and introduce this new version in the Micronaut 4 BOM.

alvarosanchez avatar Sep 12 '22 08:09 alvarosanchez

BTW, the spin-off was first made by using git subtree to extract the code into its own repo even with Micronaut 2.x. Initially, it had the original io.micronaut group id, but started to be released independently.

Which means we can extract HTTP modules at any time.

alvarosanchez avatar Sep 12 '22 08:09 alvarosanchez

I will move this Micronaut Framework 5. We are too late for this now.

sdelamo avatar May 27 '23 20:05 sdelamo

I assume we will need to move the http-client and server/client TCK modules into this new repository as well.

Probably management also.

sdelamo avatar Feb 28 '24 05:02 sdelamo