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. > >