You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(Channeling @travisbrown) I propose getting rid of the cats artifact. The only real role it plays is bundling core, free, and the laws / tests packages, and it's just as easy to explain how and when users need each of those individual pieces. #1181 is example of confusion caused
@ceedubs clarified the thinking behind the cats artifact: "I think that there's a natural progression of people starting with that and potentially later adding free or laws as needed for their use-case. I think that @non liked the idea of recommending the "batteries included" version and letting people trim off pieces once they were ready for production usage. "
The batteries included idea resonates with me if/when cats grows lots of modules; it worked for Haskell. And, remembering how annoying it seemed as a Scalaz newbie when things I was using suddenly disappeared and I didn't have context on why, Im think there's value in keeping existing cats deps working for users.
What about instead of removing it I write a paragraph for the readme explaining when to use cats vs cats-core?
I don't really like the "here's how you do this thing (but remember not to ever actually do this thing, because weird stuff will happen)" model of pedagogy. 😄
In particular I'm not sure there's ever a good reason to have a non-test dependency on cats-laws or cats-tests, and this necessarily makes them a non-test dependency. Apart from them there's just cats-free, and if you get a compiler error for import cats.free._ that's arguably a lot easier to track down than a bunch of unexpected stuff showing up in your builds.
Agree on removing cats-{laws/test} from cats bundle.
Still see value in "batteries included" though. Right now there's only cats-free but more could be added, eg there's some talk of alleycats coming into cats. If cats is "everything you might need for runtime use", then there isn't such a clear need to trim it later.
This issue can still be reproduced, simply create an empty project, follow the readme by adding libraryDependencies += "org.typelevel" %% "cats" % "0.9.0" and run the dependency graph plugin to see that scalacheck is included in the compile classpath.
Activity
benhutchison commentedon Jul 11, 2016
Im actually having second thoughts myself..
@ceedubs clarified the thinking behind the cats artifact: "I think that there's a natural progression of people starting with that and potentially later adding free or laws as needed for their use-case. I think that @non liked the idea of recommending the "batteries included" version and letting people trim off pieces once they were ready for production usage. "
The batteries included idea resonates with me if/when cats grows lots of modules; it worked for Haskell. And, remembering how annoying it seemed as a Scalaz newbie when things I was using suddenly disappeared and I didn't have context on why, Im think there's value in keeping existing
catsdeps working for users.What about instead of removing it I write a paragraph for the readme explaining when to use
catsvscats-core?travisbrown commentedon Jul 12, 2016
I don't really like the "here's how you do this thing (but remember not to ever actually do this thing, because weird stuff will happen)" model of pedagogy. 😄
In particular I'm not sure there's ever a good reason to have a non-test dependency on cats-laws or cats-tests, and this necessarily makes them a non-test dependency. Apart from them there's just cats-free, and if you get a compiler error for
import cats.free._that's arguably a lot easier to track down than a bunch of unexpected stuff showing up in your builds.benhutchison commentedon Jul 12, 2016
Agree on removing cats-{laws/test} from
catsbundle.Still see value in "batteries included" though. Right now there's only cats-free but more could be added, eg there's some talk of alleycats coming into cats. If
catsis "everything you might need for runtime use", then there isn't such a clear need to trim it later.adelbertc commentedon Jul 17, 2016
I would like to see a
catsthat includes all modules except test-related things, and then perhaps acats-testingor similar for laws and tests.benhutchison commentedon Jul 26, 2016
I started a PR to try close this, that'd remove test-related things from
cats, but got stuck on some SBT voodoo in build.sbt.If anyone knows too much about Ivy Configurations and could educate & unblock me, I'll be very grateful and send a PR to close this issue in return ;)
jeantil commentedon Mar 9, 2017
This issue can still be reproduced, simply create an empty project, follow the readme by adding
libraryDependencies += "org.typelevel" %% "cats" % "0.9.0"and run the dependency graph plugin to see that scalacheck is included in the compile classpath.The sbt voodoo is partially explained in the documentation
and partially explained in a discussion on the sbt-dev mailing linst
Regarding the line you mentionned in gitter, I think it effectively translates to
maybe @non who seems to have written this in the first place (09b4b86) can enlighten us further.
kailuowang commentedon May 18, 2017
Remove from project 1.0.0-MF as it's consolidated into #1682.
ceedubs commentedon Jan 24, 2018
@benhutchison @kailuowang after #1682 we are probably good to close this one out, right?