zio-http icon indicating copy to clipboard operation
zio-http copied to clipboard

Split into multiple modules

Open 987Nabil opened this issue 7 months ago • 8 comments

Currently, the zio-http artifact contains a lot of different parts of zio-http exclusively. They are not separate maven artifacts.

We want to change this, to support future changes/features.

There should be at least these modules that are published into maven.

  1. core
  2. endpoint
  3. netty

Should we have client and server in different modules?

987Nabil avatar Apr 30 '25 14:04 987Nabil

/bounty $250

jdegoes avatar Jul 09 '25 15:07 jdegoes

💎 $250 bounty • ZIO

Steps to solve:

  1. Start working: Comment /attempt #3472 with your implementation plan
  2. Submit work: Create a pull request including /claim #3472 in the PR body to claim the bounty
  3. Receive payment: 100% of the bounty is received 2-5 days post-reward. Make sure you are eligible for payouts

❗ Important guidelines:

  • To claim a bounty, you need to provide a short demo video of your changes in your pull request
  • If anything is unclear, ask for clarification before starting as this will help avoid potential rework
  • Low quality AI PRs will not receive review and will be closed
  • Do not ask to be assigned unless you've contributed before

Thank you for contributing to zio/zio-http!

Attempt Started (UTC) Solution Actions
🟢 @Pranith124 Aug 08, 2025, 06:45:12 AM WIP

algora-pbc[bot] avatar Jul 09 '25 15:07 algora-pbc[bot]

Internal bounty

987Nabil avatar Jul 09 '25 18:07 987Nabil

/bounty $250

thekumbhaj avatar Jul 24 '25 06:07 thekumbhaj

Hi @987Nabil, I’d like to take this on and claim the bounty.

Proposing my PR (keeping backward compatibility for users of the existing zio-http artifact):

Publish three new artifacts:-

  • dev.zio %% zio-http-core (JS/JVM): core HTTP primitives and abstractions
  • dev.zio %% zio-http-endpoint (JS/JVM): declarative endpoints + OpenAPI/GRPC
  • dev.zio %% zio-http-netty (JVM): Netty-based client/server drivers + shading

Keep dev.zio %% zio-http as a meta artifact depending on {core, endpoint, netty} so current users can continue to add only zio-http.

Implementation will be:-

  • Extracting zio.http.endpoint/** to zio-http-endpoint crossProject.
  • Extracting zio.http.netty/** to zio-http-netty (JVM), and moving shading rules here.
  • Decouple core from Netty (e.g., move default client/server layers currently importing Netty* into the Netty module; core exposes abstractions ONLY).
  • Update testkit, cli, gen, docs, example dependencies accordingly.
  • Add MiMa where applicable and a migration note in the docs.

Also, do you want an additional split for client/server (e.g., zio-http-client cross, zio-http-server JVM), or should we defer that to a follow-up?

Please assign me to the issue; I’ll reference this plan and iterate based on your feedback.

sangwaboi avatar Aug 26 '25 16:08 sangwaboi

@sangwaboi I tried this and it is not possible. This will be part of the next major release and is no bounty open to the public

987Nabil avatar Aug 26 '25 16:08 987Nabil

Thank you for the reply, @987Nabil. I totally understand. I thought I’d give it a try once since I’ve been studying the codebase for a while . I’d still love to contribute, regardless of whether there's a bounty.

sangwaboi avatar Aug 27 '25 01:08 sangwaboi

There is no work for you here. This will need to be part of a bigger effort and needs some insight and decisions power you simply do not have. This is a a task that only maintainers can do. Sorry

987Nabil avatar Aug 27 '25 04:08 987Nabil