Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider another module for collections not needed in cats-core. #2058

Closed
LukaJCB opened this issue Dec 1, 2017 · 8 comments
Closed

Consider another module for collections not needed in cats-core. #2058

LukaJCB opened this issue Dec 1, 2017 · 8 comments
Assignees

Comments

@LukaJCB
Copy link
Member

LukaJCB commented Dec 1, 2017

Right now we have NonEmptyVector and OneAnd that aren't actually used inside core. There's also been some people that really wanted a NonEmptySet and NonEmptyMap as well as collections that don't use universal hashing, but the new Hash type class would also allow us different kinds of these. e.g. NonEmptySortedSet and NonEmptyHashSet

So one idea to accommodate these and preserve modularity would be to create a new module inside the cats repo.

@johnynek
Copy link
Contributor

johnynek commented Dec 1, 2017

I think it makes sense to have separate modules when we have separate dependencies. For these cases, we don't have any additional dependency.

I'm -1 on complicating the build for users just to separate these things for a reason I don't understand.

I think the cats-free situation is a mistake and a needless complication for our users. I hope we won't repeat it.

@LukaJCB
Copy link
Member Author

LukaJCB commented Dec 1, 2017

Just to clarify, you'd just put these in cats.data @johnynek?

@johnynek
Copy link
Contributor

johnynek commented Dec 1, 2017

yessir

@tpolecat
Copy link
Member

tpolecat commented Dec 1, 2017

Agree. There's an engineering benefit to layering but I don't think we're there yet.

@kailuowang
Copy link
Contributor

I still vote for a separate repo which gives it independent release cycles. Cats' BC requirements make it particularly rigid for trying new things.

@johnynek
Copy link
Contributor

johnynek commented Sep 4, 2018

We don’t have to have the same binary compatibility guarantees for all modules, but it is a pain to have to use a version number implying stability. Can we set different versions on different modules? You can usually do anything with sbt.

I guess I’m a bad scala person but I have a bunch of libraries I haven’t published solely because setting up sbt, cross build, travis and publishing usually hits several snags for each new project. I try and put in a few hours here and there to do the next one, but then I get frustrated with it all.

Setting up the build and doing publishing is not the fun part. The more “not fun part” we have the less energy we have left over to actually build the libraries.

@kailuowang
Copy link
Contributor

@johnynek well, now dogs become cats-collections, at least we don't need to re-setup a repo again.

AFAIK, having different versions on different modules is tricky business. If you have the cats-collections module depending on the cats-core, you are still forced to release cats-core whenever you release cats-collections.

@johnynek
Copy link
Contributor

hurrah!

I don't mind doing the release all at once and I think our users will appreciate adding more collection types to cats-collections.

@LukaJCB LukaJCB closed this as completed Jul 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants