I don't have a strong opinion on Kotlin; I haven't used it to any real
degree. I do know it interoperates with the Java API and compiles down
to the JVM. So in terms of the openness of the platform, it's not any
more "open" than Oracle's OpenJDK. It does compile down to native
code, but then we'd need to replace (or convert and maintain) all our
dependent libraries.

So if Kotlin helps with maintainability, I say we go for it. I don't
know that we're winning any additional openness we don't already have,
though.

On Tue, Jun 22, 2021 at 4:44 PM Taylor Frey <[email protected]> wrote:
>
> I too +1
>
> My experience porting a Java project to Kotlin was specific to Android in
> the past (re: years ago). I recall my general impression of Kotlin to have
> some extraneous and unnecessary syntactic sugar (What's up with the
> for/loop keywords?), but it was an overall solid language. I appreciate the
> terseness and brevity of things like variable declarations w/ implicit data
> types and `data classes`, which addresses a long standing complaint about
> Java's overly verbose syntax. Language aside, the automated porting back
> then wasn't exactly perfect, but a few things have changed since then; 1)
> the language specification has solidified over the years, 2) tooling has
> matured, and 3) is manageable to manually intervene if necessary.
>
> > As a side note, because of Oracle's aggressive legal practices, and
> because
>     they really do want you to think that they own Java (see: Google LLC v.
>     Oracle America, Inc.), using Java in Apache Traffic Control is not
> really
>     in the spirit of free software. Kotlin is an Apache 2.0-licensed
> project,
>     so switching to Kotlin would be a true FOSS win for the ATC community.
>
> I think the true benefit is moving away from the Java API, which is under
> such contention, without changing underlying implementation (such as a
> transition to another, non-JVM, language might incur).
>
> On Tue, Jun 22, 2021 at 11:42 AM Chatterjee, Srijeet
> <[email protected]> wrote:
>
> > +1
> > Sounds like a fun project!
> >
> > --Srijeet
> >
> > On 6/21/21, 8:43 PM, "Zach Hoffman" <[email protected]> wrote:
> >
> >     Hi Traffic Control!
> >
> >     As you all may know, the current implementation of Traffic Router runs
> > on
> >     Java 8. While coding directly in Java is still done, there are some
> > reasons
> >     to be critical of Java.
> >
> >     Java often has very verbose syntax when trying to accomplish simple
> > things.
> >     This has made the Traffic Router codebase grow larger over time,
> > leading to
> >     maintainability issues. Also, Java suffers from lack of compile-time
> > safety
> >     in some ways that more modern languages do not. For these reasons, and
> >     because Java is a very old language, some developers who may otherwise
> > be
> >     interested in contributing to Apache Traffic Control may be
> > disinterested
> >     contributing to Traffic Router in particular, simply because they want
> > to
> >     work with more modern languages that do not have the issues that Java
> > does.
> >
> >     Kotlin, a JVM language devised by Jetbrains with the goal of tackling
> > these
> >     problems, has exploded in popularity in recent years, and Kotlin is
> >     becoming a standard way to use the JVM, with Google choosing it as the
> >     preferred language to for developing Android apps. More importantly,
> > as the
> >     Intellij IDEA Kotlin plugin lets you convert Java sources to Kotlin
> > (either
> >     at the file level or an entire project, or anywhere in between),
> > Kotlin has
> >     become a low-effort way to decrease tech debt across large Java
> > projects.
> >
> >     Back to Traffic Router: In order to gauge how we would benefit from
> >     converting Traffic Router to Kotlin (it really is a matter of
> > *converting*,
> >     not rewriting), I converted all of the tests in the Traffic Router
> > "Core"
> >     module to Kotlin. You can see the result here (as you can see from
> > GitHub
> >     Actions, the TR tests all pass): <
> >
> > https://urldefense.com/v3/__https://github.com/zrhoffman/trafficcontrol/commits/tr-kotlin__;!!CQl3mcHX2A!UCz457i9stX5A-AP8jvvWo21Rqa43JRsC1jQt_fo5nb07raZxByUR9gAGVPZTI4tGhalAel2$
> > >
> >
> >     Some observations:
> >     - Without any putting any effort into optimizing the existing code,
> > lines
> >     of code shrunk from 10572 in Java to 10217 in Kotlin. See: <
> >
> > https://urldefense.com/v3/__https://github.com/zrhoffman/trafficcontrol/commit/5add06bccc__;!!CQl3mcHX2A!UCz457i9stX5A-AP8jvvWo21Rqa43JRsC1jQt_fo5nb07raZxByUR9gAGVPZTI4tGqGQTevX$
> > >
> >     - Because it now includes the Kotlin standard library, the Traffic
> > Router
> >     RPM size increases from 48MB to 58MB.
> >     - The converted sources benefit from Kotlin's null safety and type
> > safety
> >     (avoiding wildcard types). See <
> >
> > https://urldefense.com/v3/__https://github.com/zrhoffman/trafficcontrol/commit/0c2eec39d9__;!!CQl3mcHX2A!UCz457i9stX5A-AP8jvvWo21Rqa43JRsC1jQt_fo5nb07raZxByUR9gAGVPZTI4tGjjMNj-F$
> > > (Kotlin
> >     error resolution) and <
> >
> > https://urldefense.com/v3/__https://github.com/zrhoffman/trafficcontrol/commit/d8a0fd3bca__;!!CQl3mcHX2A!UCz457i9stX5A-AP8jvvWo21Rqa43JRsC1jQt_fo5nb07raZxByUR9gAGVPZTI4tGoysImMb$
> > > (Kotlin
> >     warning resolution) for the changes involved.
> >
> >     As a side note, because of Oracle's aggressive legal practices, and
> > because
> >     they really do want you to think that they own Java (see: Google LLC v.
> >     Oracle America, Inc.), using Java in Apache Traffic Control is not
> > really
> >     in the spirit of free software. Kotlin is an Apache 2.0-licensed
> > project,
> >     so switching to Kotlin would be a true FOSS win for the ATC community.
> >
> >     So, converting the rest of Traffic Router would be relatively fast and
> >     easy, would result in *no* functionality gained or lost, would leave TR
> >     usage totally unchanged, would make development more enjoyable for
> > current
> >     TR devs, and would maybe catch the interest of additional devs who
> >     otherwise may not be interested in Traffic Router.
> >
> >     How does this sound?
> >
> >     -Zach
> >
> >

Reply via email to