Watch all of the talks and a highlight of our evening at HelloSelf 👉🏽https://t.co/DhYM3AHbx8
Don't forget, we're heading to;
📍 @FlutterPLC , Dublin
📍 @cognira , Atlanta USA
Limited space is available; sign up here ➡️ https://t.co/5JtALBfGzu
#Scala#Event#ScalaCommunity
As we’ve settled back from #ScalaDays Madrid, we again want to send a big thanks to everyone who attended, spoke, & sponsored.
Plus, a special thanks to @xebia for organizing & the support of @scala_lang!
A thread
#Amsterdam, are you ready? 📢
We're beyond excited to be heading to the Netherlands this month with @VakDis ✈️
All you need to know;
📍Herengracht 262, 1016 BV Amsterdam
⏰ Doors open at 6pm
🍕🍻Complimentary pizza and craft beers
👥 Lots of networking opportunities
#Scala
Happy to share my thoughts on Scala 3 adoption!
Scala 3 was originally called Dotty, which was positioned as a separate, research-only compiler, without any intention to make the compiler the next version of Scala.
In fact, every time folks would worry about the radical changes Dotty was making, they were reassured that Dotty was research-only, so the changes wouldn't affect commercial Scala code.
Lightbend (wisely) stopped trying to build a VC-funded company around Scala, which called into question the future of the commercial compiler they maintained. Over the span of a few years, and with lobbying from Odersky, the decision was made to turn the research compiler into the next version of Scala.
To their credit, EPFL / Lightbend spent a lot of time trying to bridge the gap between the commercial compiler and the research compiler, working from both ends, and spending resources on tooling.
In the end, however, a research-only compiler for an ostensibly new programming language (related to Scala, but still not Scala), became the next version of Scala without input from industry.
Now, I happen to think that Scala 3 improves on Scala 2.x in a lot of key ways (and also makes some unnecessary changes, such as whitespace-sensitive syntax). But it was not created in response to industry, but rather forced on industry.
Companies discovered to their horror that the next version of Scala would reset tooling to zero (which it did, quite effectively), force rewrites for macros and legacy libraries, require costly, time-consuming, and risky updates and upgrades, and ultimately radically alter the entire OSS landscape (because a new language = new global optimum for how libraries are designed).
No company ever wants world-changing language revisions. Developers, of course (who have to live with language warts), sometimes appreciate when language syntax and semantics are fixed. But companies view such revisions as pure waste. Moreover, when such revisions are forced upon them, rather than being created from a collaboration between language developers and industry, they destroy trust in a language's commitment to the needs of industry.
Scala 3 adoption has been slow within Scala 2.x companies partially because companies do not want to spend time on world-changing revisions that deliver no business value. But it has also been slow because there is a serious trust issue.
Trust is extremely hard to earn, very easy to lose, and very difficult (sometimes impossible) to rebuild. Right now, a lot of companies do not trust that Scala 3 will be the last breaking update.
I do not trust Scala's commitment to industry. I believe that without lobbying, Scala 4 will essentially be a new language, built on Caprese, focused around an effect system that industry is NOT calling for (which might nonetheless be "cool"), with source code migration tools beyond Scalafix. Already, we are seeing new features in Scala 3 minor versions, which are introduced at a rate 10x faster than in Java, with far less analysis, specification, debate, and oversight. These new features, which are not being developed in response to industry needs, start out with no tooling support and no library support, and they have domino effects on code bases and become sticky if users decide to experiment with them.
To improve adoption of Scala 3, we need to deal with the trust issue. Some have suggested better communication, and that's definitely part of it. But communication alone cannot rebuild the trust that has been lost due to Scala 3. Companies need to believe that Scala 3 is "done", and that it won't change anytime soon, and that if it does change at some point (in the distant future), those changes will be in response to industry needs, not research.
Those who peer over into Scala Next and see new experimental research features being shipped (behind flags or not), or who pay attention to the grand vision of Caprese, are going to proceed cautiously, in a state of distrust, and this distrust will lead them to forestall 3.x upgrades, sunset 2.x projects, and adopt alternative, stable languages that have proven that they are fully committed to the needs of industry.
If I personally were steering the Scala 3 ship, I would come out with an industry-focused statement that acknowledges the pains caused by Scala 3 and commits to learning from these mistakes (which were well-intentioned but are setting Scala back by a decade). Moreover, I would go much further by setting a clear focus for Scala on industry over academia.
It's fine to experiment with research features (whether or not they come from industry), but these should not be in the same repository as the official Scala 3 compiler. They can live in separate EPFL repositories. Under no circumstances should these features be "one SIP and compiler-flag away" from being forced onto commercial code bases. Rather, any new features should require buy-in from the largest commercial users of Scala, and any (binary or source, forward or backward) breaking features should have to possess near universal consensus from industry.
To rebuild trust, and to place the focus on industry, I would enact the following changes, which I've talked about before:
1. Indefinite source & semantic compatibility. The very first Java program I ever wrote compiles without changes under the latest JDK. Scala needs to at least aim for that level of stability. Of course, if industry is complaining about some problem enough they want to pay for the breaking tax, that can be dealt with in the future. But the default mindset and public positioning needs to be, "We are not breaking source or semantic compatibility."
2. Temporary ban on new language features (let's say, 5 years). There is nothing wrong with new language features that solve industry pains. But they should not come frequently. In the case of Scala, each new feature is a terrifying reminder of Scala 3. Each new feature arrives in an atmosphere of low-trust, and in the presence of numerous unmet industry needs (such as compiler stability, etc.), which speak much louder than words what the true priorities of Scala are. Until the majority of industry moves from Scala 2.x to Scala 3, there should be an outright ban on new language features. We should loudly and proudly promise that, "Scala will never stop innovating in ways that meet the needs of industry, but as companies migrate from Scala 2.x to Scala 3, we're going to commit to full stabilization of the language and put the focus on what matters to commercial users."
3. Focus compiler on bugs, tooling support, performance, multi-platform, and an optimizer. For the duration of the new feature moratorium, every single PR to the Scala compiler should squarely target one of these areas (no exceptions!). Bugs must be fixed, whether fun to fix or not. The compiler must support tooling, with a rock-solid interactive compiler (for example). The performance of the Scala compiler should be on-par with Kotlin. The JVM is struggling in the cloud-native era and Scala needs to acknowledge this reality and put resources into native and WASM. Finally, Scala's main selling point is abstraction, but abstraction has a heavy performance cost right now, so we need a great optimizer so people can abstract without costing companies more in cloud-spend (that's not true today).
If Scala were to come out with a statement along these lines, and refocus compiler development as stated above, then over time (this would NOT be an overnight process), Scala 3 adoption would radically increase. I think we would soar past 2017 levels, and reach new heights. Scala 3 is an amazing, capable language, but it is also a research language, and until it deals with this legacy, in a way that rebuilds lost trust, adoption will suffer.
Anyone in the C++ world of development and up for a visit to Cambridge?
Hosting an exclusive event with @HPUK x Wolf Security
Follow the link below! 🙌
#Cambridge#TechMeetUp#Security
https://t.co/iW10q2cn1O
@Signify_Tech is very excited to be a gold sponsor at the UK's first ever @RustNationUK conference. 🦀
Join hundreds of Rust engineers for 2 exciting days of Rust talks, training & workshops. Held at The Brewery in the heart of London on the 16th & 17th of Feb 2023 🎉
@inancgumus Would you say Go to replace monolith Kernel security products is a) feasible? b) timely?
Just purely out of interest from a non-technical person to understand?
Currently working with an exceptional CTO/VP of Engineering. Success with companies such as BBC, LOVEFiLM, Amazon Prime Movies, Sainsbury's, as well as more recently co-founder and #CTO in multiple successful startups
Looking for their next role, please feel free to reach out🔥
@alvinalexander Hey Alvin, would you be alright with me sharing this on LinkedIn (link and reference to you, too) to support the community and people interested in picking up Scala 3?
Really excited for this month's Scala in the City X Sky
Tuesday 31st May @ 6pm
Osterley, Sky
Our speakers for the evening:
📣 Rhys Bradbury
📣 Joint Presentation
📣 Hugh McKee
It is not too late to register your attendance, follow the link below👇
https://t.co/aJjwzi2s6P
Scala 3.1.2 is out! 🎉
The possibility to execute simple snippets from the command line, experimental macro settings and much more is waiting for you.💫
Read more 👇
https://t.co/531C3et2Gj