Typesafe Changes Name to Lightbend
lightbend.com
lightbend.com
So, Typesafe pivots away from being the company behind Scala to being the company behind the "Reactive Platform (tm)".
I didn't understand the motivation at first--they announced they were going to do this a while ago--but this sentence sums it up:
> ... with more than half of our customers representing traditional Java enterprises. We continue to evolve, becoming more language agnostic ...
I can understand this. While I always liked the Typesafe brand because of it tech connotation and implicit relation to Scala, if you want to diversify outside of the Scala box, you'll have to change the name.
As a Scala fan, however, it's hard to not see this as a blow to the community. Having Typesafe behind Scala was one of the major advantages of choosing Scala, and IMHO the primary reason Scala adoption spread wider and faster that Clojure, Haskell et. al.
I was hoping the JVM community would coalesce around one post-java language and I was hoping it was Scala. But now add Kotlin to the mix of Groovy and Clojure, and the future gets murkier. Especially with the mind-share and great communities around Rust and Go.
This is probably a good thing for Typesafe/Lightbend, however. The Scala ecosystem had been tough to monetize. Putting their full weight behind commercial offerings on top of FOSS foundations seems like a better business strategy.
From what I understand, Kotlin will be gaining more features slowly but steadily, similar to what you describe for Swift. I think that Kotlin's ability to integrate seamlessly into any Java codebase (at least in theory) is one of the strongest things it has going for it. Plus being backed up by Jetbrains, with very strong focus on providing a top notch IDE experience.
JetBrains' strategy with Kotlin is pretty simple - take the best bits of Scala whilst not allowing anything to compromise toolchain quality or seamless Java interop. The goal being commercial success rather than research papers. It's basically a spin on the same recipe that made Java itself a success in the early days. Which is why I anticipate they'll be quite successful with it.
Those languages you mention each have vastly different use cases:
Scala = statically-typed replacement for Java, backed by Typesafe/Lightbend, an FP/OO hybrid by adding functional programming to the JVM
Kotlin = statically-typed replacement for Java, backed by Jetbrains, delivered via its popular IntelliJ product
Groovy = dynamically-typed addition to Java 7 and before, failed attempt to shift into static typing, no longer backed by any business, and no IDE plugin being maintained. Only used like bash for the JVM, and Gradle build files
Clojure = dynamically-typed addition to Java (all versions), backed by Cognitect, expanded to other platforms (e.g. ClojureScript, ClojureCLR)
I felt somehow connected to the Typesafe name. It felt tech-y, dev-y, but this one is somehow... non-charismatic.
Guess it doesn't really matter what the name of the company is, so Lightbend, Streamy, Scalewhale, etc. all make sense. The logo though, really? Looks like a 3rd place winner from the local kindergarten arts and crafts contest.
Anyway, wrt to Scala, Lightbend's focus seems to have shifted at least in part to enterprise Java, which by necessity means less resources for Scala development. Probably explains the delay in the Scala 2.12 release: the core developers are too busy serving 2 masters (Lightbend clients and the compiler).
Well, moving forward Scala's surthrival depends on the community and continued popularity of libraries, not so much the company behind the language. Fortunately EPFL provides an ongoing stream of R & D to help bridge the gap created by Lightbend's semi-pivot.
Firstly, as the letter notes, the majority of people using TypeSafe/LightBend's services are in fact "traditional" Java shops. This suggests that - in the enterprise at least - there's limited Scala penetration.
Secondly, the move to a more generic name (LightBend) is one more step away from their core competency. The name TypeSafe was chosen to highlight a particular aspect of the platform they felt was important. Although they likely still do, their customers don't appear to appreciate it (or at least in the same way it was meant, as an advert for Scala).
Finally the bifurcation of technical resources between ongoing Scala development and Dotty as a research project are likely to come up short in both regards. We are on the cusp of Java 9 being released within the year and Scala's big backwards incompatible step forwards with Java 8 still hasn't happened.
At the least you'd have to be a gambling person with a penchant for long odds to continue with Scala at this point.
I attended a (non-scala) meetup recently and got talking to a guy who does consulting in the Scala world. He'd been to a major conference in the past few weeks and reported that the vibe there was exceedingly bleak, with lots of negativity over the future of the Scala project.
One data point, but still...
- tooling (such as sbt) is still poor, even after years of complaints and calls to fix it.
- no real roadmap for improvements to scala itself in the near future
- Dotty being a diversion for the core team, detracting from scala
Now, I only dabble in Scala, so I couldn't really comment on any of these, but I did get the impression that there's a lot of un-happiness amongst core users of Scala. (See also allengeorge's comments elsewhere in this thread)
- There has never been more activity in tooling as in the last half year. There are whole tooling conferences with almost 200 people attending. Tooling has been improved steadily, and people made huge progress on all fronts (ScalaIDE, IntelliJ, Ensime, SBT). Things have improved vastly.
- http://scala-lang.org/news/2.12-roadmap/ http://www.scala-lang.org/news/roadmap-next/ https://groups.google.com/forum/#!topic/scala-internals/flgn... https://groups.google.com/forum/#!topic/scala-internals/qRgo...
- Dotty is not developed by the core team. The people working on Dotty are additional resources put into Scala, and they are helping scalac development because they share design approaches and bug fixes with the Scala team.
Rubbish. Banks have gone in on scala + spark and are paying top dollar.
So I could definitely see people moving away from Scala there.
On one side, I support Odersky's decision to focus on Scala's simple and modular next version, Dotty (the present one became a Flying Spaghetti Monster, without the flying part). But as for now, Scala is effectively dead.
Why should Scala be dead for now? I agree its a Flying Spaghetti Monster, but so is C++.
I would urge typesa^H^Hlightbend to bring forward the introduction of vital syntactic features from dotty (e.g. existentials as HKTs, if they really think that's the best way to express type lambdas). Even if that involves making large changes to scalac that will have to be thrown away, the Scala community cannot survive with the syntax the way it is for much longer.
Because Scala doesn't have enough syntax already?
Also there are cases where it's not more syntax that's needed, but different syntax. E.g. the way irrefutable unpacks in for/yields desugar to a (with)filter call is just dumb.
My two biggest day-to-day peeves are:
1) The poor quality of the entire tool chain
2) Immature libraries and ecosystem
Tool chain: from the slow-as-molasses compiler, to the fact that every so often IDEA gives up and refuses to parse parts of our project, to the horror that is SBT, working with Scala just feels* painful. Heck! - my Macbook Pro sounds like it's taking off whenever I start a Scala compile, and if I'm building from scratch? https://xkcd.com/303/Libraries and ecosystem: many opensource Scala libraries feel more like experiments in language wrangling or narrow (exposing only a tiny subset of the underlying features) wrappers for existing Java libraries than well-tested code. Documentation? Almost always spotty. Library community? Spotty. Source? Good luck reading it. Depending on the author's bent it can range from vaguely understandable to downright inscrutable. (On this last point: I've often poked around various Java/Python/Go/C libraries and been able to figure out fairly quickly what's going on. Much less so with Scala.)
Besides those two points - Scala is complex. To a newcomer the language is unfriendly and has a lot of rough edges. You have to build a lot of context to interpret existing Scala code - and much of this context is incidental to the problem at hand. This makes it very tough to incrementally learn about Scala features/syntax and slowly explore an existing Scala code base (especially an opensource one, where authors are more likely flexing their advanced Scala knowledge). And all that syntactic sugar? Terse. Elegant. Unintelligible to a newcomer.
Sorry. /rant over.
The library ecosystem is growing every day, and the community is starting to recognize the importance of good documentation. See e.g. the Cats project, with a big emphasis on that.
Code readability in general, rough edges, and things that are difficult for newcomers to read incrementally are precisely why I'm so worried about the syntax being frozen.
So has the situation been reversed now?
(Look, I'm not on a crusade against Typesafe/Lightbend, but they've been hugely disingenous on a lot of things like this. I could have accepted it if they'd just said "yes, it's operator overloading, but better". Instead they chose this ridiculous disingenuous "nono, it's just method names!" approach. In my book, the only people who can get away get arbitrary method/function naming are the LISP/Scheme people. Because in LISP/Scheme there is no precedence to worry about.)
Most of the time, there is := (set something), += (add something) and ++= (add multiple things). I think that's pretty straight-forward.
I know exactly what they do; the underlying reasoning is very consistent, maybe even elegant. But if you don't know and need to understand/modify a build.sbt file, it's very tricky to find out.
Like this?
libraryDependencies ++= Seq(...) libraryDependencies :++= Seq(...)
? Because I've definitely seen that in some build.sbt files. error: value :++= is not a member of sbt.TaskKey[Seq[sbt.ModuleID]]Code complexity though, yeah, it's hard (for me, at least) to grasp ordinary for Scala abstraction-heavy, typeclass-heavy code. I would love to see better code exploration tools for Scala.
Over time, I learned slowly to use vals or var, that I don't need to initialize a return value and ship it at the end, and how to build up mapping.
The syntax; I agree with you totally. I just got hired by a company doing Scala and OMG that codebase. I'm seeing all kinds of constructs I haven't used yet.
I still prefer Scala over Java, but there is a high cost to entry.
For me, the language still hits a sweet spot miles ahead of the dynamic languages in its soundness, the old school typed OOP languages in its "functionalness", and the typed functional languages in its approachability and modernity (compared to, say, Haskell). Scala's killer innovation was to find a way to apply sound typing to Ruby-like syntax, and in that, it succeeded quite nicely.
That's not to say the stagnation isn't frustrating or that there aren't great improvements to be made. I think Scala would be greatly improved if Shapeless were expressible with much less hackery. It's a testament to Scala that Shapeless is even possible, but it's still pretty unsatisfactory when it comes to regular people being able to understand such code, let alone debug it when it goes wrong.
But look at Scala through the lens of other languages. It took monumental effort to get to Java 8, Python 3, and ES6. It's unfair to paint the current Scala plateau as some kind of albatross. Especially given that just a few years back, people were complaining about language churn.
Python 3 was very much at the front of my mind as I wrote that - I think their "plateau" has killed the language (I hope I'm wrong). People were complaining about language churn, but I wasn't one of them. With Dotty an unknown number of years away and no committed schedule, I simply don't think Scala can afford to freeze for that long.
I guess bland & non-threatening trumps meaningful in enterprisey software. Still, very disappointing, especially if it signals a lack of focus on Scala.
Scala isn't just a safe language, heck, it is not even an especially type safe language. But Scala allows you to do more, not do the same things significantly type safer like say...Haskell, Rust, Ada, or Agda. The name "TypeSafe" sends confusing signals in that respect. Scala does increase expressiveness without sacrificing type safety, but doesn't really focusing on going beyond that. Correcting that misconception is reasonable, and Lightbend more aptly emphasizes this "do more good" aspect.
Lightbend is a generic name, but not particularly so. It doesn't have an enterprisey feeling to it, and even if it did, that wouldn't be a negative with its potential money-paying customers. As far as the "focus on Scala" go, I think Martin Odersky has already decided to focus on Scala while the company focuses on promoting the Scala ecosystem, which is also quite reasonable and should bear fruit.
When people talk about the slow "Scala" compiler I always wonder what they actually do. I mean most of the time you are lightyears slower I thinking how to solve the problem than the compiler compiles. I mean changing a file compile -> looking at the result takes on my machine mostly 1-2 seconds (incremental compilation). Javac isn't lightyears faster and on go I would take nearly the same time, only full compilation is way way faster.
Solution: restart SBT, wait for a minute for it to recompile the project definition; rebuild project. That inconvenience wears on you.
However my Scala project actually doesn't use too many "special" feature's I would say I actually don't use any obscure language feature, the only operator which I've written yet is a "~~" for a StringBuilder and else I actually wrote out EVERY type parameter to my function, etc. I would say we write our code so that it's readable inside all major ide's and is understandable by junior developers.
But, I also do a lot of front-end web work, and Webpack takes a lot longer to rebundle my files than Scala takes to compile. I work on a Rails monolith that takes as long to start up as my Scala project does for a fresh compile. So I think the complaints are way overblown.
6 years ago I got overclocked watercooled CPU just for Scalac.
The end result is that my state of flow is continually interrupted, or at least under assault. Bobbling my head to trance music while implicits are resolved is the only antidote that I know of.
Personally, I am very interested in Scala, but didn't immediately recall that Typesafe was the company that owns it when I saw the article title. The conversation here is valuable (about roadmap, developer sentiment, etc), so don't want folks to miss out.
What's the backstory on this company? Who are they and why are they on the front page of HN?