Colin, Guozhang, Matthias, all makes sense to me, thanks. Ryanne
On Fri, May 8, 2020, 1:48 PM Matthias J. Sax <mj...@apache.org> wrote: > I agree with what was discussed. Having a (breaking) 3.0 release to > start the "bridge release" series and completing it with a 4.0 release > sounds intuitive to me. > > For old MirrorMaker: In general I am also in favor of removing it, but > there should be a reasonable deprecation period. Deprecating it in 2.6 > and removing it in 3.0 seems a little bit short to me? However, given > that 4.0 would not come too much after 3.0 (not sure how many release we > need to finalize ZK removal) it might be ok to have it a little longer? > > And yes, for Kafka Stream we would use the 3.0 release to remove a bunch > of previously deprecated APIs that we accumulated since the 2.0 release. > > > -Matthias > > On 5/7/20 4:28 PM, Guozhang Wang wrote: > > Hey folks, > > > > Sorry for stating that the bridge release would not break any > compatibility > > before, which is incorrect and confused many people. > > > > I think one way to think about the versioning is that: > > > > 0) In a 2.x version moving ahead we would deprecate the ZK-dependent > tools > > such as --zookeeper flags from various scripts (KIP-555) > > > > 1) In 3.0 we would at least make one incompatible change for example to > > remove the deprecated ZK flags. > > > > 2) In a future major version (e.g. 4.0) we would drop ZK entirely, > > including usages such as security credentials / broker registration / etc > > which are via ZK today as well. > > > > Then for the bridge release(s), it can be any or all of 3.x. > > > > > > For 1), I'd love to add a few more incompatibility changes in 3.0 from > > Kafka Streams: we evolve Streams public APIs by deprecating and then > remove > > in major releases, and since 2.0 we've accumulated quite a few deprecated > > APIs, and I can compile a list of KIPs that contain those if people are > > interested. > > > > > > Guozhang > > > > > > On Thu, May 7, 2020 at 3:53 PM Colin McCabe <cmcc...@apache.org> wrote: > > > >> On Wed, May 6, 2020, at 21:33, Ryanne Dolan wrote: > >>>> In fact, we know that the bridge release will involve at least one > >>>> incompatible change. We will need to drop support for the --zookeeper > >>>> flags in the command-line tools. > >>> > >>> If the bridge release(s) and the subsequent post-ZK release are _both_ > >>> breaking changes, I think we only have one option: the 3.x line are the > >>> bridge release(s), and ZK is removed in 4.0, as suggested by Andrew > >>> Schofield. > >>> > >>> Specifically: > >>> - in order to _remove_ (not merely deprecate) the --zookeeper args, we > >> will > >>> need a major release. > >>> - in oder to drop support for ZK entirely (e.g. break a bunch of > external > >>> tooling like Cruise Control), we will need a major release. > >>> > >>> I count two major releases. > >> > >> Hi Ryanne, > >> > >> I agree that dropping ZK completely will need a new major release after > >> 3.0. I think that's OK and in keeping with how we've handled > deprecation > >> and removal in the past. It's important for users to have a smooth > upgrade > >> path. > >> > >> best, > >> Colin > >> > >>> > >>> Ryanne > >>> > >>> - > >>> > >>> On Wed, May 6, 2020 at 10:52 PM Colin McCabe <cmcc...@apache.org> > wrote: > >>> > >>>> On Mon, May 4, 2020, at 17:12, Ryanne Dolan wrote: > >>>>> Hey Colin, I think we should wait until after KIP-500's "bridge > >>>>> release" so there is a clean break from Zookeeper after 3.0. The > >>>>> bridge release by definition is an attempt to not break anything, so > >>>>> it theoretically doesn't warrant a major release. > >>>> > >>>> Hi Ryanne, > >>>> > >>>> I think it's important to clarify this a little bit. The bridge > >> release > >>>> (really, releases, plural) allow you to upgrade from a cluster that is > >>>> using ZooKeeper to one that is not using ZooKeeper. But, that doesn't > >>>> imply that the bridge release itself doesn't break anything. > Upgrading > >>>> to the bridge release itself might involve some minor incompatibility. > >>>> > >>>> Kafka does occasionally have incompatible changes. In those cases, we > >>>> bump the major version number. One example is that when we went from > >>>> Kafka 1.x to Kafka 2.0, we dropped support for JDK7. This is an > >>>> incompatible change. > >>>> > >>>> In fact, we know that the bridge release will involve at least one > >>>> incompatible change. We will need to drop support for the --zookeeper > >>>> flags in the command-line tools. > >>>> > >>>> We've been preparing for this change for a long time. People have > >> spent > >>>> a lot of effort designing new APIs that can be used instead of the old > >>>> zookeeper-based code that some of the command-line tools used. We > have > >>>> also deprecated the old ZK-based flags. But at the end of the day, it > >>>> is still an incompatible change. So it's unfortunately not possible > >> for > >>>> the > >>>> bridge release to be a 2.x release. > >>>> > >>>>> If that's not the case (i.e. if a single "bridge release" turns out > >> to > >>>>> be impractical), we should consider forking 3.0 while maintaining a > >>>>> line of Zookeeper-dependent Kafka in 2.x. That way 3.x can evolve > >>>>> dramatically without breaking the 2.x line. In particular, anything > >>>>> related to removing Zookeeper could land in pre-3.0 while every other > >>>>> feature targets 2.6. > >>>> > >>>> Just to be super clear about this, what we want to do here is support > >>>> operating in __either__ KIP-500 mode and legacy mode for a while. So > >> the > >>>> same branch will have support for both the old way and the new way of > >>>> managing metadata. > >>>> > >>>> This will allow us to get an "alpha" version of the KIP-500 mode out > >> early > >>>> for people to experiment with. It also greatly reduces the number of > >> Kafka > >>>> releases we have to make, and the amount of backporting we have to do. > >>>> > >>>>> > >>>>> If you are proposing 2.6 should be the "bridge release", I think this > >>>>> is premature given Kafka's time-based release schedule. If the bridge > >>>>> features happen to be merged before 2.6's feature freeze, then sure > >> -- > >>>>> let's make that the bridge release in retrospect. And if we get all > >>>>> the post-Zookeeper features merged before 2.7, I'm onboard with > >> naming > >>>>> it "3.0" instead. > >>>>> > >>>>> That said, we should aim to remove legacy MirrorMaker before 3.0 as > >>>>> well. I'm happy to drive that additional breaking change. Maybe 2.6 > >>>>> can be the "bridge" for MM2 as well. > >>>> > >>>> I don't have a strong opinion either way about this, but if we want to > >>>> remove the original MirrorMaker, we have to deprecate it first, > >> right? Are > >>>> we ready to do that? > >>>> > >>>> best, > >>>> Colin > >>>> > >>>>> > >>>>> Ryanne > >>>>> > >>>>> On Mon, May 4, 2020, 5:05 PM Colin McCabe <cmcc...@apache.org> > >> wrote: > >>>>> > >>>>>> Hi all, > >>>>>> > >>>>>> We've had a few proposals recently for incompatible changes. One > >> of > >>>>>> them is my KIP-604: Remove ZooKeeper Flags from the Administrative > >>>>>> Tools. The other is Boyang's KIP-590: Redirect ZK Mutation > >>>>>> Protocols to the Controller. I think it's time to start thinking > >>>>>> about Kafka 3.0. Specifically, I think we should move to 3.0 after > >>>>>> the 2.6 release. > >>>>>> > >>>>>> From the perspective of KIP-500, in Kafka 3.x we'd like to make > >>>>>> running in a ZooKeeper-less mode possible (but not yet the > >> default.) > >>>>>> This is the motivation behind KIP-590 and KIP-604, as well as some > >>>>>> of the other KIPs we've done recently. Since it will take some > >> time > >>>>>> to stabilize the new ZooKeeper-free Kafka code, we will hide it > >>>>>> behind an option initially. (We'll have a KIP describing this all > >> in > >>>>>> detail soon.) > >>>>>> > >>>>>> What does everyone think about having Kafka 3.0 come up next after > >>>>>> 2.6? Are there any other things we should change in the 2.6 -> 3.0 > >>>>>> transition? > >>>>>> > >>>>>> best, Colin > >>>>>> > >>>>> > >>>> > >>> > >> > > > > > >