Minutes of the 19th meeting of the Scala Center, Q4 2020
Minutes are archived on the Scala Center website.
No agenda was distributed in advance, but the usual meeting structure was followed.
Scala Center activities for the past quarter focused on Scala 3, Scala 3 tooling (including sbt, Scalameta, Metals, Mill, and Ammonite), Scala Native, Scala.js, MOOCs, and Google Summer of Code.
Staffing: interviews are in process for the open communications manager position; otherwise stable.
More details on all this are in Darja’s report on the Center’s overall progress and Seb’s report on technical activities.
There were no new proposals this quarter.
Date, Time and Location
The meeting took place virtually on Thursday, February 4, 2021 at 4:00pm (UTC).
Minutes were taken by Seth Tisue (secretary).
- Adriaan Moors (chairperson)
- also board member, representing Lightbend
- Darja Jovanovic (executive director), EPFL
- Sébastien Doeraene (technical director), EPFL
- Martin Odersky (technical advisor), EPFL
- Seth Tisue (secretary), Lightbend
- Chris Kipp, Lunatech
- Rebecca Marks, 47 Degrees
- Rob Norris, community/Typelevel
- Krzysztof Romanowski, VirtusLab
- Daniela Sfregola, Morgan Stanley
- Julien Tournay, Spotify
- Bill Venners, community/Artima
- Eugene Yokota, Twitter
- Graham Griffiths, Goldman Sachs
Eugene Yokota, well known in the Scala community as the lead developer of sbt, is the new representative from Twitter.
Darja and Seb summarized Scala Center activities since the last meeting.
Darja’s report also looked back on the entirety of 2020 and forward to the next five years. She characterized 2016-2020 as the Center’s “startup” phase, now transitioning to a stable, proven era.
Their remarks were largely based on their reports:
The following notes do not repeat the content of the reports, but only supplement them.
Rob said that Scala 3 reaching developer preview status and Scala Native 0.4 landing at the same time has been burdensome for library maintainers and asked if major releases that impact the ecosystem could be staggered. Seb said that hadn’t been considered, but they’ll keep it in mind in the future.
Rob also asked about the Scala 3 migration tool: how is it being tested, is it being tried on community build projects? Seb says so far testing has been only on small projects, but in the next phase the tool will be tested on larger codebases and also made public for community-based testing.
Seth asked if the Scala 3 migration tool targets cross-building, full upgrades, or both. Seb: “Both.”
Rebecca asked: “Is it designed for library maintainers or application developers? And will earlier build tool versions be supported?” Seb: “both” to the first question, noting that both cross-compiling users (more typical for library maintainers) and full upgrades (more typical for applications) will be supported. Re: build tools, Seb said sbt 1.2 was as early as they had imagined targeting, but perhaps that could change “if there is demand”, and depending on an assessment of the technical difficulties. For other build tools, Seb suggested the Center could “provide a build tool agnostic entry points” into the algorithmic aspect of the migration tool. Some more user-facing aspects of the migration tool are “more tightly integrated” with sbt.
Eugene asked about recent changes in Scala 3 syntax. Feedback has mostly been via Discourse threads; should the SIP committee have been involved? What is the process? And he asked specifically about indentation: 2, 3, or 4 spaces?
Martin responded re: indentation: “We will never prescribe indentation” to that level of specificity; “it will have to come from the community. My best guess is that the community will stick with 2 spaces.” Eugene responded that although the language will not dictate, the community still takes its lead from educational materials and from tooling (e.g. Scalafmt), making it a Center concern even if it isn’t a language or a SIP concern. “I am asking the Center to consider” making recommendations, which Eugene expects Twitter (for example) would adopt as-is. Martin: “The problem is migration”; most existing code uses 2-space indents. Existing users will not want to change that codebase-wide. “The typical mode that we see to switch to Scala 3 syntax is gradually. You leave the code as-is, to not destroy the version control history, and new code that you touch will progressively use more and more new syntax.” Rather than discuss further, Darja stepped in and summarized: “We need more discussion on this and the Scala Center should drive that discussion.”
Re: the SIP process, Darja said it needs changes, for multiple reasons, including due to the pandemic (which has made assembling the committee, whether in personal or virtually, more difficult). Re: indentation specifically, the Center will reach out to SIP committee members to participate.
Martin added that “we did follow process” (committee discussions and public discussion threads) for all Scala 3 features, but indentation was an outlier in this regard, “it got dropped” and that “caused a storm” since some felt they should have been consulted earlier. The resulting discussion was extensive and alternatives were seriously engaged with and considered by Martin; “there were times when it looked there would be quite a drastic change”, though it didn’t go that way in the end. A final round of syntax changes involved reducing the number of uses of underscore in the language, but these were “quick cuts” that we are “done with now”. Martin thinks any controversy there was about timing rather than about whether “syntax cleanups” were desirable.
This was presented by Darja. Her report includes more detail, but in short: Q3 and Q4 MOOC revenue numbers are still not in. A new course is almost ready; that plus upgrading existing courses to Scala 3 will hopefully keep MOOC revenue flowing. As stated in last quarter’s minutes, new advisory board members will be needed to maintain current staffing levels.
Bill said everyone wants to know, “When is Scala 3 going to be released?”, what’s the latest update on that? He also said there was “nervousness” in the community about “last minute changes” and “churn”.
Seb said the next Scala 3 release is coming in “two weeks or so” but it remains under debate whether it will be labeled M4 or RC1. “From RC1 onwards, assuming no fatal bug reports come in, each candidate” could become 3.0. “Who knows how many RCs we’ll have,” but they will be “only critical bug report driven”, without other sorts of changes.
Rob: “it would be appreciated” if “you could bring yourself” to call it RC1 to tell the community that “things are locked down”.
Rob also summarized Typelevel’s recent experience with Scala 3. “We’ve been porting everything to Scala 3, since the M2 release, we’ve been hitting it really hard. It’s been going very well and the support we’re getting is good. The documentation is getting better and better. We’re eager to get to the end, but [Scala 3] looks really good to us”.
Eugene explained to the board that “just in the last 24 hours”, JFrog announced they are shutting down Bintray and JCenter, with only a very short sunset period. (Write access ends March 1st, read access ends May 1st.) This potentially impacts every sbt user, since some parts of sbt itself and much of the sbt plugin ecosystem are hosted on Bintray.
The main goal is to prevent existing builds from breaking, so new hosting of all existing artifacts is needed. A possible second goal would be to find a new way to continue providing sbt plugin publishing (of new versions) to plugin authors.
Some discussion of technical specifics followed. In the end, Darja promised to set up meetings of a “task force” including Eugene, Rob, Krzysztof, Seb, Adriaan, and others, to figure out what to do.
See also the discussion on issue 6294 in the sbt repo.
Adriaan observed that no proposals came in this quarter, so he encouraged the board to consider submitting something next time.
It was left open whether the next meeting will be in March or April.