BOM or no BOM is an implementation detail. Using
com.google.clou:libraries-bom would make dependency management simpler
for developers, but the real issue is whether Beam can continue to
work with very old versions of the many libraries it depends on. Even
if this is acceptable for Beam, it's unlikely to be feasible for
anyone who needs to mix Beam code with other code.

There should be no self-incompatibility between Google minor version
releases. All the Google libraries in question follow semantic
versioning. E.g. Pubsub 1.43 would be fully API compatible with Pubsub
1.28, though not the reverse. However there are likely to be important
bug fixes in 1.43 and definitely new features that 1.28 would not
have. If there are any edge cases where this is not true, that's a bug
and if you file it against the repo we'll try to fix it. We're also
installing tooling to make this less likely to happen by accident.
However, right now any such problem is rare.

Behavior differences are another story. It is entirely possible that
something like Pubsub 1.28 would simply no longer function due to
changes at the backend. There's a deprecation cycle, announcements,
and transition periods in all such cases; but a project like Beam
can't stay on old versions forever. If they try, the backends will
shift out from under them.

Looking at Beam's dependencies, the only case where there are major
version changes to address is Guava.
This will take some work, but not an excessive amount. We should be
able to move this up to 28.1-android with few code changes and no
further API breaking changes in that library are planned for the
future.

The remaining issues are pre-1.0 libraries. OpenCensus is a particular
thorn in my side. Ideally these should not be used, at all. However if
we must, we should not expose them on the Beam API surface and we need
to move them forward quickly as they change.

-- 
Elliotte Rusty Harold
elh...@ibiblio.org

Reply via email to