Yes please!
On Wed, Jul 10, 2019 at 8:38 PM Kenneth Knowles <k...@apache.org> wrote: > > 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. >> > >> > >>