Skip to content

Propose stop publishing cats bundle  #1184

Closed

Description

@benhutchison

(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

Activity

  1. benhutchison commented on Jul 11, 2016

    @benhutchison
    MemberAuthor

    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 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?

  2. travisbrown commented on Jul 12, 2016

    @travisbrown
    Contributor

    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.

  3. benhutchison commented on Jul 12, 2016

    @benhutchison
    MemberAuthor

    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.

  4. adelbertc commented on Jul 17, 2016

    @adelbertc
    Contributor

    I would like to see a cats that includes all modules except test-related things, and then perhaps a cats-testing or similar for laws and tests.

  5. benhutchison commented on Jul 26, 2016

    @benhutchison
    MemberAuthor

    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 ;)

  6. jeantil commented on Mar 9, 2017

    @jeantil

    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

    • cats%compile-internal depending on bench%compile-internal
    • cats%test-internal depending on bench%test

    maybe @non who seems to have written this in the first place (09b4b86) can enlighten us further.

  7. added this to the milestone on Mar 30, 2017
  8. kailuowang commented on May 18, 2017

    @kailuowang
    Contributor

    Remove from project 1.0.0-MF as it's consolidated into #1682.

  9. ceedubs commented on Jan 24, 2018

    @ceedubs
    Contributor

    @benhutchison @kailuowang after #1682 we are probably good to close this one out, right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions