Just to make sure we have closed on the Jet runner, my understanding is: I was the main person asking for "runners-jet-experimental" but I am convinced to go with plain "runners-jet". It seems everyone else is already fine with this, so go ahead?
On Tue, Jul 9, 2019 at 1:23 PM Maximilian Michels <m...@apache.org> wrote: > We should fork the discussion around removing instances of @Experimental, > but it was good to mention it here. > > As for the Jet runner, I can only second Ismael: The Jet runner is the > first runner I can think of that came with ValidatesRunner and Nexmark out > of the box. Of course that doesn't mean the runner is "battled-tested", but > we do not have other means to test its maturity. > > For the future, we could come up with other criteria, e.g. a "probation > period", but enforcing this now seems arbitrary. > > If the authors of the Runners decide that it is experimental, so be it. > Otherwise I would leave it to the user to decide (it might be helpful to > list the inception date of each runner). That said, I value your concern > Kenn. I can see that we establish a consistent onboarding of new runners > which may involve marking them experimental for a while. > > -Max > > On 01.07.19 22:20, Kenneth Knowles wrote: > > > > > > On Wed, Jun 12, 2019 at 2:32 AM Ismaël Mejía <ieme...@gmail.com > > <mailto:ieme...@gmail.com>> wrote: > > > > Seems the discussion moved a bit of my original intent that was to > > make the Jet runner directory to be just called runners/jet in the > > directory and mark the 'experimental' part of it in documentation as > > we do for all other things in Beam. > > > > > > Thanks for returning to the one question at hand. We don't have to make > > an overall decision about all "experimental" things. > > > > > > Can we do this or is there still any considerable argument to not do > it? > > > > > > I think we actually have some competing goals: > > > > I agree 100% on the arguments, but let’s think in the reverse terms, > > highlighting lack of maturity can play against the intended goal of > > use and adoption even if for a noble reason. It is basic priming 101 > > [1]. > > > > > > _My_ goal is exactly to highlight lack of maturity so that users are not > > harmed by either (1) necessary breaking changes or (2) permanent low > > quality. Only users who are willing to follow along with the project and > > update their own code regularly should use experimental features. > > > > Evaluating the Jet runner I am convinced by your arguments, because > > looking at the two dangers: > > (1) necessary breaking changes -- runners don't really have their own > > APIs to break, except their own small set of APIs and pipeline options > > (2) permanent low quality -- because there is no API design possible, > > there's no risk of permanent low quality except by fundamental > > mismatches. Plus as you mention the testing is already quite good. > > > > So I am OK to not call it experimental. But I have a slight remaining > > concern that it did not really go through what other runners went > > through. I hope this just means it is more mature. I hope it does not > > indicate that we are reducing rigor. > > > > Kenn > > > > > > On Wed, May 29, 2019 at 3:02 PM Reza Rokni <r...@google.com > > <mailto:r...@google.com>> wrote: > > > > > > Hi, > > > > > > Over 800 usages under java, might be worth doing a few PR... > > > > > > Also suggest we use a very light review process: First round go > > for low hanging fruit, if anyone does a -1 against a change then we > > leave that for round two. > > > > > > Thoughts? > > > > > > Cheers > > > > > > Reza > > > > > > On Wed, 29 May 2019 at 12:05, Kenneth Knowles <k...@apache.org > > <mailto:k...@apache.org>> wrote: > > >> > > >> > > >> > > >> On Mon, May 27, 2019 at 4:05 PM Reza Rokni <r...@google.com > > <mailto:r...@google.com>> wrote: > > >>> > > >>> "Many APIs that have been in place for years and are used by > > most Beam users are still marked Experimental." > > >>> > > >>> Should there be a formal process in place to start 'graduating' > > features out of @Experimental? Perhaps even target an up coming > > release with a PR to remove the annotation from well established > API's? > > >> > > >> > > >> Good idea. I think a PR like this would be an opportunity to > > discuss whether the feature is non-experimental. Probably many of > > them are ready. It would help to address Ismael's very good point > > that this new practice could make users think the old Experimental > > stuff is not experimental. Maybe it is true that it is not really > > still Experimental. > > >> > > >> Kenn > > >> > > >> > > >>> > > >>> On Tue, 28 May 2019 at 06:44, Reuven Lax <re...@google.com > > <mailto:re...@google.com>> wrote: > > >>>> > > >>>> We generally use Experimental for two different things, which > > leads to confusion. > > >>>> 1. Features that work stably, but where we think we might > > still make some changes to the API. > > >>>> 2. New features that we think might not yet be stable. > > >>>> > > >>>> This dual usage leads to a lot of confusion IMO. The fact that > > we tend to forget to remove the @Experimental tag also makes it > > somewhat useless. Many APIs that have been in place for years and > > are used by most Beam users are still marked Experimental. > > >>>> > > >>>> Reuven > > >>>> > > >>>> On Mon, May 27, 2019 at 2:16 PM Ismaël Mejía <ieme...@gmail.com > > <mailto:ieme...@gmail.com>> wrote: > > >>>>> > > >>>>> > Personally, I think that it is good that moving from > > experimental to non-experimental is a breaking change in the > > dependency - one has backwards-incompatible changes and the other > > does not. If artifacts had separate versioning we could use 0.x for > > this. > > >>>>> > > >>>>> In theory it seems so, but in practice it is an annoyance to > > an end > > >>>>> user that already took the ‘risk’ of using an experimental > > feature. > > >>>>> Awareness is probably not the most important reason to break > > existing > > >>>>> code (even if it could be easily fixed). The alternative of > > doing this > > >>>>> with version numbers at least seems less impacting but can be > > >>>>> confusing. > > >>>>> > > >>>>> > But biggest motivation for me are these: > > >>>>> > > > >>>>> > - using experimental features should be opt-in > > >>>>> > - should be impossible to use an experimental feature > > without knowing it (so "opt-in" to a normal-looking feature is not > > enough) > > >>>>> > - developers of an experimental feature should be motivated > > to "graduate" it > > >>>>> > > >>>>> The fundamental problem of this approach is inconsistency with > our > > >>>>> present/past. So far we have ‘Experimental’ features > > everywhere. So > > >>>>> suddenly becoming opt-in let us in an inconsistent state. For > > example > > >>>>> all IOs are marked internally as Experimental but not at the > > level of > > >>>>> directories/artifacts. Adding this suffix in a new IO apart of > > adding > > >>>>> fear of use to the end users may also give the fake impression > > that > > >>>>> the older ones not explicitly marked are not experimental. > > >>>>> > > >>>>> What will be the state for example in the case of runner > > modules that > > >>>>> contain both mature and well tested runners like old Flink and > > Spark > > >>>>> runners vs the more experimental new translations for > Portability, > > >>>>> again more confusion. > > >>>>> > > >>>>> > FWIW I don't think "experimental" should be viewed as a bad > > thing. It just means you are able to make backwards-incompatible > > changes, and that users should be aware that they will need to > > adjust APIs (probably only a little) with new releases. Most > > software is not very good until it has been around for a long time, > > and in my experience the problem is missing the mark on > > abstractions, so backwards compatibility *must* be broken to achieve > > quality. Freezing it early dooms it to never achieving high quality. > > I know of projects where the users explicitly requested that the > > developers not freeze the API but instead prioritize speed and > quality. > > >>>>> > > >>>>> I agree 100% on the arguments, but let’s think in the reverse > > terms, > > >>>>> highlighting lack of maturity can play against the intended > > goal of > > >>>>> use and adoption even if for a noble reason. It is basic > > priming 101 > > >>>>> [1]. > > >>>>> > > >>>>> > Maybe the word is just too negative-sounding? Alternatives > > might be "unstable" or "incubating". > > >>>>> > > >>>>> Yes! “experimental” should not be viewed as a bad thing unless > > you are > > >>>>> a company that has less resources and is trying to protect its > > >>>>> investment so in that case they may doubt to use it. In this > case > > >>>>> probably incubating is a better term because it has less of the > > >>>>> ‘tentative’ dimension associated with Experimental. > > >>>>> > > >>>>> > Now, for the Jet runner, most runners sit on a branch for a > > while, not being released at all, and move to master as their > > "graduation". I think releasing under an "experimental" name is an > > improvement, making it available to users to try out. But we > > probably should have discussed before doing something different than > > all the other runners. > > >>>>> > > >>>>> There is something I don’t get in the case of Jet runner. From > the > > >>>>> discussion in this thread it seems it has everything required > > to not > > >>>>> be ‘experimental’. It passes ValidatesRunner and can even run > > Nexmark > > >>>>> that’s more that some runners already merged in master, so I > still > > >>>>> don’t get why we want to give it a different connotation. > > >>>>> > > >>>>> [1] https://en.wikipedia.org/wiki/Priming_(psychology) > > >>>>> > > >>>>> On Sun, May 26, 2019 at 4:43 AM Kenneth Knowles > > <k...@apache.org <mailto:k...@apache.org>> wrote: > > >>>>> > > > >>>>> > Personally, I think that it is good that moving from > > experimental to non-experimental is a breaking change in the > > dependency - one has backwards-incompatible changes and the other > > does not. If artifacts had separate versioning we could use 0.x for > > this. > > >>>>> > > > >>>>> > But biggest motivation for me are these: > > >>>>> > > > >>>>> > - using experimental features should be opt-in > > >>>>> > - should be impossible to use an experimental feature > > without knowing it (so "opt-in" to a normal-looking feature is not > > enough) > > >>>>> > - developers of an experimental feature should be motivated > > to "graduate" it > > >>>>> > > > >>>>> > So I think a user of an experimental feature should have to > > actually type the word "experimental" either on the command line or > > in their dependencies. That's just my opinion. In the thread [1] > > myself and Robert were the ones that went in this direction of > > opt-in. But it was mostly lazy consensus, plus the review on the > > pull request, that got us to this state. Definitely worth discussing > > more. > > >>>>> > > > >>>>> > FWIW I don't think "experimental" should be viewed as a bad > > thing. It just means you are able to make backwards-incompatible > > changes, and that users should be aware that they will need to > > adjust APIs (probably only a little) with new releases. Most > > software is not very good until it has been around for a long time, > > and in my experience the problem is missing the mark on > > abstractions, so backwards compatibility *must* be broken to achieve > > quality. Freezing it early dooms it to never achieving high quality. > > I know of projects where the users explicitly requested that the > > developers not freeze the API but instead prioritize speed and > quality. > > >>>>> > > > >>>>> > Maybe the word is just too negative-sounding? Alternatives > > might be "unstable" or "incubating". > > >>>>> > > > >>>>> > Now, for the Jet runner, most runners sit on a branch for a > > while, not being released at all, and move to master as their > > "graduation". I think releasing under an "experimental" name is an > > improvement, making it available to users to try out. But we > > probably should have discussed before doing something different than > > all the other runners. > > >>>>> > > > >>>>> > Kenn > > >>>>> > > > >>>>> > [1] > > > https://lists.apache.org/thread.html/302bd51c77feb5c9ce39882316d391535a0fc92e7608a623d9139160@%3Cdev.beam.apache.org%3E > > >>>>> > > > >>>>> > On Sat, May 25, 2019 at 1:03 AM Ismaël Mejía > > <ieme...@gmail.com <mailto:ieme...@gmail.com>> wrote: > > >>>>> >> > > >>>>> >> Including the experimental suffix in artifact names is not > > a good idea > > >>>>> >> either because once we decide that it is not experimantal > > anymore this > > >>>>> >> will be a breaking change for users who will need then to > > update its > > >>>>> >> dependencies code. Also it is error-prone to use different > > mappings > > >>>>> >> for directories and artifacts (even if possible). > > >>>>> >> > > >>>>> >> May we reconsider this Kenn? I understand the motivation > > but I hardly > > >>>>> >> see this making things better or more clear. Any runner > > user will end > > >>>>> >> up reading the runner documentation and capability matrix > > so he will > > >>>>> >> catch the current status that way. > > >>>>> >> > > >>>>> >> > > >>>>> >> > > >>>>> >> On Sat, May 25, 2019 at 8:35 AM Jozsef Bartok > > <jo...@hazelcast.com <mailto:jo...@hazelcast.com>> wrote: > > >>>>> >> > > > >>>>> >> > I missed Ken's input when writing my previous mail. Sorry. > > >>>>> >> > So, to recap: I should remove "experimental" from any > > directory names, but find an other way of configuring the artifact > > so that it still has "experimental" in it's name. > > >>>>> >> > Right? > > >>>>> >> > > > >>>>> >> > On Sat, May 25, 2019 at 9:32 AM Jozsef Bartok > > <jo...@hazelcast.com <mailto:jo...@hazelcast.com>> wrote: > > >>>>> >> >> > > >>>>> >> >> Yes, I'll gladly fix it, we aren't particularly keen to > > be labeled as experimental either.. > > >>>>> >> >> > > >>>>> >> >> Btw. initially the "experimental" word was only in the > > Gradle module name, but then there was some change > > >>>>> >> >> ([BEAM-4046] decouple gradle project names and maven > > artifact ids - 4/2/19) which kind of ended up > > >>>>> >> >> putting it in the directory name. Maybe I should have > > merged with that differently, but this is how > > >>>>> >> >> it seemed consistent. > > >>>>> >> >> > > >>>>> >> >> Anyways, will fix it in my next PR. > > >>>>> >> >> > > >>>>> >> >> On Fri, May 24, 2019 at 5:53 PM Ismaël Mejía > > <ieme...@gmail.com <mailto:ieme...@gmail.com>> wrote: > > >>>>> >> >>> > > >>>>> >> >>> I see thanks Jozsef, marking things as Experimental was > > discussed but > > >>>>> >> >>> we never agreed on doing this at the directory level. > > We can cover the > > >>>>> >> >>> same ground by putting an annotation in the classes (in > > particular the > > >>>>> >> >>> JetRunner and JetPipelineOptions classes which are the > > real public > > >>>>> >> >>> interface, or in the documentation (in particular > > website), I do not > > >>>>> >> >>> see how putting this in the directory name helps and if > > so we may need > > >>>>> >> >>> to put this in many other directories which is far from > > ideal. Any > > >>>>> >> >>> chance this can be fixed (jet-experimental -> jet) ? > > >>>>> >> >>> > > >>>>> >> >>> On Fri, May 24, 2019 at 9:08 AM Jozsef Bartok > > <jo...@hazelcast.com <mailto:jo...@hazelcast.com>> wrote: > > >>>>> >> >>> > > > >>>>> >> >>> > Hi Ismaël! > > >>>>> >> >>> > > > >>>>> >> >>> > Quoting Kenn (from PR-8410): "We discussed on list > > that it would be better to have new things always start as > > experimental in a way that clearly distinguishes them from the core." > > >>>>> >> >>> > > > >>>>> >> >>> > Rgds > > >>>>> >> >>> > > > >>>>> >> >>> > On Thu, May 23, 2019 at 10:44 PM Ismaël Mejía > > <ieme...@gmail.com <mailto:ieme...@gmail.com>> wrote: > > >>>>> >> >>> >> > > >>>>> >> >>> >> I saw that the runner was merged but I don’t get why > > the foler is > > >>>>> >> >>> >> called ‘runners/jet experimental’ and not simply > > ‘runners/jet’. Is it > > >>>>> >> >>> >> because the runner does not pass ValidatesRunner? Or > > because the > > >>>>> >> >>> >> contributors are few? I don’t really see any reason > > behind this > > >>>>> >> >>> >> suffix. And even if the status is not mature that’s > > not different from > > >>>>> >> >>> >> other already merged runners. > > >>>>> >> >>> >> > > >>>>> >> >>> >> On Fri, Apr 26, 2019 at 9:43 PM Kenneth Knowles > > <k...@apache.org <mailto:k...@apache.org>> wrote: > > >>>>> >> >>> >> > > > >>>>> >> >>> >> > Nice! That is *way* more than the PR I was looking > > for. I just meant that you could update the website/ directory. It > > is fine to keep the runner in your own repository if you want. > > >>>>> >> >>> >> > > > >>>>> >> >>> >> > But I think it is great if you want to contribute > > it to Apache Beam (hence donate it to the Apache Software > > Foundation). The benefits include: low-latency testing, free updates > > when someone does a refactor. Things to consider are: subject to ASF > > / Beam governance, PMC, commiters, subject to Beam's release cadence > > (and we might exclude from Beam releases for a little bit). > > Typically, we have kept runners on a branch until they are somewhat > > stable. I don't feel strongly about this for disjoint codebases that > > can easily be excluded from releases. We might want to suffix > > `-experimental` to the artifacts for some time. > > >>>>> >> >>> >> > > > >>>>> >> >>> >> > I commented on the PR about the necessary i.p. > > clearance steps. > > >>>>> >> >>> >> > > > >>>>> >> >>> >> > Kenn > > >>>>> >> >>> >> >the probl > > >>>>> >> >>> >> > On Fri, Apr 26, 2019 at 3:59 AM > > jo...@hazelcast.com <mailto:jo...@hazelcast.com> > > <jo...@hazelcast.com <mailto:jo...@hazelcast.com>> wrote: > > >>>>> >> >>> >> >> > > >>>>> >> >>> >> >> Hi Kenn. > > >>>>> >> >>> >> >> > > >>>>> >> >>> >> >> It took me a while to migrate our code to the > > Beam repo, but I finally have been able to create the Pull Request > > you asked for, this is it: https://github.com/apache/beam/pull/8410 > > >>>>> >> >>> >> >> > > >>>>> >> >>> >> >> Looking forward to your feedback! > > >>>>> >> >>> >> >> > > >>>>> >> >>> >> >> Best regards, > > >>>>> >> >>> >> >> Jozsef > > >>>>> >> >>> >> >> > > >>>>> >> >>> >> >> On 2019/04/19 20:52:42, Kenneth Knowles > > <k...@apache.org <mailto:k...@apache.org>> wrote: > > >>>>> >> >>> >> >> > The ValidatesRunner tests are the best source > > we have for knowing the > > >>>>> >> >>> >> >> > capabilities of a runner. Are there > > instructions for running the tests? > > >>>>> >> >>> >> >> > > > >>>>> >> >>> >> >> > Assuming we can check it out, then just open a > > PR to the website with the > > >>>>> >> >>> >> >> > current capabilities and caveats. Since it is a > > big deal and could use lots > > >>>>> >> >>> >> >> > of eyes, I would share the PR link on this > thread. > > >>>>> >> >>> >> >> > > > >>>>> >> >>> >> >> > Kenn > > >>>>> >> >>> >> >> > > > >>>>> >> >>> >> >> > On Thu, Apr 18, 2019 at 11:53 AM Jozsef Bartok > > <jo...@hazelcast.com <mailto:jo...@hazelcast.com>> wrote: > > >>>>> >> >>> >> >> > > > >>>>> >> >>> >> >> > > Hi. We at Hazelcast Jet have been working for > > a while now to implement a > > >>>>> >> >>> >> >> > > Java Beam Runner (non-portable) based on > > Hazelcast Jet ( > > >>>>> >> >>> >> >> > > https://jet.hazelcast.org/). The process is > > still ongoing ( > > >>>>> >> >>> >> >> > > > > https://github.com/hazelcast/hazelcast-jet-beam-runner), but we are > > >>>>> >> >>> >> >> > > aiming for a fully functional, reliable > > Runner which can proudly join the > > >>>>> >> >>> >> >> > > Capability Matrix. For that purpose I would > > like to ask what’s your process > > >>>>> >> >>> >> >> > > of validating runners? We are already running > > the @ValidatesRunner tests > > >>>>> >> >>> >> >> > > and the Nexmark test suite, but beyond that > > what other steps do we need to > > >>>>> >> >>> >> >> > > take to get our Runner to the level it needs > > to be at? > > >>>>> >> >>> >> >> > > > > >>>>> >> >>> >> >> > > > >>> > > >>> > > >>> > > >>> -- > > >>> > > >>> This email may be confidential and privileged. If you received > > this communication by mistake, please don't forward it to anyone > > else, please erase all copies and attachments, and please let me > > know that it has gone to the wrong person. > > >>> > > >>> The above terms reflect a potential business arrangement, are > > provided solely as a basis for further discussion, and are not > > intended to be and do not constitute a legally binding obligation. > > No legally binding obligations will be created, implied, or inferred > > until an agreement in final form is executed in writing by all > > parties involved. > > > > > > > > > > > > -- > > > > > > This email may be confidential and privileged. If you received > > this communication by mistake, please don't forward it to anyone > > else, please erase all copies and attachments, and please let me > > know that it has gone to the wrong person. > > > > > > The above terms reflect a potential business arrangement, are > > provided solely as a basis for further discussion, and are not > > intended to be and do not constitute a legally binding obligation. > > No legally binding obligations will be created, implied, or inferred > > until an agreement in final form is executed in writing by all > > parties involved. > > > > > >