Skip to content

Commit 92fd4bf

Browse files
authored
Merge pull request #81 from SethTisue/december-2018-minutes
December 2018 advisory board minutes
2 parents a07d753 + d3ff77d commit 92fd4bf

File tree

1 file changed

+392
-0
lines changed

1 file changed

+392
-0
lines changed
Lines changed: 392 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,392 @@
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

Comments
 (0)