You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: blog/_posts/2025-03-24-evolving-scala.md
+22-22
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ Should the language change at all?
12
12
This article discusses how **Scala must keep evolving**, why that evolution is necessary, and what directions we expect that evolution to take.
13
13
We hope that this will cover many of the frequently asked questions on the direction of the Scala language, and help the community understand where the language will go in the months and years to come.
14
14
15
-
# Summary
15
+
##Summary
16
16
17
17
Although Scala is no longer riding the wave of hype it had in the mid-2010s, by most surveys the language maintains its position just outside the list of mainstream languages.
18
18
From a technical perspective, the core language and ecosystem have improved greatly over the past decade.
@@ -26,7 +26,7 @@ But other languages are also improving, and so Scala must continue to innovate,
26
26
There are of course ongoing issues, especially around IDE support and the learnability of the ecosystem, and there will always be concerns about tooling, compatibility, and migration cost as a language evolves.
27
27
But Scala has no choice but to move forward if it is to maintain its appeal and relevance in the years to come.
28
28
29
-
# Where Scala stands today
29
+
##Where Scala stands today
30
30
31
31
Although the hype has died down, popularity-wise Scala is about where it has always been: not quite in the mainstream, but with far greater adoption than more niche languages.
32
32
For example, the RedMonk Language Rankings had Scala in [14th place in 2014](https://redmonk.com/sogrady/2014/06/13/language-rankings-6-14/) and [still in 14th place 10 years later in 2024](https://redmonk.com/sogrady/2024/09/12/language-rankings-6-24/).
@@ -44,11 +44,11 @@ Heavy use of symbolic operators has thankfully fallen out of style.
44
44
Scala has always been a language on the leading edge, proving the viability of language features like lambdas, records, and pattern matching that were adopted 10–15 years later by Java, Python, and other mainstream languages.
45
45
It remains to be seen which current Scala features the mainstream languages will adopt 10-15 years from now.
46
46
47
-
# Where is Scala going?
47
+
##Where is Scala going?
48
48
49
49
In this section, we will discuss some areas where the core Scala developers will focus their efforts.
50
50
51
-
## Safety and convenience: pick two
51
+
###Safety and convenience: pick two
52
52
53
53
Scala has always been a hybrid language.
54
54
The fusion of object-oriented and functional styles was often talked about.
@@ -76,7 +76,7 @@ Going forward, Scala must continue to pursue these twin goals of safety and conv
76
76
Tomorrow’s popular frameworks may be different from those of today, which are different from those of years past.
77
77
But developers have wanted safety and convenience for the past several decades, and we expect it to continue being in demand in the years to come.
78
78
79
-
## Sanding off rough edges
79
+
###Sanding off rough edges
80
80
81
81
Scala is no longer a new language.
82
82
A lot of things seemed like good ideas two decades ago, but not all such decisions panned out.
@@ -98,7 +98,7 @@ For example, Scala has cycled through three collections libraries to get to wher
98
98
What long-standing annoyances can we fix today that we will be grateful to have fixed 5–10 years down the road?
99
99
What features and conventions can we adopt from other languages, rather than re-inventing the wheel in our own idiosyncratic manner?
100
100
101
-
## An easier language for newcomers
101
+
###An easier language for newcomers
102
102
103
103
We believe Scala can be made easier for newcomers to pick up.
104
104
All advanced Scala users were newcomers at some point.
@@ -123,12 +123,12 @@ They will be smart, but they won’t be experts pushing the limits of the Scala
123
123
They will know Java or Python or JavaScript because that’s what they learned in school.
124
124
That is who we need to make sure has an easy on-ramp to the Scala language.
125
125
126
-
# Considered alternatives
126
+
##Considered alternatives
127
127
128
128
There are always differing opinions about where Scala should go.
129
129
We’ll discuss two ideas that repeatedly come up around the direction of the language.
130
130
131
-
## Why not go all in on Framework X?
131
+
###Why not go all in on Framework X?
132
132
133
133
One common request from the community is to go “all in” on some framework or toolchain in the Scala community.
134
134
For example:
@@ -151,7 +151,7 @@ However, there are a few issues with this approach when analyzed more deeply:
151
151
As such, Scala has to remain general by building features that any framework or library can benefit from.
152
152
We encourage framework enthusiasts to propose improvements to the Scala language: although not every specific idea may be accepted, the feedback drives language changes that benefit all frameworks.
153
153
154
-
## Why not freeze all feature development?
154
+
###Why not freeze all feature development?
155
155
156
156
Another common request is to “stop implementing features”.
157
157
This comes up regularly in language discussions from people who are dissatisfied: with tooling support, the job market, or other things.
@@ -173,20 +173,20 @@ Scala cannot compete with mainstream languages on stability and polish alone, so
173
173
Scala thus needs a steady stream of improvements to sustain it, to give people and projects a reason to pick the language.
174
174
We might get things wrong — there is no guaranteed path to success — but a feature freeze is a guaranteed path to stagnation and failure.
175
175
176
-
# Open problems in the Scala ecosystem
176
+
##Open problems in the Scala ecosystem
177
177
178
178
The Scala ecosystem is not without its issues.
179
179
Here we will briefly cover what we think are the biggest challenges that Scala faces today, and what we have done or will do about them going forward.
180
180
181
-
## Tooling: IDEs
181
+
###Tooling: IDEs
182
182
183
183
“Tooling” was the biggest area for improvement highlighted in the last [VirtusLab Scala Survey](https://scalasurvey2023.virtuslab.com/).
184
184
This primarily means IDEs (IntelliJ and VSCode) and build tooling (such as sbt), which are the tools that everyone writing Scala must also interact with.
185
185
186
186
The two primary IDEs used in the Scala community are IntelliJ and VSCode.
187
187
The aforementioned survey has ~80% of respondents using IntelliJ and ~50% using VSCode, with some using both.
188
188
189
-
### IntelliJ
189
+
####IntelliJ
190
190
191
191
IntelliJ support for Scala 3 still has some catching up to do with the quality of support it has traditionally had for Scala 2.
192
192
Nevertheless, there is steady progress, and the recent improvements show an accelerated pace.
@@ -200,7 +200,7 @@ Nevertheless, there is steady progress, and the recent improvements show an acce
200
200
We acknowledge that there is still work to do.
201
201
The IntelliJ team is working hard on bringing the best support for Scala 3, and you can expect more improvements in the following months.
202
202
203
-
### Metals - the Scala Language Server
203
+
####Metals - the Scala Language Server
204
204
205
205
Metals is most often used with VSCode, but also supports other editors.
206
206
Metals has different challenges than IntelliJ: it has always used the actual Scala compiler for its code intelligence, and so it is always in sync with the actual language.
@@ -211,7 +211,7 @@ The Scala 3 compiler developers already heavily use both IntelliJ and Metals, an
211
211
We will continue to report issues as they are found, and we will work with the maintainers of both IntelliJ and Metals to improve the integration between the compiler and the IDEs.
212
212
But we also need people from the community to take an active role in reporting problems so the IDE maintainers can investigate and fix them.
213
213
214
-
## Build tooling
214
+
###Build tooling
215
215
216
216
The complexity of the build tool sbt has been a long-standing problem in the Scala community for the past decade or more.
217
217
However, we think there is light at the end of the tunnel:
@@ -234,7 +234,7 @@ However, we think there is light at the end of the tunnel:
234
234
235
235
Overall we expect this problem will sort itself out going forward: both by sbt itself improving over time, and by projects choosing other tools that provide great alternatives.
236
236
237
-
## Ecosystem learnability
237
+
###Ecosystem learnability
238
238
239
239
The third biggest issue we see in the Scala language is the learnability of the ecosystem.
240
240
@@ -257,17 +257,17 @@ But here too we see reasons for optimism:
257
257
258
258
This is an area where we have been slowly making progress, and we hope this “newcomer friendly” Scala style will grow over time: not at the expense of the more advanced frameworks, but in tandem with them as the increased number of newcomers leads to more people picking up the more sophisticated frameworks if and when the need arises.
259
259
260
-
# How you can help
260
+
##How you can help
261
261
262
262
Scala is a community effort; there is no huge corporate sponsor driving Scala development like there is in other languages.
263
263
We thus need help from the community to help drive the language forward.
264
264
This help can come in a variety of ways.
265
265
266
-
## Financially
266
+
###Financially
267
267
268
268
If you want to support Scala financially, there are two main groups you can support:
269
269
270
-
### The Scala Center
270
+
####The Scala Center
271
271
272
272
The Scala Center supports two things:
273
273
@@ -283,7 +283,7 @@ You can donate to the Scala center in two ways:
283
283
Donate to the Scala Center if you want to support the core Scala language and community work.
284
284
Much of their work is not glamorous, but it plays a key role in helping ensure the ongoing health of the Scala ecosystem.
285
285
286
-
### VirtusLab
286
+
####VirtusLab
287
287
288
288
VirtusLab does the core development on much Scala *tooling*:
289
289
@@ -294,7 +294,7 @@ VirtusLab does the core development on much Scala *tooling*:
294
294
295
295
If you are hitting issues with Metals or Scala-CLI and would like to help fund fixes or improvements, you should reach out to VirtusLab at [[email protected]](mailto:[email protected]).
296
296
297
-
## Code
297
+
###Code
298
298
299
299
Most of the Scala ecosystem is open source.
300
300
This means you can directly dig into the code and make the fixes or improvements you yourself want:
@@ -308,7 +308,7 @@ Contributing fixes and improvements to tooling and infrastructure is not easy, b
308
308
Most of the Scala toolchain is open source and has received drive-by contributions many times in the past by individuals and corporations who just needed something fixed.
309
309
Submitting pull requests to these projects is no different from the kind of work any professional software engineer already does every day, and could help improve your own experience using Scala on a regular basis.
310
310
311
-
## Language Design
311
+
###Language Design
312
312
313
313
The [Scala Improvement Process](https://docs.scala-lang.org/sips/) is not limited to the core Scala contributors.
314
314
Anyone can propose one, e.g. [SIP-42 Binary Integer Literals](https://github.com/scala/improvement-proposals/pull/40), [SIP-61 @unroll default arguments for binary compatability](https://github.com/scala/improvement-proposals/pull/78), [SIP-67 Improved strict equality](https://github.com/scala/improvement-proposals/pull/97).
@@ -322,7 +322,7 @@ But we need more contributors here proposing changes, rather than it being limit
322
322
323
323
If you have ideas to propose but need help with the implementation and have money to pay for it, please contact [[email protected]](mailto:[email protected]) and we can help find the expertise to contract.
324
324
325
-
# Conclusion
325
+
##Conclusion
326
326
327
327
Language development is an indirect process.
328
328
The core Scala team cannot build the next big Scala success story themselves, nor will it happen overnight.
0 commit comments