@@ -12,7 +12,8 @@ Scala Center website.
12
12
The following agenda was distributed to attendees:
13
13
[ agenda] ( https://github.com/scalacenter/advisoryboard/blob/master/agendas/011-2018-q4.md ) .
14
14
15
- Spotify has joined the advisory board.
15
+ Spotify has joined the advisory board. Julien Tournay is
16
+ their representative.
16
17
17
18
After this meeting, Lars Hupel is stepping down as community
18
19
representative. A replacement has yet to be nominated.
@@ -26,7 +27,8 @@ Scala Days 2019, and ScalaIO.
26
27
Full details on these activities are in
27
28
[ Sébastien's report] ( https://docs.google.com/document/d/1MwzPQtYIaJ4_5z7-StJI-gKiY-oV_6Or7PEvnJBR92k/edit?usp=sharing ) .
28
29
29
- Other topics discussed at the meeting included TODO
30
+ Other topics discussed at the meeting included the Center's
31
+ sponsorship terms.
30
32
31
33
Two new proposals were made:
32
34
@@ -75,6 +77,15 @@ Officers:
75
77
76
78
As chairperson, Jon Pretty conducted the meeting.
77
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
+
78
89
### Activities
79
90
80
91
As the Center's Executive Director, Sébastien Doeraene summarized
@@ -86,31 +97,216 @@ on the Center's recent activities.
86
97
87
98
The following notes are a supplement to Sébastien's report:
88
99
89
- TODO
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.)
90
153
91
154
### Financial report
92
155
93
- TODO
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.
94
179
95
180
### Proposals
96
181
182
+ Both proposals were presented discussed before either proposal was voted on.
183
+
97
184
#### SCP-019: Focusing on backwards compatibility for Scala 2.14 and Scala 3.0
98
185
99
186
Proposed by Stu Hood on behalf of Twitter.
100
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
+
101
193
See the [ proposal text] ( https://github.com/scalacenter/advisoryboard/blob/master/proposals/019-scala-214-30-back-compat.md )
102
194
for details.
103
195
104
196
There was some discussion on the [ pull request for the
105
197
proposal] ( https://github.com/scalacenter/advisoryboard/pull/44 )
106
- between Martin and Stu which resulted in some
107
- [ revisions to the proposal] ( https://github.com/scalacenter/advisoryboard/pull/47 )
108
- shortly before the meeting; these changes are included in
109
- the proposal text linked above.
110
198
111
- ** Voting** : three in favor, three opposed, three abstentions,
112
- one member not present. The Executive Director cast the deciding
113
- vote in opposition. The proposal is not accepted.
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
+ Some complex discussion about macros and the overall compatibility
286
+ followed, difficult to summarize. It's clear that library authors and
287
+ users will need guidance to understand what will or won't work in what
288
+ scenarios, and when it matters how macros are involved.
289
+
290
+ Seb explained some the motivation for valuing forward compatibility,
291
+ as he sees it, though "not taking sides". He explained, "If we only
292
+ support 3 depends on 2, but not the other way around, then library
293
+ developers are stuck on 2 for the next 5 years, since if their
294
+ codebase must cross-compile, they cannot benefit from Scala 3's
295
+ features. That means that in practice, the visible Scala ecosystem
296
+ would remain on Scala 2 for a long time, and that could send a
297
+ worrying message to the public." Martin seconded this. He said most
298
+ of the users he talks to who are worried about Scala 3 are worried
299
+ about slow adoption, but then the forward-compatibility part of
300
+ SCP-018 strongly reassures them.
301
+
302
+ Jon noted that even if SCP-019 isn't accepted, that doesn't close the
303
+ door on other future proposals aimed at refining SCP-018, as the
304
+ overall Scala 3 situation develops further.
305
+
306
+ ** Voting** : three in favor, four opposed (with Seb casting the
307
+ tie-breaking vote, and promising to "take the proposal into account"
308
+ regardless), three abstentions, one member not present. The proposal
309
+ is not accepted.
114
310
115
311
#### SCP-020: SBT transitive dependency conflicts management improvements
116
312
@@ -119,13 +315,74 @@ Proposed by Julien Tournay on behalf of Spotify.
119
315
See the [ proposal text] ( https://github.com/scalacenter/advisoryboard/blob/master/proposals/020-sbt-transitive-dependencies-conflicts.md )
120
316
for details.
121
317
318
+ In presenting the proposal, Julien said that library version conflicts
319
+ have been a recurring problem in deploying code at Spotify. Sometimes
320
+ "we only realize there is a conflict when we run our data pipelines,"
321
+ sometimes not until after the job has been running for hours.
322
+
323
+ Lars asked to what extent the proposed work on sbt should overlap or
324
+ interact with the work the Center is now doing on Coursier.
325
+
326
+ Julien said that Coursier isn't the default in sbt, so for now, "most
327
+ builds" would have the same issue even if it were fixed in Coursier.
328
+ But if Coursier fixes it and also becomes the de facto standard for Scala
329
+ builds, then yes, "done."
330
+
331
+ Seb observed that sbt does already print eviction warnings. Lars
332
+ asked how a build tool can do better than that, given the lack of an
333
+ accepted standard way for libraries to signal binary
334
+ compatibility. Not all libraries use semantic versioning, or do it the
335
+ same way. "The reason I sound pessimistic," said Lars, "is that I'm
336
+ concerned about false positives," a tool reporting conflicts where no
337
+ incompatibility exists. But the proposals seems to give "leeway" to
338
+ the Scala Center to do whatever's feasible and helpful.
339
+
340
+ Seb suggested perhaps adding a "2b", between levels 2 and 3 in the
341
+ proposal, which would involve "a more elaborate API for conflict
342
+ resolution", since ` ConflictManager ` , even if it worked perfectly as
343
+ designed, arguably isn't a flexible enough mechanism, for the same
344
+ reasons that Lars brought up: "you want to resolve conflicts in a
345
+ different way for different libraries."
346
+
347
+ Mark spoke up in support of the proposal, because the problem is real,
348
+ and the proposal gives the Scala Center flexibility to choose how to
349
+ address it. "At least level 1 would totally be helpful." Perhaps
350
+ plugins such as sbt-dependency-graph could become part of sbt.
351
+
352
+ Jonathan and James both expressed some doubt about the usefulness, in
353
+ their shops at least, of upping the overall level of "intricacy"
354
+ around dependencies, especially in polyglot environments, by
355
+ introducing yet more conflict resolution rules and mechanisms.
356
+
122
357
** Voting** : seven in favor, one opposed, one abstention,
123
358
one member not present. The proposal is accepted.
124
359
360
+ ### Community feedback
361
+
362
+ Lars Hupel announced that he is stepping down as community
363
+ representative; Jon thanked him for his more than two years of
364
+ service. A replacement has yet to be nominated. (Last time around,
365
+ the spot was offered to Typelevel to fill; Jon anticipated that
366
+ happening again, but it's up to the board.)
367
+
368
+ Mark said that "he's glad to see a focus on tooling, since that is still
369
+ the thing that comes up most often" in his conversations with community
370
+ members.
371
+
125
372
### Other business
126
373
127
- TODO
374
+ At the previous meeting, there was some discussion about perhaps
375
+ changing the Center's sponsorship terms. Jon asked Seb if this has
376
+ been considered further yet, and also asked if it would be good to
377
+ create a concept of a "developer sponsor" who would pay a smaller fee
378
+ but make up for it by contributing development work directly. But the
379
+ board agreed there wasn't really time to discuss it. James asked if
380
+ the Center could make specific suggestions, to be voted on at the next
381
+ meeting. Seb agreed to raise the topic on the board's mailing list,
382
+ for discussion in advance of the next meeting.
128
383
129
384
## Conclusion
130
385
131
- TODO
386
+ Jon said that as usual, the next meeting will be in approximately
387
+ three months, perhaps early march. Then the meeting after that will
388
+ be held in Lausanne, in conjunction with Scala Days.
0 commit comments