Well, this is obviously not Kotlin-only but since ...
# server
d
Well, this is obviously not Kotlin-only but since I asked myself this question while reading https://jakewharton.com/public-api-challenges-in-kotlin/ and the community here is very knowledgeable and helpful I will ask here anyway. Also, I don't know the right channel, so I picked server because I'm mostly interested in the compatibility aspects of server-side development. Is binary compatibility still relevant for today's apps that get deployed via containers? In my experience, with containers, there's always a fresh compilation of the sources, so only the source (and behavioural as well of course) compatibility aspect seems important when evolving a library intended to be used in containers. On the other hand, we don't have to care about binary compatibility because we never upgrade dependencies without recompiling. Am I missing anything? What is your experience in this area?
s
I won't pretend to be an expert, but transitive dependencies jump to mind. When I use two libraries that share a common dependency of their own, I need them to all work together. I don't know if that falls under the heading of binary compatibility or not.
💯 2
👍 1
d
Hmm, probably yes. If the common dependency breaks binary compatibility from v1 to v2 and my direct deps use v1, resp. v2, then I think my app will not link. The issue is probably even more pronounced when my app and my dep both use the same dep (because it's more likely that I will explicitly upgrade the version).
a
Another way to look at it is as a library author. If you need to write a library, and need its subsequent version to be backwards compatible, thats jake's post all about
d
@andylamax I was asking a finer question: specifically about the need of binary compatibility (vs. just source compatibility) in today's deployments. But the answer is already clear 🙂
c
Same opinion as what was already said: it's very important for library authors, but when you're making a containerized app then it's not really an issue.