Skip to content

Commit ca32e71

Browse files
authored
Merge pull request #1784 from lihaoyi/patch-1
Adjust header levels in Evolving Scala
2 parents aa22a8c + b0042c2 commit ca32e71

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

blog/_posts/2025-03-24-evolving-scala.md

+22-22
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Should the language change at all?
1212
This article discusses how **Scala must keep evolving**, why that evolution is necessary, and what directions we expect that evolution to take.
1313
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.
1414

15-
# Summary
15+
## Summary
1616

1717
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.
1818
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,
2626
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.
2727
But Scala has no choice but to move forward if it is to maintain its appeal and relevance in the years to come.
2828

29-
# Where Scala stands today
29+
## Where Scala stands today
3030

3131
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.
3232
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.
4444
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.
4545
It remains to be seen which current Scala features the mainstream languages will adopt 10-15 years from now.
4646

47-
# Where is Scala going?
47+
## Where is Scala going?
4848

4949
In this section, we will discuss some areas where the core Scala developers will focus their efforts.
5050

51-
## Safety and convenience: pick two
51+
### Safety and convenience: pick two
5252

5353
Scala has always been a hybrid language.
5454
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
7676
Tomorrow’s popular frameworks may be different from those of today, which are different from those of years past.
7777
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.
7878

79-
## Sanding off rough edges
79+
### Sanding off rough edges
8080

8181
Scala is no longer a new language.
8282
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
9898
What long-standing annoyances can we fix today that we will be grateful to have fixed 5–10 years down the road?
9999
What features and conventions can we adopt from other languages, rather than re-inventing the wheel in our own idiosyncratic manner?
100100

101-
## An easier language for newcomers
101+
### An easier language for newcomers
102102

103103
We believe Scala can be made easier for newcomers to pick up.
104104
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
123123
They will know Java or Python or JavaScript because that’s what they learned in school.
124124
That is who we need to make sure has an easy on-ramp to the Scala language.
125125

126-
# Considered alternatives
126+
## Considered alternatives
127127

128128
There are always differing opinions about where Scala should go.
129129
We’ll discuss two ideas that repeatedly come up around the direction of the language.
130130

131-
## Why not go all in on Framework X?
131+
### Why not go all in on Framework X?
132132

133133
One common request from the community is to go “all in” on some framework or toolchain in the Scala community.
134134
For example:
@@ -151,7 +151,7 @@ However, there are a few issues with this approach when analyzed more deeply:
151151
As such, Scala has to remain general by building features that any framework or library can benefit from.
152152
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.
153153

154-
## Why not freeze all feature development?
154+
### Why not freeze all feature development?
155155

156156
Another common request is to “stop implementing features”.
157157
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
173173
Scala thus needs a steady stream of improvements to sustain it, to give people and projects a reason to pick the language.
174174
We might get things wrong — there is no guaranteed path to success — but a feature freeze is a guaranteed path to stagnation and failure.
175175

176-
# Open problems in the Scala ecosystem
176+
## Open problems in the Scala ecosystem
177177

178178
The Scala ecosystem is not without its issues.
179179
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.
180180

181-
## Tooling: IDEs
181+
### Tooling: IDEs
182182

183183
“Tooling” was the biggest area for improvement highlighted in the last [VirtusLab Scala Survey](https://scalasurvey2023.virtuslab.com/).
184184
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.
185185

186186
The two primary IDEs used in the Scala community are IntelliJ and VSCode.
187187
The aforementioned survey has ~80% of respondents using IntelliJ and ~50% using VSCode, with some using both.
188188

189-
### IntelliJ
189+
#### IntelliJ
190190

191191
IntelliJ support for Scala 3 still has some catching up to do with the quality of support it has traditionally had for Scala 2.
192192
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
200200
We acknowledge that there is still work to do.
201201
The IntelliJ team is working hard on bringing the best support for Scala 3, and you can expect more improvements in the following months.
202202

203-
### Metals - the Scala Language Server
203+
#### Metals - the Scala Language Server
204204

205205
Metals is most often used with VSCode, but also supports other editors.
206206
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
211211
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.
212212
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.
213213

214-
## Build tooling
214+
### Build tooling
215215

216216
The complexity of the build tool sbt has been a long-standing problem in the Scala community for the past decade or more.
217217
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:
234234

235235
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.
236236

237-
## Ecosystem learnability
237+
### Ecosystem learnability
238238

239239
The third biggest issue we see in the Scala language is the learnability of the ecosystem.
240240

@@ -257,17 +257,17 @@ But here too we see reasons for optimism:
257257

258258
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.
259259

260-
# How you can help
260+
## How you can help
261261

262262
Scala is a community effort; there is no huge corporate sponsor driving Scala development like there is in other languages.
263263
We thus need help from the community to help drive the language forward.
264264
This help can come in a variety of ways.
265265

266-
## Financially
266+
### Financially
267267

268268
If you want to support Scala financially, there are two main groups you can support:
269269

270-
### The Scala Center
270+
#### The Scala Center
271271

272272
The Scala Center supports two things:
273273

@@ -283,7 +283,7 @@ You can donate to the Scala center in two ways:
283283
Donate to the Scala Center if you want to support the core Scala language and community work.
284284
Much of their work is not glamorous, but it plays a key role in helping ensure the ongoing health of the Scala ecosystem.
285285

286-
### VirtusLab
286+
#### VirtusLab
287287

288288
VirtusLab does the core development on much Scala *tooling*:
289289

@@ -294,7 +294,7 @@ VirtusLab does the core development on much Scala *tooling*:
294294

295295
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]).
296296

297-
## Code
297+
### Code
298298

299299
Most of the Scala ecosystem is open source.
300300
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
308308
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.
309309
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.
310310

311-
## Language Design
311+
### Language Design
312312

313313
The [Scala Improvement Process](https://docs.scala-lang.org/sips/) is not limited to the core Scala contributors.
314314
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
322322

323323
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.
324324

325-
# Conclusion
325+
## Conclusion
326326

327327
Language development is an indirect process.
328328
The core Scala team cannot build the next big Scala success story themselves, nor will it happen overnight.

0 commit comments

Comments
 (0)