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

binary compatibility post 1.0 #40

Closed
kailuowang opened this issue Jan 4, 2018 · 2 comments
Closed

binary compatibility post 1.0 #40

kailuowang opened this issue Jan 4, 2018 · 2 comments

Comments

@kailuowang
Copy link
Contributor

If we lock binary compatibility post 1.0, I think the main implication is that we can't add methods existing traits, however we can still add new traits.
If someone want to add a new extension to Option, he just need to create a new trait say OptionSyntax2 and let the
mouse.all extends and mouse.option extend this new trait.
Here is an example of this solution I am trying to suggest in a cats PR
typelevel/cats#2138 (comment)
In the case of implicit extension namespace collusion, I don't know a good solution, I imagine when user encounter this they just need to stop using the all-inclusive import and use specific imports to avoid the ones that causing conflicts.

@benhutchison
Copy link
Member

IIUC that sort of binary compatibility break (methods added to trait) affects implementers of the trait only. Mouse doesn’t publish any traits designed to be extended by users, in contrast to cats.

So I think binary compatibility isn’t likely to be as problematic. My preference is to defer any promises until there’s feedback from users that they’re having problems.

@kailuowang
Copy link
Contributor Author

That's a good point. I am +1 on deferring.

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

2 participants