Scala accessibility - tooling vs. language

The discussion in Pre-SIP: A Syntax for Collection Literals makes the same point again and again: the Seq collection literals should be present to make the language more approachable. Similar sentiments sometimes appear in other pre-SIP topics.

I would like to voice opinion here you are solving the wrong problem. The real obstacles to Scala accessibility are different, mostly in the area of tooling, build pipelines and likes. Once you stop playing with toy examples and programming exercises and start doing something real, having a beautiful language is not enough.

I have already made this point before (e.g. in Scala 3 porting experiences - Question - Scala Users):

I would like to ask the responsible people to consider concentrating more on making the things we already have (compiler, libraries, build tools, IDEs) to be really usable than to sail fast forward to a bright future, leaving poor blokes like me behind

This was about a year ago, but the situation stays mostly the same: the language is evolving to a beauty, while the practical life stays complicated.

As an illustration: Recently I created a small plugin for IntelliJ, and considering myself a seasoned Scala developer, what other language could I choose? I started with Scala, but after several hours I gave up, I have tried Kotlin instead and finished my job within an hour - not because Kotlin is better language, but because the Gradle based Kotlin plugin build pipeline is working, is well documented, and I did not hit any rough edges or major obstacles.

I would also like to note year later my hope that staying with LTS will make the situation with tools better was shown to be unsubstantiated: at least with IntellliJ most problems I have are related to givens and opaque types, which are all LTS features, not anything from Next.

4 Likes

OK, so the Gradle based Kotlin plugin build pipeline worked for you and the Scala stuff didn’t. But we have no idea what Scala tools you’ve even tried and what missing functionality (or documentation?) was the reason you couldn’t get the job done with Scala. Saying “the tooling sucks” is easy, but providing feedback that actually allows somebody to do something about it is a lot harder. But it’s what is needed if we actually want to improve the situation. Not to mention we also need somebody to actually do the often unglamorous work of improving tools and documentation.

So, what is it that you are hoping for? Stop language development and hope that the people who are now working on new language features will work on tooling instead? I don’t think that’s how it works.

That was just an illustration. If you want to check issues I have met so far, besides the SCL tracker I have already linked there is also this - I try to report all issues I meet (although I have to admit sometimes I get tired and give up), I just did not think this list is the place to do so.

It seems the people directing language development would like to see the Scala usage to increase. My opinion is there are other things more important than new language features for this to happen, and like I am reporting issues for Scala compiler and other tools I use, I am voicing this here, thinking someone might be interested in my opinion, even when perhaps not agreeing, and hoping there perhaps exist other people which share this opinion, and if they will show their agreement here, the people directing the language development might adjust their priorities.

I do not expect them to actually work on tooling, but perhaps when developing new features, there could be more effort dedicated to make sure they work well with existing tooling, maybe by providing better documentation, maybe by making the SIP process more open and documented, maybe be even providing some assistance to tool makers?

One particular post suggesting something concrete in this direction is Pre-SIP: A Syntax for Collection Literals - #32 by eed3si9n

2 Likes

I think that this is almost entirely related to resources / manpower. Not related to priorities. It’s the :moneybag: !

@OndrejSpanel
I don’t mean to be a Negative Nancy but I believe Scala 3 tooling will take quite some time to reach the level you need / want. (This is not meant as an attack / criticism or “lazy” kind of thing on the devs. I appreciate all the work!) It’s been 5 years already since Scala 3 release. Progress is obviously slow. I think it will take another 5+ years. Maybe you’d be happier with another language with better tooling like Kotlin? (I know it sounds like I’m saying “go away” but that’s not the intention. Just being realistic and rational.)

Exactly. Generally, language people don’t necessarily know / work on tooling, and vice versa. There is some overlap but not too much.

@OndrejSpanel
I don’t think tooling is being ignored or de-emphasized. People who work on the language are better funded / resourced (through EPFL, research grants, PhD students etc.). That’s why language development is continuing full steam ahead. I don’t think they can pause / slow this, because grants / students come with a timetable. It would be great if they could get grants just to work on tooling, but that’s not how academia works generally…

The tooling side on the other hand, from what I can tell, is very under-resourced at the moment. Little corporate support, mostly from VirtusLab, but of course it’s still short of the tooling of other languages like Kotlin, Java, etc.

From Seth’s recent post there are fewer developers at Scala Center and funding is needed. On the good side, looks like JetBrains joined the advisory board.

That’s pretty fair and reasonable. I believe this is done to the best of their ability already (for example with the presentation compiler helping the IDE side a lot, also the recent “best effort” compilation mode, among other things); but again they are very under-resourced. Just a few people working on it. Resources are the root of all this I think.

I don’t think the issue is new language features breaking tooling, or not being communicated / helped to tooling people. For IntelliJ, my understanding is that they wanted to make their own type-checker kind of thing, and it got incredibly complex. So it’s taking a lot of time! JetBrains works on so many other things.

To improve tooling, these are the things I can think of:

  1. Fund tooling development.
  2. Join tooling development yourself.
  3. Look at other options outside Scala Center, like lihaoyi ecosystem, he’s even paying people through bounties to work on Mill. (Obviously this doesn’t help with IDE)

I know that doesn’t help much, but realistically the situation looks a bit grim (unless you are willing to wait for a long time). Maybe I’m wrong, let’s hope so!

4 Likes

Would be great before adding new syntax ensure that IntelliJ fixed almost all bugs and covered all features presented at least on LTS. And there are a lot of them currently and they are a bit annoying

I think the simplest way to support this is spread how Scala is great:) then more users of Scala and then more money will put into tooling.