|
| 1 | +--- |
| 2 | +layout: contact |
| 3 | +--- |
| 4 | + |
| 5 | +# Minutes of the 11th meeting of the Scala Center, Q4 2018 |
| 6 | + |
| 7 | +Minutes are [archived](https://scala.epfl.ch/records.html) on the |
| 8 | +Scala Center website. |
| 9 | + |
| 10 | +## Summary |
| 11 | + |
| 12 | +The following agenda was distributed to attendees: |
| 13 | +[agenda](https://github.com/scalacenter/advisoryboard/blob/master/agendas/011-2018-q4.md). |
| 14 | + |
| 15 | +Spotify has joined the advisory board. Julien Tournay is |
| 16 | +their representative. |
| 17 | + |
| 18 | +After this meeting, Lars Hupel is stepping down as community |
| 19 | +representative. A replacement has yet to be nominated. |
| 20 | + |
| 21 | +Scala Center activities for the past quarter focused on |
| 22 | +Coursier, Almond (formerly Jupyter-Scala), Bloop and BSP, |
| 23 | +Zinc, build pipelining, 2.13 collections, Dotty, Metals, |
| 24 | +Scalameta, Scalafix, Scala.js, SIP meetings, MOOCs, |
| 25 | +Scala Days 2019, and ScalaIO. |
| 26 | + |
| 27 | +Full details on these activities are in |
| 28 | +[Sébastien's report](https://docs.google.com/document/d/1MwzPQtYIaJ4_5z7-StJI-gKiY-oV_6Or7PEvnJBR92k/edit?usp=sharing). |
| 29 | + |
| 30 | +Other topics discussed at the meeting included the Center's |
| 31 | +sponsorship terms. |
| 32 | + |
| 33 | +Two new proposals were made: |
| 34 | + |
| 35 | +* [SCP-019](https://github.com/scalacenter/advisoryboard/blob/master/proposals/019-scala-214-30-back-compat.md): Focusing on backwards compatibility for Scala 2.14 and Scala 3.0 (Twitter) |
| 36 | + * voted on, not accepted |
| 37 | +* [SCP-020](https://github.com/scalacenter/advisoryboard/blob/master/proposals/020-sbt-transitive-dependencies-conflicts.md): SBT transitive dependency conflicts management improvements (Spotify) |
| 38 | + * voted on and accepted |
| 39 | + |
| 40 | +SCP-20 was exceptionally accepted as a late submission |
| 41 | +from Spotify, as they were only confirmed as board members |
| 42 | +between the submission deadline and the meeting. |
| 43 | + |
| 44 | +## Date, Time and Location |
| 45 | + |
| 46 | +The meeting took place virtually, via Google Meet, on Wednesday, |
| 47 | +December 5, 2018 at 3:30pm (GMT). |
| 48 | + |
| 49 | +Minutes were taken by Seth Tisue (secretary). |
| 50 | + |
| 51 | +## Attendees |
| 52 | + |
| 53 | +Board members present: |
| 54 | + |
| 55 | +- James Belsey, Morgan Stanley |
| 56 | +- Eugene Burmako and Stu Hood, Twitter |
| 57 | +- Lars Hupel, community/Typelevel |
| 58 | +- Olga Makhasoeva, 47 Degrees |
| 59 | +- Adriaan Moors, Lightbend |
| 60 | +- Jonathan Perry, Goldman Sachs |
| 61 | +- Frederick Reiss, IBM |
| 62 | +- Julien Tournay, Spotify |
| 63 | +- Mark Waks (a.k.a. Justin du Coeur), community/Artima, on behalf of Bill Venners |
| 64 | + |
| 65 | +Apologies: |
| 66 | + |
| 67 | +- Thomas Gawlitza, SAP |
| 68 | + |
| 69 | +Officers: |
| 70 | + |
| 71 | +- Sébastien Doeraene (director), EPFL |
| 72 | +- Jon Pretty (chairperson), Propensive |
| 73 | +- Martin Odersky (technical advisor), EPFL |
| 74 | +- Seth Tisue (secretary), Lightbend |
| 75 | + |
| 76 | +## Proceedings |
| 77 | + |
| 78 | +As chairperson, Jon Pretty conducted the meeting. |
| 79 | + |
| 80 | +He welcomed Spotify as the newest advisory board member, and Julien |
| 81 | +Tournay as their representative. Julien works for Spotify in Sweden. |
| 82 | + |
| 83 | +Jon also welcomed Olga Makhasoeva as 47 Degrees' new representative |
| 84 | +on the board. |
| 85 | + |
| 86 | +Filling in for Bill Venners at this meeting was Mark Waks, Bill's |
| 87 | +colleague at Artima. |
| 88 | + |
| 89 | +### Activities |
| 90 | + |
| 91 | +As the Center's Executive Director, Sébastien Doeraene summarized |
| 92 | +Scala Center activities since the last meeting. |
| 93 | + |
| 94 | +Most of Sébastien's remarks were based on his |
| 95 | +[detailed report](https://docs.google.com/document/d/1MwzPQtYIaJ4_5z7-StJI-gKiY-oV_6Or7PEvnJBR92k/edit?usp=sharing) |
| 96 | +on the Center's recent activities. |
| 97 | + |
| 98 | +The following notes are a supplement to Sébastien's report: |
| 99 | + |
| 100 | +Coursier isn't itself new, but it is a new project for the Scala |
| 101 | +Center. Alexandre Archambault, who is now a full-time engineer at the |
| 102 | +Scala Center, is Coursier's original open-source developer. Seb |
| 103 | +highlighted Alex's plan to add publishing support to Coursier and |
| 104 | +eventually integrate Coursier into sbt more directly as a faster |
| 105 | +replacement for Ivy. "It's a big enabler" of productivity, "basic |
| 106 | +speeds of day-to-day tools" that Scala developers use. A new |
| 107 | +documentation site for Coursier will be released "soon". |
| 108 | + |
| 109 | +Martin Duhemm has left the Scala Center. The Dotty IDE work described |
| 110 | +in Seb's report was Martin's last project. |
| 111 | + |
| 112 | +Seb's report covers two different IDE projects, namely Dotty IDE and |
| 113 | +Metals. Unlike Dotty IDE, Metals aims to support Scala 2. The two |
| 114 | +projects' features and UI "will be reconciled in the coming months," |
| 115 | +says Seb. Metals "doesn't have a lot of features" yet but "the |
| 116 | +features it has are really polished" and "it's really simple to |
| 117 | +install and to import projects." The goal is to add features |
| 118 | +gradually, "to do one thing at a time but do it really well." |
| 119 | + |
| 120 | +Jon asked what quality level that Metals has attained so far. Seb |
| 121 | +said that the handling of compiler diagnostics is already "perfect". |
| 122 | +The go-to-definition feature has good test coverage, but users may |
| 123 | +still uncover unknown bugs. Importing builds, via Bloop, may fail on |
| 124 | +especially complex builds. Julien offered that Metals "worked |
| 125 | +perfectly" so far on a 20-module project he's been trying it with, |
| 126 | +though it "takes a while" to initialize. |
| 127 | + |
| 128 | +Jon asked about Scala Days sponsorships. Seb said that interested |
| 129 | +sponsors should get in touch with Darja at the Scala Center. |
| 130 | + |
| 131 | +Eugene asked what's next for build pipelining. Seb said that Jorge |
| 132 | +will continue to work on it, next steps in that work include support |
| 133 | +for incremental compilation and mixed Scala/Java codebases. "Once |
| 134 | +it's usable for incremental compilation we'll make a bigger fuss about |
| 135 | +it and advertise it much more widely," said Seb. |
| 136 | + |
| 137 | +Eugene also asked about the status of Dotty IDE. Seb returned to the |
| 138 | +question of aligning the work on Dotty IDE with the work on Metals. |
| 139 | +In many ways they are similar (for example, they are both LSP based |
| 140 | +and both integrate with VS Code and other editors). But right now the |
| 141 | +user must install "one or the other", installing both tends to "not |
| 142 | +quite work." These projects need to become "one concerted effort" |
| 143 | +with a single unified download, which would then operate in either |
| 144 | +Scala 2 or Dotty mode depending on what kind of project you have. |
| 145 | + |
| 146 | +Stu asked about the status of |
| 147 | +[SCP-018](https://github.com/scalacenter/advisoryboard/blob/master/proposals/018-converging-214-30.md) |
| 148 | +("Converging the Intermediate Representation of Scala 2.14 and Scala |
| 149 | +3.0"), "was anyone assigned to work on that yet?" Seb said the Center |
| 150 | +is looking for "a new person we could assign this project to." (If a |
| 151 | +new person can't start soon, someone else might be assigned in the |
| 152 | +meantime.) |
| 153 | + |
| 154 | +### Financial report |
| 155 | + |
| 156 | +"We got the final numbers for the MOOC income for Q1 through Q3 of |
| 157 | +2018," said Seb. This totaled just under 300K CHF, of which the |
| 158 | +Center's share is 215K CHF. (The CHF/USD exchange rate is currently |
| 159 | +1-to-1.) This is similar to past proceeds, so that part of the budget |
| 160 | +is "stable". |
| 161 | + |
| 162 | +With Spotify joining the board, there are now eight member companies. |
| 163 | +There may be enough budget to open an additional position, besides the |
| 164 | +one vacated by Martin Duhemm, but it's not certain yet. |
| 165 | + |
| 166 | +Jon asked if there was any possibility of using extra money to |
| 167 | +increase salaries, to help ensure retention of engineers. Seb said |
| 168 | +that EPFL's rules around compensation are so strict that there's |
| 169 | +really no leeway. |
| 170 | + |
| 171 | +Jon also asked if the Scala Days 2019 (in Lausanne) has any financial |
| 172 | +risks or financial opportunities for the Center. Seb said that "the |
| 173 | +finances of Scala Days are a completely separate budget". Because |
| 174 | +there is only one Scala Days in 2019, a larger hall was obtained, on |
| 175 | +the assumption that attendance will be higher than two separate |
| 176 | +conferences on either side of the Atlantic. The break-even point is |
| 177 | +900 attendees, which is not very many more than attended Scala Days |
| 178 | +Berlin in 2018. |
| 179 | + |
| 180 | +### Proposals |
| 181 | + |
| 182 | +Both proposals were presented discussed before either proposal was voted on. |
| 183 | + |
| 184 | +#### SCP-019: Focusing on backwards compatibility for Scala 2.14 and Scala 3.0 |
| 185 | + |
| 186 | +Proposed by Stu Hood on behalf of Twitter. |
| 187 | + |
| 188 | +The theme of the proposal is the relative priority, during the transition |
| 189 | +of Scala 3, of backward compatibility (Scala 3's ability to consume |
| 190 | +libraries built using Scala 2) versus forward compatibility (Scala 2's |
| 191 | +ability to consume libraries built using Scala 3). |
| 192 | + |
| 193 | +See the [proposal text](https://github.com/scalacenter/advisoryboard/blob/master/proposals/019-scala-214-30-back-compat.md) |
| 194 | +for details. |
| 195 | + |
| 196 | +There was some discussion on the [pull request for the |
| 197 | +proposal](https://github.com/scalacenter/advisoryboard/pull/44) |
| 198 | + |
| 199 | +between Martin and Stu. This resulted in some [revisions to the |
| 200 | +proposal](https://github.com/scalacenter/advisoryboard/pull/47) |
| 201 | +shortly before the meeting. These changes are included in the |
| 202 | +proposal text linked above, and the updated version is also what the |
| 203 | +board finally voted on. |
| 204 | + |
| 205 | +In presenting the proposal, Stu noted that an alternative to forward |
| 206 | +compatibility already exists, namely cross-compilation. "Libraries |
| 207 | +can do what they already do," namely cross-compile and cross-publish, |
| 208 | +in this case against both Scala 2 and 3, as long as they only use the |
| 209 | +common subset of the language (which encompasses nearly everything in |
| 210 | +Scala 2). |
| 211 | + |
| 212 | +"This is not an anti-TASTy proposal", Stu said. "This is a proposal |
| 213 | +to use whatever means necessary to allow backwards compatibility." If |
| 214 | +Scala 3's support for Scala 2's pickle format is good enough to get |
| 215 | +good backward compatibility, then so be it. But if Scala 2 emitting |
| 216 | +TASTy turns out to be a better way to achieve backward compat, then so |
| 217 | +be it also. (Whereas Scala 2.14's proposed ability to _consume_ TASTy |
| 218 | +is less relevant to backwards compat.) |
| 219 | + |
| 220 | +Martin commented on the proposal. He described Dotty's already |
| 221 | +existing Scala 2 pickle support as "a solved problem." "Every Dotty |
| 222 | +program ever written uses Scala 2 pickle support" and it's never been |
| 223 | +a problem, so Martin hopes that the backward compatibility problem is |
| 224 | +actually already solved, but does that still need to be validated |
| 225 | +further? To more fully validate it, we need to test it with "a lot of |
| 226 | +code". There are two ways to get that much code, one is to wait for |
| 227 | +the community to catch up and write a lot of Scala 3 code, but that |
| 228 | +takes a long time. Or you port a lot of existing Scala 2 code, but |
| 229 | +that takes effort, especially for porting macros, but also (for |
| 230 | +example) if the code hits differences in type inference. The Scala |
| 231 | +Center can help Scala 2 projects port their code when the time comes, |
| 232 | +but in the meantime there isn't anything to do to improve binary |
| 233 | +compatibility, so Martin sees no need to do deprioritize the |
| 234 | +forward-compatibility parts of SCP-018. |
| 235 | + |
| 236 | +Jon asked Adriaan what the impact on Lightbend's 2.14 efforts would |
| 237 | +be. Adriaan addressed that and also commented more generally on the |
| 238 | +new proposal. "The key point is that forward compatibility is also |
| 239 | +important" for Scala 3 "because in order to identify potential |
| 240 | +challenges with Scala 3, we need to be able to link both ways. |
| 241 | +Applications might not upgrade to Scala 3 right away, but libraries |
| 242 | +may be eager to upgrade." |
| 243 | + |
| 244 | +Adriaan also said that SCP-018 was intentionally "pretty vague" about |
| 245 | +the exact nature of the best path forward. "It's the task of the Scala |
| 246 | +Center" to figure out exactly what to do, depending on what engineers |
| 247 | +are available, and any other factors that arise as the work progresses. |
| 248 | +Seb agreed that this new proposal (SCP-019) "is directing, more than |
| 249 | +usual, what the Center should do and how we should do it." |
| 250 | + |
| 251 | +Eugene asked what barriers exist, or are expected to exist, for |
| 252 | +cross-compiling libraries against Scala 2 and Scala 3. Understanding |
| 253 | +that better could help identify the best approach to compatibility. |
| 254 | +Stu added that the Dotty community build is currently "leaf nodes", |
| 255 | +that is, libraries with few or no dependencies. We won't know more |
| 256 | +about compatibility until it's expanded to cover inter-library |
| 257 | +dependencies better. And Jon observed that we need to test |
| 258 | +applications that depend on the libraries, too. |
| 259 | + |
| 260 | +Martin says the blocker, currently, for expanding the scope of the |
| 261 | +Dotty community build is macros. "Transitive dependencies using |
| 262 | +macros are absolutely everywhere as you go up the stack. That's |
| 263 | +why it's so difficult. Bottom dependencies need to be adapted to |
| 264 | +use new-style macros" before we can test downstream projects. |
| 265 | +So yes "there are porting problems", but "they are not related to |
| 266 | +binary compatibility. Macros are the problem." But if the Scala |
| 267 | +Center can identify key macro-based libraries and help port them, |
| 268 | +that will be a "big win". |
| 269 | + |
| 270 | +Mark added that ScalaTest is currently being ported to Dotty, so that |
| 271 | +will be a "big, chewy test" of a widely-used library that is |
| 272 | +macro-based. He also mentioned that we need to keep in mind that the |
| 273 | +world of Scala development at companies is very different than what we |
| 274 | +see in the open-source world. For example, relatively few companies |
| 275 | +are writing their own macros, even though open-source macro-based |
| 276 | +libraries are widely used everywhere. So we'll need to keep that in |
| 277 | +mind when gathering data on compatibility. |
| 278 | + |
| 279 | +Martin agrees with Stu that producing a "compatibility reference" is |
| 280 | +needed, so that the community has the information it needs to |
| 281 | +cross-compile and/or cross-consume between Scala 2 and 3, but he sees |
| 282 | +producing this as primarily LAMP's and Lightbend's job, rather than |
| 283 | +primarily the Scala Center's job. |
| 284 | + |
| 285 | +Seb explained some the motivation for valuing forward compatibility, |
| 286 | +as he sees it, though "not taking sides". He explained, "If we only |
| 287 | +support 3 depends on 2, but not the other way around, then library |
| 288 | +developers are stuck on 2 for the next 5 years, since if their |
| 289 | +codebase must cross-compile, they cannot benefit from Scala 3's |
| 290 | +features. That means that in practice, the visible Scala ecosystem |
| 291 | +would remain on Scala 2 for a long time, and that could send a |
| 292 | +worrying message to the public." Martin seconded this. He said most |
| 293 | +of the users he talks to who are worried about Scala 3 are worried |
| 294 | +about slow adoption, but then the forward-compatibility part of |
| 295 | +SCP-018 strongly reassures them. |
| 296 | + |
| 297 | +Some complex discussion about macros and the overall compatibility |
| 298 | +followed, difficult to summarize. The key point is that neither |
| 299 | +forward compatibility nor backwards compatibility provide macros |
| 300 | +that work across both Scala 2 and Scala 3. |
| 301 | + |
| 302 | +It's clear that library authors and users will need guidance to |
| 303 | +understand what will or won't work in what scenarios, and when it |
| 304 | +matters how macros are involved. |
| 305 | + |
| 306 | +Jon noted that even if SCP-019 isn't accepted, that doesn't close the |
| 307 | +door on other future proposals aimed at refining SCP-018, as the |
| 308 | +overall Scala 3 situation develops further. |
| 309 | + |
| 310 | +**Voting**: three in favor, four opposed (with Seb casting the |
| 311 | +tie-breaking vote, and promising to "take the proposal into account" |
| 312 | +regardless), three abstentions, one member not present. The proposal |
| 313 | +is not accepted. |
| 314 | + |
| 315 | +#### SCP-020: SBT transitive dependency conflicts management improvements |
| 316 | + |
| 317 | +Proposed by Julien Tournay on behalf of Spotify. |
| 318 | + |
| 319 | +See the [proposal text](https://github.com/scalacenter/advisoryboard/blob/master/proposals/020-sbt-transitive-dependencies-conflicts.md) |
| 320 | +for details. |
| 321 | + |
| 322 | +In presenting the proposal, Julien said that library version conflicts |
| 323 | +have been a recurring problem in deploying code at Spotify. Sometimes |
| 324 | +"we only realize there is a conflict when we run our data pipelines," |
| 325 | +sometimes not until after the job has been running for hours. |
| 326 | + |
| 327 | +Lars asked to what extent the proposed work on sbt should overlap or |
| 328 | +interact with the work the Center is now doing on Coursier. |
| 329 | + |
| 330 | +Julien said that Coursier isn't the default in sbt, so for now, "most |
| 331 | +builds" would have the same issue even if it were fixed in Coursier. |
| 332 | +But if Coursier fixes it and also becomes the de facto standard for Scala |
| 333 | +builds, then yes, "done." |
| 334 | + |
| 335 | +Seb observed that sbt does already print eviction warnings. Lars |
| 336 | +asked how a build tool can do better than that, given the lack of an |
| 337 | +accepted standard way for libraries to signal binary |
| 338 | +compatibility. Not all libraries use semantic versioning, or do it the |
| 339 | +same way. "The reason I sound pessimistic," said Lars, "is that I'm |
| 340 | +concerned about false positives," a tool reporting conflicts where no |
| 341 | +incompatibility exists. But the proposals seems to give "leeway" to |
| 342 | +the Scala Center to do whatever's feasible and helpful. |
| 343 | + |
| 344 | +Seb suggested perhaps adding a "2b", between levels 2 and 3 in the |
| 345 | +proposal, which would involve "a more elaborate API for conflict |
| 346 | +resolution", since `ConflictManager`, even if it worked perfectly as |
| 347 | +designed, arguably isn't a flexible enough mechanism, for the same |
| 348 | +reasons that Lars brought up: "you want to resolve conflicts in a |
| 349 | +different way for different libraries." |
| 350 | + |
| 351 | +Mark spoke up in support of the proposal, because the problem is real, |
| 352 | +and the proposal gives the Scala Center flexibility to choose how to |
| 353 | +address it. "At least level 1 would totally be helpful." Perhaps |
| 354 | +plugins such as sbt-dependency-graph could become part of sbt. |
| 355 | + |
| 356 | +Jonathan and James both expressed some doubt about the usefulness, in |
| 357 | +their shops at least, of upping the overall level of "intricacy" |
| 358 | +around dependencies, especially in polyglot environments, by |
| 359 | +introducing yet more conflict resolution rules and mechanisms. |
| 360 | + |
| 361 | +**Voting**: seven in favor, one opposed, one abstention, |
| 362 | +one member not present. The proposal is accepted. |
| 363 | + |
| 364 | +### Community feedback |
| 365 | + |
| 366 | +Lars Hupel announced that he is stepping down as community |
| 367 | +representative; Jon thanked him for his more than two years of |
| 368 | +service. A replacement has yet to be nominated. (Last time around, |
| 369 | +the spot was offered to Typelevel to fill; Jon anticipated that |
| 370 | +happening again, but it's up to the board.) |
| 371 | + |
| 372 | +Mark said that "he's glad to see a focus on tooling, since that is still |
| 373 | +the thing that comes up most often" in his conversations with community |
| 374 | +members. |
| 375 | + |
| 376 | +### Other business |
| 377 | + |
| 378 | +At the previous meeting, there was some discussion about perhaps |
| 379 | +changing the Center's sponsorship terms. Jon asked Seb if this has |
| 380 | +been considered further yet, and also asked if it would be good to |
| 381 | +create a concept of a "developer sponsor" who would pay a smaller fee |
| 382 | +but make up for it by contributing development work directly. But the |
| 383 | +board agreed there wasn't really time to discuss it. James asked if |
| 384 | +the Center could make specific suggestions, to be voted on at the next |
| 385 | +meeting. Seb agreed to raise the topic on the board's mailing list, |
| 386 | +for discussion in advance of the next meeting. |
| 387 | + |
| 388 | +## Conclusion |
| 389 | + |
| 390 | +Jon said that as usual, the next meeting will be in approximately |
| 391 | +three months, perhaps early march. Then the meeting after that will |
| 392 | +be held in Lausanne, in conjunction with Scala Days. |
0 commit comments