cats-effect icon indicating copy to clipboard operation
cats-effect copied to clipboard

Ecosystem upgrade megathread

Open kubukoz opened this issue 4 years ago • 51 comments

Here, we can track the progress of major libraries upgrading to CE3.

That should be a nice way of finding out whether any of them are going to be late with the upgrade, or straight-up impossible to migrate in a relatively source-compatible fashion.

Project Progress Blockers
Weaver released none
fs2 released none
http4s released none
fs2-kafka released none
fs2-grpc released none
munit-cats-effect released none
fs2-rabbit released none
natchez released none
cats-effect-testing released none
cats-stm released none
slick-effect released Async[DBIO] support dropped
Eff released unknown
redis4cats released none
log4cats released none
skunk released none
doobie released Async[ConnectionIO] support dropped
Ciris released none
Decline released none
ZIO released none
Sttp released none
Pure Config released none
elastic4s released none
fs2-data released none
trace4cats released none
sup released none
Scala Cache PR merged, published for M5 none
prox PR merged none
streamz PR merged none
odin PR merged none
catbird PR for 3.0 unknown
streamz PR for M3 none
tapir PR for 3.0 catbird
scala-opentracing PR for 3.0 unknown
circe-fs2 PR open not expected
caliban PR open unknown
natchez-http4s PR open unknown
tofu issue exists unknown
finch issue exists unknown
davenverse libraries varying not expected
http4s-micrometer-metrics none unknown
Monix work in progress unknown
Monix BIO unknown unknown
meow-mtl none should update mtl to 1.x first
console4cats Deprecated none

If you have edit rights, feel free to add more details / libraries.

kubukoz avatar Oct 18 '20 18:10 kubukoz

I came here from your tweet 😅 In cats, I did the following doc PR to collect the libs/projects related to the typelevel ecosystem

https://github.com/typelevel/cats/pull/3609

It may be relevant to this thread I guess Cheers 😉

benkio avatar Oct 18 '20 18:10 benkio

Are you using cats-effect in production? Let us know what libraries from the ecosystem you're using

In addition to the things mentioned in the above comment;

  • https://github.com/typelevel/scalacheck-effect
  • https://github.com/satabin/fs2-data
  • https://github.com/circe/circe-fs2
  • https://github.com/ovotech/http4s-micrometer-metrics
  • https://github.com/ChristopherDavenport/log4cats
  • https://github.com/ChristopherDavenport/fuuid / fuuid-doobie
  • https://github.com/profunktor/fs2-rabbit/
  • https://github.com/ChristopherDavenport/cormorant
  • https://github.com/kubukoz/slick-effect
  • streamz - WIP at https://github.com/krasserm/streamz/pull/80/files

Daenyth avatar Oct 19 '20 14:10 Daenyth

@Daenyth added. @ChristopherDavenport -verse is a vital part of it!

btw. you have edit rights, feel free to add them to OP

kubukoz avatar Oct 19 '20 14:10 kubukoz

Can we roll fuuid in to cats-effect-std module?

mpilquist avatar Oct 19 '20 15:10 mpilquist

Can we roll fuuid in to cats-effect-std module?

I'm all for it. Also a small Random[F], Chris's unique and https://github.com/ChristopherDavenport/system-effect/blob/master/src/main/scala/io/chrisdavenport/system/effect/Environment.scala

kubukoz avatar Oct 19 '20 15:10 kubukoz

ahjohannessen avatar Oct 21 '20 14:10 ahjohannessen

Added, thanks!

kubukoz avatar Oct 21 '20 15:10 kubukoz

Can we open issues for each library/class we'd like to port to std?

RaasAhsan avatar Oct 21 '20 15:10 RaasAhsan

Random - https://github.com/christopherdavenport/random Cats-Effect-Time - https://github.com/ChristopherDavenport/cats-effect-time (scalajs artifact size complications)

ChristopherDavenport avatar Oct 21 '20 16:10 ChristopherDavenport

@RaasAhsan I like the idea, I can create some later on, unless someone beats me to it

kubukoz avatar Oct 21 '20 16:10 kubukoz

For ZIO interop, the repo is this one https://github.com/zio/interop-cats

ghostdogpr avatar Oct 22 '20 09:10 ghostdogpr

fs2-rabbit has a CE/FS2 3.0 branch with all tests green

jbwheatley avatar Oct 22 '20 11:10 jbwheatley

catbird seems to be missing from the list (Finch is using it for example).

I tried to implement the new typeclasses but I'm again blocked by cancelation requirements. My thoughts are here: https://github.com/travisbrown/catbird/pull/267

felixbr avatar Oct 24 '20 10:10 felixbr

redis4cats - no progress so far it seems

felixbr avatar Oct 24 '20 11:10 felixbr

A note for anyone passing by, if you want to help, there's no official migration guide yet, but some useful information is being gathered in https://github.com/typelevel/cats-effect/issues/1048 - should be a good place to start.

kubukoz avatar Nov 28 '20 05:11 kubukoz

@kubukoz If you've got some time to spare, do you think you could chase down current status on some of this? It'd be good to get a table going in the OP to indicate status and blockers if there are any.

djspiewak avatar Feb 07 '21 06:02 djspiewak

https://github.com/TimWSpence/cats-stm is running on CE3 :)

TimWSpence avatar Feb 07 '21 09:02 TimWSpence

oof, thanks for the reminder @djspiewak - I'll do the rounds now.

kubukoz avatar Feb 07 '21 17:02 kubukoz

Ney @felixbr, are you planning on updating the catbird repository to the latest milestones (no rush though)? I can't comment there, since I'm blocked 😅

kubukoz avatar Feb 07 '21 17:02 kubukoz

Added a table to clean this all up, now thinking of creating a project to track this instead - it'll be easier to spot which projects need attention. Thoughts?

kubukoz avatar Feb 07 '21 17:02 kubukoz

The table is great! Also I can report that munit-cats-effect already releases for CE3, which is good because it has a bunch of downstream dependencies. In that vein, cats-effect-testing is also now also fully updated.

djspiewak avatar Feb 07 '21 19:02 djspiewak

Oh, it releases for both. I guess my cmd+f only showed me the last version here and I gave up. Good, good. Thanks!

image

kubukoz avatar Feb 07 '21 20:02 kubukoz

Yeah the munit-cats-effect build is unique to my knowledge. The only one remotely close to it is Weaver. Most projects are just maintaining separate series branches because so much source has to be changed.

djspiewak avatar Feb 07 '21 20:02 djspiewak

Ney @felixbr, are you planning on updating the catbird repository to the latest milestones (no rush though)?

I will try to update the PR from M2 to M5. It will probably not be ready for a merge into master for a while until we decide how to go about making the switch. We also haven't checked yet if my PR still covers all use-cases of downstream libraries (e.g. finch).

felixbr avatar Feb 07 '21 20:02 felixbr

I'm a bit concerned that Monix doesn't even seem to have a WIP migration to CE3. It's one of the few actual implementers of the full CE spec and finalizing CE3 without seeing if other implementers can follow suite with IO would not be ideal in my mind. If a library like Monix could not implement CE3 fully, it would also lose access to (some of) the fs2 ecosystem.

Not trying to push anyone, just thinking out loud.

For catbird we might have to drop certain CE features because we cannot implement the full spec (neither for CE2 nor CE3) and the requirements to be compliant/lawful seem even stricter now in some cases.

felixbr avatar Feb 07 '21 22:02 felixbr

I'm a bit concerned that Monix doesn't even seem to have a WIP migration to CE3. It's one of the few actual implementers of the full CE spec and finalizing CE3 without seeing if other implementers can follow suite with IO would not be ideal in my mind. If a library like Monix could not implement CE3 fully, it would also lose access to (some of) the fs2 ecosystem.

Agreed. I think the blocker there has mostly been people's time and availability. It is believed that the major new elements will be straightforward to implement, but no one has.

and the requirements to be compliant/lawful seem even stricter now in some cases.

They definitely are. Kind of sucks for projects like catbird, but it makes the ecosystem a bit tighter and more generic, which was the goal.

djspiewak avatar Feb 07 '21 23:02 djspiewak

Note to self: we're missing on the list:

  • softwaremill/tapir
  • odin
  • weaver

will update the list and ping the maintainers later

kubukoz avatar Feb 15 '21 17:02 kubukoz

fs2-kafka now has a milestone release (v3.0.0-M1) on RC2.

bplommer avatar Feb 19 '21 15:02 bplommer

I'll probably do a round of updates in the post this weekend :) seeing some commits in these repos in my inbox every day!

kubukoz avatar Feb 19 '21 23:02 kubukoz

Most projects seem to be doing fine (and have updated to RC2) :)

kubukoz avatar Feb 21 '21 20:02 kubukoz