https://issues.apache.org/jira/browse/FLINK-2940
There is now a pending pull request: https://github.com/apache/flink/pull/1529 As I was working on the changes, I discovered we have some more modules which have a Scala dependency which could be avoided. Namely these are "flink-java8", and "flink-streaming-java". The latter probably affects a lot of users. So it would be nice to make it Scala-free. Do you think that would be feasible? Cheers, Max On Mon, Nov 2, 2015 at 9:01 PM, Fabian Hueske <fhue...@gmail.com> wrote: > +1 for that. > > 2015-11-02 20:52 GMT+01:00 Stephan Ewen <se...@apache.org>: > >> +1 for Max' suggestion to fix that for 1.0 (next release). >> >> Hot fixing of this thing so short before a release is a bit risky in my >> opinion. It is easy to make errors (overlooking something, error not >> visible because of cached older dependencies, ...), it happened more than >> once during version upgrades, maven project re-organizations, etc. >> >> Doing it after 0.10 and having a few week to let it sink in and errors >> surface would probably be much safer... >> >> On Mon, Nov 2, 2015 at 5:19 AM, Fabian Hueske <fhue...@gmail.com> wrote: >> >> > Ah OK. Sorry, I misunderstood your intention. >> > >> > 2015-11-02 14:07 GMT+01:00 Maximilian Michels <m...@apache.org>: >> > >> > > > That would mean to have "flink-java_2.10" and "flink-java_2.11" >> > artifacts >> > > > (and others that depend on flink-java and have no other Scala >> > dependency) >> > > > in the 0.10.0 release and only "flink-java" in the next 1.0 release. >> > > >> > > >> > > My suggestion was to keep the Scala unsuffixed Scala 2.10 and add a >> > > suffix for Scala 2.11. That's the way we are currently doing it (also >> > > deployed on Maven like this). For the next release after 0.10, we can >> > > do it properly. >> > > >> > > On Mon, Nov 2, 2015 at 1:30 PM, Chiwan Park <chiwanp...@apache.org> >> > wrote: >> > > > If we choose selective Scala version suffix for artifacts, we have to >> > > tell which artifacts have the version suffix to newcomers. Some >> artifacts >> > > such as "flink-java”, "flink-streaming-java" are easily recognized. But >> > > IMO, knowing whether artifacts such as "flink-ml", "flink-clients", >> > > "flink-table" have the version suffix or not is difficult for >> newcomers. >> > > > >> > > > This is why we are adding the version suffix to all Scala 2.11 >> > artifacts >> > > currently. For Scala 2.10 artifacts, we aren’t adding the version >> suffix >> > > for Flink with Java users. >> > > > >> > > > I’m for adding the version suffix to Scala 2.10 artifacts also. But >> I’m >> > > not sure that removing the version suffix from Java-only artifacts >> would >> > be >> > > good. As I said above, It seems difficult for newcomers. >> > > > >> > > > Regards, >> > > > Chiwan Park >> > > > >> > > > On November 2, 2015 at 8:19:15 PM, Fabian Hueske (fhue...@gmail.com) >> > > wrote: >> > > > >> > > > That would mean to have "flink-java_2.10" and "flink-java_2.11" >> > artifacts >> > > > (and others that depend on flink-java and have no other Scala >> > dependency) >> > > > in the 0.10.0 release and only "flink-java" in the next 1.0 release. >> > > > >> > > > Do we want that? >> > > > >> > > > 2015-11-02 11:37 GMT+01:00 Maximilian Michels <m...@apache.org>: >> > > > >> > > >> I'm for leaving it as-is and renaming all artifacts which depend on >> > > >> Scala for the release following 0.10. >> > > >> >> > > >> On Mon, Nov 2, 2015 at 11:32 AM, Fabian Hueske <fhue...@gmail.com> >> > > wrote: >> > > >> > OK, let me try to summarize the discussion (and please correct me >> > if I >> > > >> got >> > > >> > something wrong). >> > > >> > >> > > >> > 1) Flink deploys Scala 2.11 snapshot artifacts. Therefore, we have >> > to >> > > >> > release 2.11 artifacts for the 0.10.0 release version as well. >> > > >> > >> > > >> > 2) Everybody agrees to appropriately tag all artifacts that have a >> > > >> > (transitive) Scala dependency. ATM, that would also include >> > flink-java >> > > >> > which is a bit awkward. The Scala dependency in flink-java >> > originates >> > > >> from >> > > >> > the Chill library which is used to obtain a Kryo serializer which >> is >> > > >> > initialized with serializers for Scala classes. We could resolve >> > this >> > > >> issue >> > > >> > by providing Java and Scala specific implementations of the Kryo >> > > >> > serializers and have KryoTypeInfos for Java and Scala. >> > > >> > >> > > >> > The question to answer right now is, do we want to have >> "correctly" >> > > >> labeled >> > > >> > artifacts for the next 0.10.0 release or do we defer that for 1.0? >> > > >> > If we want to solve it for 0.10.0 we need to cancel the current RC >> > and >> > > >> > provide a fix to remove the Scala dependency in flink-java, IMO. >> > > >> > >> > > >> > Opinions? >> > > >> > >> > > >> > Cheers, Fabian >> > > >> > >> > > >> > 2015-11-02 8:55 GMT+01:00 Stephan Ewen <se...@apache.org>: >> > > >> > >> > > >> >> +1 for the approach discusses here, and for removing Scala >> > > dependencies >> > > >> >> from modules that can be Scala independent. >> > > >> >> >> > > >> >> It would be nice if pure Java users would not see any Scala >> > > versioning >> > > >> (on >> > > >> >> flink-core, flink-java, later also flink-sreaming-java). I guess >> > for >> > > any >> > > >> >> runtime-related parts (including flink-client and currently all >> > > >> streaming >> > > >> >> projects), we need the Scala versions... >> > > >> >> >> > > >> >> On Sun, Nov 1, 2015 at 9:29 AM, Maximilian Michels < >> m...@apache.org >> > > >> > > >> wrote: >> > > >> >> >> > > >> >> > Good point. Didn't know that. We can still add them for the >> > > release. >> > > >> >> > >> > > >> >> > On Sat, Oct 31, 2015 at 1:51 PM, Alexander Alexandrov >> > > >> >> > <alexander.s.alexand...@gmail.com> wrote: >> > > >> >> > > My two cents - there are already Maven artifacts deployed for >> > > 2.11 >> > > >> in >> > > >> >> the >> > > >> >> > > SNAPSHOT repository. I think it might be confusing if they >> > > suddenly >> > > >> >> > > disappear for the stable release. >> > > >> >> > > >> > > >> >> > > >> > > >> >> > > 2015-10-29 11:58 GMT+01:00 Maximilian Michels < >> m...@apache.org >> > >: >> > > >> >> > > >> > > >> >> > >> Seems like we agree that we need artifacts for different >> > > versions >> > > >> of >> > > >> >> > Scala >> > > >> >> > >> on Maven. There also seems to be a preference for including >> > the >> > > >> >> version >> > > >> >> > in >> > > >> >> > >> the artifact name. >> > > >> >> > >> >> > > >> >> > >> I've created an issue and marked it to be resolved for 1.0. >> > For >> > > the >> > > >> >> 0.10 >> > > >> >> > >> release, we will have binaries but no Maven artifacts. The >> > > biggest >> > > >> >> > >> challenge I see is to remove Scala from as many modules as >> > > >> possible. >> > > >> >> For >> > > >> >> > >> example, flink-java depends on Scala at the moment.. >> > > >> >> > >> >> > > >> >> > >> https://issues.apache.org/jira/browse/FLINK-2940 >> > > >> >> > >> >> > > >> >> > >> On Wed, Oct 28, 2015 at 7:31 PM, Frederick F. Kautz IV < >> > > >> >> > fka...@redhat.com> >> > > >> >> > >> wrote: >> > > >> >> > >> >> > > >> >> > >> > No idea if I get a vote ;) Nevertheless, +1 to have >> binaries >> > > for >> > > >> >> both >> > > >> >> > >> > versions in Maven and explicitly "scala versioned". >> > > >> >> > >> > >> > > >> >> > >> > Some background on this for those not as familiar with >> scala >> > > >> >> > versioning: >> > > >> >> > >> > >> > > >> >> > >> > It's considered best practice to label what version of >> > scala a >> > > >> >> library >> > > >> >> > >> > uses in the artifact id. >> > > >> >> > >> > >> > > >> >> > >> > The reason is compiled scala code is only compatible with >> > the >> > > >> major >> > > >> >> > >> > version of scala it was compiled for. For example, a >> library >> > > >> >> > compatible >> > > >> >> > >> > with 2.10 is not compatible with 2.11. The same will be >> true >> > > with >> > > >> >> 2.12 >> > > >> >> > >> once >> > > >> >> > >> > it is released. Mixing versions will result in undefined >> > > behavior >> > > >> >> > which >> > > >> >> > >> > will likely manifest itself as runtime exceptions. >> > > >> >> > >> > >> > > >> >> > >> > The convention to fix this problem is for all published >> > > >> libraries to >> > > >> >> > >> > specify the version of scala they are compatible with. >> > Leaving >> > > >> out >> > > >> >> the >> > > >> >> > >> > scala version in a library is akin to saying "We don't >> > depend >> > > on >> > > >> >> scala >> > > >> >> > >> for >> > > >> >> > >> > this library, so feel free to use whatever you want." Sbt >> > > users >> > > >> will >> > > >> >> > >> > typically specify the version of scala they use and >> tooling >> > is >> > > >> built >> > > >> >> > >> around >> > > >> >> > >> > ensuring consistency with the "%%" operator. >> > > >> >> > >> > >> > > >> >> > >> > E.g. >> > > >> >> > >> > >> > > >> >> > >> > scalaVersion := "2.11.4" >> > > >> >> > >> > >> > > >> >> > >> > // this resolves to to artifactID: "scalacheck_2.11" >> > > >> >> > >> > libraryDependencies += "org.scalacheck" %% "scalacheck" % >> > > >> "1.12.0" % >> > > >> >> > >> "test" >> > > >> >> > >> > >> > > >> >> > >> > The most important part of this is that the scala version >> is >> > > >> >> explicit >> > > >> >> > >> > which eliminates the problem for downstream users. >> > > >> >> > >> > >> > > >> >> > >> > Cheers, >> > > >> >> > >> > Frederick >> > > >> >> > >> > >> > > >> >> > >> > >> > > >> >> > >> > On 10/28/2015 10:55 AM, Fabian Hueske wrote: >> > > >> >> > >> > >> > > >> >> > >> >> +1 to have binaries for both versions in Maven and as >> build >> > > to >> > > >> >> > download. >> > > >> >> > >> >> >> > > >> >> > >> >> 2015-10-26 17:11 GMT+01:00 Theodore Vasiloudis < >> > > >> >> > >> >> theodoros.vasilou...@gmail.com>: >> > > >> >> > >> >> >> > > >> >> > >> >> +1 for having binaries, I'm working on a Spark >> application >> > > >> >> currently >> > > >> >> > >> with >> > > >> >> > >> >>> Scala 2.11 and having to rebuild everything when >> deploying >> > > >> e.g. to >> > > >> >> > EC2 >> > > >> >> > >> >>> is a >> > > >> >> > >> >>> pain. >> > > >> >> > >> >>> >> > > >> >> > >> >>> On Mon, Oct 26, 2015 at 4:22 PM, Ufuk Celebi < >> > > u...@apache.org> >> > > >> >> > wrote: >> > > >> >> > >> >>> >> > > >> >> > >> >>> I agree with Till, but is this something you want to >> > > address in >> > > >> >> this >> > > >> >> > >> >>>> release already? >> > > >> >> > >> >>>> >> > > >> >> > >> >>>> I would postpone it to 1.0.0. >> > > >> >> > >> >>>> >> > > >> >> > >> >>>> – Ufuk >> > > >> >> > >> >>>> >> > > >> >> > >> >>>> On 26 Oct 2015, at 16:17, Till Rohrmann < >> > > trohrm...@apache.org >> > > >> > >> > > >> >> > wrote: >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>>> I would be in favor of deploying also Scala 2.11 >> > > artifacts to >> > > >> >> > Maven >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>> since >> > > >> >> > >> >>> >> > > >> >> > >> >>>> more and more people will try out Flink with Scala >> 2.11. >> > > >> Having >> > > >> >> the >> > > >> >> > >> >>>>> dependencies in the Maven repository makes it >> > considerably >> > > >> >> easier >> > > >> >> > for >> > > >> >> > >> >>>>> people to get their Flink jobs running. >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>>> Furthermore, I observed that people are not aware that >> > our >> > > >> >> > deployed >> > > >> >> > >> >>>>> artifacts, e.g. flink-runtime, are built with Scala >> > 2.10. >> > > As >> > > >> a >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>> consequence, >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> they mix flink dependencies with other dependencies >> > > pulling >> > > >> in >> > > >> >> > Scala >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>> 2.11 >> > > >> >> > >> >>> >> > > >> >> > >> >>>> and then they wonder that the program crashes. It would >> > be, >> > > >> imho, >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>> clearer >> > > >> >> > >> >>> >> > > >> >> > >> >>>> if all our dependencies which depend on a specific >> Scala >> > > >> version >> > > >> >> > would >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>> have >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> the corresponding Scala suffix appended. >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>>> Adding the 2.10 suffix would also spare us the hassle >> of >> > > >> >> upgrading >> > > >> >> > >> to a >> > > >> >> > >> >>>>> newer Scala version in the future, because then the >> > > artifacts >> > > >> >> > >> wouldn't >> > > >> >> > >> >>>>> share the same artifact name. >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>>> Cheers, >> > > >> >> > >> >>>>> Till >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>>> On Mon, Oct 26, 2015 at 4:04 PM, Maximilian Michels < >> > > >> >> > m...@apache.org> >> > > >> >> > >> >>>>> >> > > >> >> > >> >>>> wrote: >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> Hi Flinksters, >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>>> We have recently committed an easy way to change >> > Flink's >> > > >> Scala >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> version. >> > > >> >> > >> >>> >> > > >> >> > >> >>>> The >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> question arises now whether we should ship Scala 2.11 >> as >> > > >> >> binaries >> > > >> >> > and >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> via >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> Maven. For the rc0, I created all binaries twice, for >> > > Scala >> > > >> 2.10 >> > > >> >> > and >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> 2.11. >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> However, I didn't create Maven artifacts. This follows >> > our >> > > >> >> current >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> shipping >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> strategy where we only ship Hadoop1 and Hadoop 2.3.0 >> > Maven >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> dependencies >> > > >> >> > >> >>> >> > > >> >> > >> >>>> but >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> additionally Hadoop 2.4, 2.6, 2.7 as binaries. >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>>> Should we also upload Maven dependencies for Scala >> > 2.11? >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>>> If so, the next question arises: What version pattern >> > > >> should we >> > > >> >> > have >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> for >> > > >> >> > >> >>> >> > > >> >> > >> >>>> the Flink Scala 2.11 dependencies? For Hadoop, we >> append >> > > >> -hadoop1 >> > > >> >> > to >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> the >> > > >> >> > >> >>> >> > > >> >> > >> >>>> VERSION, e.g. artifactID=flink-core, >> > version=0.9.1-hadoop1. >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>>> However, it is common practice to append the suffix >> to >> > > the >> > > >> >> > >> artifactID >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> of >> > > >> >> > >> >>> >> > > >> >> > >> >>>> the Maven dependency, e.g. artifactID=flink-core_2.11, >> > > >> >> > version=0.9.1. >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> This >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> has mostly historic reasons but is widely used. >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>>> Whatever naming pattern we choose, it should be >> > > consistent. >> > > >> I >> > > >> >> > would >> > > >> >> > >> be >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>> in >> > > >> >> > >> >>>> >> > > >> >> > >> >>>>> favor of changing our artifact names to contain the >> > Hadoop >> > > >> and >> > > >> >> > Scala >> > > >> >> > >> >>>>>> version. This would also imply that all Scala >> dependent >> > > >> Maven >> > > >> >> > >> modules >> > > >> >> > >> >>>>>> receive a Scala suffix (also the default Scala 2.10 >> > > >> modules). >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>>> Cheers, >> > > >> >> > >> >>>>>> Max >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>>>> >> > > >> >> > >> >>>> >> > > >> >> > >> > >> > > >> >> > >> >> > > >> >> > >> > > >> >> >> > > >> >> > > >> > >>