Skip to content

Commit 9dc8180

Browse files
committed
fill in
1 parent 650ceff commit 9dc8180

File tree

1 file changed

+270
-13
lines changed

1 file changed

+270
-13
lines changed

minutes/_posts/2018-12-05-december-5-2018.md

Lines changed: 270 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ Scala Center website.
1212
The following agenda was distributed to attendees:
1313
[agenda](https://github.com/scalacenter/advisoryboard/blob/master/agendas/011-2018-q4.md).
1414

15-
Spotify has joined the advisory board.
15+
Spotify has joined the advisory board. Julien Tournay is
16+
their representative.
1617

1718
After this meeting, Lars Hupel is stepping down as community
1819
representative. A replacement has yet to be nominated.
@@ -26,7 +27,8 @@ Scala Days 2019, and ScalaIO.
2627
Full details on these activities are in
2728
[Sébastien's report](https://docs.google.com/document/d/1MwzPQtYIaJ4_5z7-StJI-gKiY-oV_6Or7PEvnJBR92k/edit?usp=sharing).
2829

29-
Other topics discussed at the meeting included TODO
30+
Other topics discussed at the meeting included the Center's
31+
sponsorship terms.
3032

3133
Two new proposals were made:
3234

@@ -75,6 +77,15 @@ Officers:
7577

7678
As chairperson, Jon Pretty conducted the meeting.
7779

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+
7889
### Activities
7990

8091
As the Center's Executive Director, Sébastien Doeraene summarized
@@ -86,31 +97,216 @@ on the Center's recent activities.
8697

8798
The following notes are a supplement to Sébastien's report:
8899

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.)
90153

91154
### Financial report
92155

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.
94179

95180
### Proposals
96181

182+
Both proposals were presented discussed before either proposal was voted on.
183+
97184
#### SCP-019: Focusing on backwards compatibility for Scala 2.14 and Scala 3.0
98185

99186
Proposed by Stu Hood on behalf of Twitter.
100187

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+
101193
See the [proposal text](https://github.com/scalacenter/advisoryboard/blob/master/proposals/019-scala-214-30-back-compat.md)
102194
for details.
103195

104196
There was some discussion on the [pull request for the
105197
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.
110198

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.
114310

115311
#### SCP-020: SBT transitive dependency conflicts management improvements
116312

@@ -119,13 +315,74 @@ Proposed by Julien Tournay on behalf of Spotify.
119315
See the [proposal text](https://github.com/scalacenter/advisoryboard/blob/master/proposals/020-sbt-transitive-dependencies-conflicts.md)
120316
for details.
121317

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+
122357
**Voting**: seven in favor, one opposed, one abstention,
123358
one member not present. The proposal is accepted.
124359

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+
125372
### Other business
126373

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.
128383

129384
## Conclusion
130385

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

Comments
 (0)