What is Scala community's vision for Scala?

Hello Friends,
I am new to Scala and to the community, so pardon my ignorance, if I am asking a stupid question.

I recently started learning Scala3, and think that it an awesome language, with great syntax. This is not a news to you :slight_smile:

Rarely, in this age, a programming language is used alone. There are tools, libraries and frameworks that go with that language.
Like for Ruby there is Ruby on Rails or for PHP there is Laravel

Is there something that we can decide for Scala and make it a showcase?
Like one ORM, one build tool or one web framework, which is at par with others

I know it is easier said than done. But, just want to see if people think that way and any possibility of further discussion/collaboration.

Thank you so much!

Welcome to the Scala community @Raghvendra :wave:

The Scala home page has some of the showcase, if you scroll down and look at “Proven Use Cases” it mentions lots of libraries / frameworks for different uses: https://www.scala-lang.org/

I’m not sure if there is some Scala equivalent of Rails or Django or whatever. Scala ecosystem tends to be much more varied rather than “one thing everyone uses”. Each use case has many competing, cutting-edge libraries (like Cats vs. ZIO vs. fs2 vs. Monix, Play vs. Laminar vs. Slinky, or build tools Sbt vs. Mill vs. Scala-cli vs. others, etc.) Some people see this as a weakness, some see it as a strength. (I don’t have too much of an opinion, it’s all fine to me either way.) But Scala is very different than other languages in this case, you should keep that in mind. There are many tools to do the same thing.

With the development of Scala-cli and the Toolkit there is some unification at least at the starting level and everyday tasks, but for bigger things, the Scala community tends to be much more varied, rather than “everyone use this ONE thing”. Having said that, let’s hear from others to see what they think.

Hope it helps! Scala is different. :heart:

3 Likes

Honestly (and this is all personal opinion), I think the answer is no – pretty much by design.

The thing that makes Scala great is its flexibility: it supports a number of distinct coding styles, lots of different ways to compose things like asynchronous programming, and vast arrays of ways to use the language to suit your project’s needs.

All of that is great – frankly, it’s the primary reason I’m so fond of the language – but it means that each of those approaches has its own passionate devotees. There are folks who ardently love ORMs for database interaction, and others who despise them, and there are library stacks to support both of those approaches. There are those of us who prefer to program in pretty much 100% functional-programming at all times, and others who find that approach tiresome; Scala is great at both, but they imply completely different library stacks.

There are specific stacks – specific collections of libraries designed to work together – that showcase particular styles like that, some more prescriptively and others in a more open-ended way. (One of my possible goals for my upcoming sabbatical is to start at least drafting one for the Typelevel stack, to make it a bit easier to get started there.) Within a given stack, that totally makes sense.

But IMO trying to do it for Scala as a whole is contrary to the language’s spirit. First, you choose what programming approach you’re looking for – that will then guide you towards an appropriate set of libraries.

2 Likes

Is the question “can we make one stack the official main Scala stack and encourage as much development towards it vs. other stacks”? If so, while that would have major advantages, as others said it would come at too high a cost. There are diverse approaches that all have upsides and downsides.

But if the question is “should the main website take a more focused advertising approach” and pick one stack to be the main highlight to dazzle newcomers with how amazing Scala is, that might be actually be a good idea.

Although it doesn’t really need to be to the exclusion of others. It could show one at a time, perhaps with tabs or different pages, but on each one it would be more focused on the benefits of that specific approach. (For instance, the Singapore stack – as simple and rapid as Python but with much better tooling; the ZIO stack – enterprise-grade batteries-included stack for building complex backends while being easy to learn; Typelevel – the Unix philosophy finally realized at the level of libraries, which are some of the most stable and battle-tested around.)

1 Like

Might be relevant: Where Are the Scala Frameworks? Functional Scala 2024 talk

2 Likes

Another interesting take on frameworks: Lichess uses Play framework but in hindsight would have preferred smaller independent libraries. I think in the Scala community we like tinkering with individual components a lot, so maybe big frameworks are not too appealing to us? :thinking:

1 Like

Both talks are very insightful. Interesting.
Thanks for sharing

1 Like