Just for the record, I also said not to do anything right now about it :)

Other than that, I mostly agree with Nicolas. Unless we are forced to
update Scala 3 we should *not* do it right now. The situation might
change in 6-12 months with widespread adoption to Scala 3.3 we might
just do it (because everyone does by then and updates will only be
available for 3.3 at some point in the future).

Good point also about 2.12 compatibility. It will become harder to
support multiple Scala version the more the allowed syntax differs.

On Fri, Mar 24, 2023 at 1:31 PM Matthew Benedict de Detrich
<matthew.dedetr...@aiven.io.invalid> wrote:
>
> > One precondition to upgrade to newer versions of Scala 3 would be dropping
> support for Scala 2.12.
> Scala 2.13 at least has support for some of the Scala 3 Syntax with
> compiler flags to cross compile.
>
> Are you talking about support on artifact level or on syntax level? Afaik
> there isn't any plan for Scala 3.3 to drop support for Scala 2.13 artifacts
> (artifacts are completely separated from supported syntax). If we are
> talking about a hypothetical Scala 3 user of Pekko, the Scala3 syntax that
> Pekko happens to use will be irrelevant here. In other words, if a user is
> upgrading from Scala 3.1/Scala 3.2 to Scala 3.3 then they will have to
> upgrade the syntax of the source code irrespective of Pekko. If we are
> talking about difficulties of cross compiling for Scala 3/Scala 2 within
> Pekko itself I think we would have to see if there are any syntax breaking
> changes in this regard (I didn't see any for Scala 3.3 but I may have
> missed something). Since an RC for Scala 3.3 is out we can pretty easily
> figure out if this is going to be a problem right now.
>
> I think what Johannes said here is important, which is that currently there
> aren't any users of Pekko Scala 3 and because of this we really shouldn't
> overthink it. And even then, if we do release Pekko with Scala 3.3 and some
> hypothetical user is going to have problems because they haven't upgrade to
> Scala 3.3 yet, they can easily use the Pekko Scala 2.13 artifact and since
> we are not using any bespoke Scala 3 features in Pekko currently on a
> source level the user is actually not going to notice any difference.
>
> On Fri, Mar 24, 2023 at 1:18 PM Nicolas Vollmar <nvoll...@gmail.com> wrote:
>
> > IMHO we should use the lowest supported version of Scala 3 to not force
> > user to upgrade to newer versions.
> >
> > Scala 3 continues to deprecate old syntax. Some of it will produce warnings
> > in Scala 3.2 and may be removed in 3.3 or later.
> > For example
> > https://dotty.epfl.ch/docs/reference/dropped-features/package-objects.html
> > or https://dotty.epfl.ch/docs/reference/changed-features/imports.html
> >
> > One precondition to upgrade to newer versions of Scala 3 would be dropping
> > support for Scala 2.12.
> > Scala 2.13 at least has support for some of the Scala 3 Syntax with
> > compiler flags to cross compile.
> >
> >
> >
> > On Fri, 24 Mar 2023 at 10:26, Matthew Benedict de Detrich
> > <matthew.dedetr...@aiven.io.invalid> wrote:
> >
> > > So some discussions on github are popping up regarding which Scala 3
> > > version we should pick so I think it's time to discuss this formally on
> > the
> > > mailing list.
> > >
> > > As a precursor one thing people need to understand is that the Scala 3
> > > release cycle has changed, quoting from
> > >
> > https://github.com/apache/incubator-pekko/issues/6#issuecomment-1302701657
> > >
> > > > Scala 2 used epoch.major.minor version convention. Scala 3 has
> > > major.minor.patch.
> > >
> > > > So there is no 3.0/3.1/3.2/etc cross-compilation - the assumption is
> > > that:
> > >
> > > > * you can compile against the same minor version with backward- and
> > > forward-compatibility: 3.1.3 dependency against 3.1.0 code, 3.0.0
> > > dependency against 3.0.1 code, etc
> > > > * within the same major version you always have backward-compatibility:
> > > 3.1.3 dependency can be used in 3.1.3 project, but also 3.2.0 project and
> > > in future against 3.3.0 project
> > >
> > > This means that if we pick a Scala version, we are essentially forcing
> > the
> > > potential Scala 3 users of Pekko to bump their Scala 3 version to the
> > minor
> > > that we decide on. On surface value this means that we should pick the
> > > lowest Scala 3 minor version that we can support however there is the
> > fact
> > > that Scala 3.3 is going to come out soon which will be an LTS release.
> > The
> > > LTS release means that if any bugs are found after Scala 3.3 for a period
> > > of 2 years, they will be backported to Scala 3.3. The big advantage this
> > > brings us, is that it allows us to freely bump Scala 3.3 without breaking
> > > our users if any potential bugs are found in the future. If we decide to
> > > stick with Scala 3.2 or 3.1 and some bug is found in Scala 3 later on
> > that
> > > affects us, we will have to update to a version of Scala 3 that will
> > break
> > > binary compatibility. This facet is of even more importance when
> > > considering our 1.0.x release branches, which are designed to never break
> > > binary/backwards compatibility, i.e. if we do 1.0.x releases with Scala
> > > 3.1/3.2 and some critical bug/CVE comes out later we could potentially be
> > > forced to update the minor version which would break this
> > binary/backwards
> > > compatibility, this wouldn't be the case with Scala 3.3 (for a certain
> > > period of time).
> > >
> > > Of course the counter argument to using Scala 3.3 is that it would force
> > > all potential Pekko users (and the transitive set of Scala 3 libraries
> > for
> > > that Pekko user) to also use/support Scala 3.3. Unfortunately its not
> > > possible to get download stats from Sonatype for artifacts you don't
> > > maintain, but I wouldn't say its a controversial statement that the
> > amount
> > > of people that use Akka long with Scala 3 would be a tiny minority (this
> > is
> > > also regarding other factors, i.e. the typical demographic of Akka
> > users).
> > > Ontop of this we need to take into account the delay of current Akka
> > users
> > > migrating to Pekko, in other words by the time people migrate to using
> > > Pekko the fact that its using Scala 3.3 LTS would likely be a non concern
> > > at that point in time.
> > >
> > > And finally another thing to note is that even in the worst case
> > scenario,
> > > nothing is stopping users from using Scala 2 artifacts from within Scala
> > 3
> > > (this is perfectly supported and has been for a while). Afaik the current
> > > Scala 3 version of Akka/Pekko is not using any unique/bespoke features of
> > > Scala 3, if true this would mean from a Scala 3 user perspective there
> > > really isn't going to be
> > > a difference in using a Scala 2 artifact vs Scala 3 artifact.
> > >
> > > For these reasons my recommendation would be, assuming that the full
> > > release of Scala 3.3 LTS is ready by the time we decide to make a release
> > > that we should try and target that. For details on the current release
> > > schedule for Scala 3.3 LTS you can read
> > > https://contributors.scala-lang.org/t/3-3-0-release-thread/6079/3.
> > >
> > > --
> > >
> > > Matthew de Detrich
> > >
> > > *Aiven Deutschland GmbH*
> > >
> > > Immanuelkirchstraße 26, 10405 Berlin
> > >
> > > Amtsgericht Charlottenburg, HRB 209739 B
> > >
> > > Geschäftsführer: Oskari Saarenmaa & Hannu Valtonen
> > >
> > > *m:* +491603708037
> > >
> > > *w:* aiven.io *e:* matthew.dedetr...@aiven.io
> > >
> >
>
>
> --
>
> Matthew de Detrich
>
> *Aiven Deutschland GmbH*
>
> Immanuelkirchstraße 26, 10405 Berlin
>
> Amtsgericht Charlottenburg, HRB 209739 B
>
> Geschäftsführer: Oskari Saarenmaa & Hannu Valtonen
>
> *m:* +491603708037
>
> *w:* aiven.io *e:* matthew.dedetr...@aiven.io

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pekko.apache.org
For additional commands, e-mail: dev-h...@pekko.apache.org

Reply via email to