Scala Works

Scala Works

Hello, friend 👋, and welcome to your journey into the Scala programming language! Scala Works aims to be your guide to help get started in the Scala 3 ecosystem. It started with one person with a crazy idea, but now that you're here it's two - we're already stronger together! We, as a community, aim to be open in hearing your challenges, frustrations, and tips to make working with Scala as drop-dead simple as possible.

Powered by Scala enthusiasts like you

We are geared do drive forward Scala 3 - the latest version of the language. Scala 3 was a big overhaul, and you could even say it's a new language! But don't despair, because most of the language was refined from Scala 2 to 3 - concepts and mechanisms are outlined a bit different, but generally map between the two straightforwardly.

One complete overhaul from 2 to 3 was the meta-programming/macro system. These are incompatible between the two versions, however the macro system for Scala 3 is much more developer friendly, and gives people like us new superpowers!

One thing we are going to use our new super powers for, are build some slim frameworks/libraries using Scala 3's meta-programming that allow us to take "project skeletons/scaffolds/templates" to the next level, and automate them at the code level!

Who is Scala Works for?

Scala is a wonderfully flexible language, and we're not here to tell you what is "right" - because ultimately what is right, is between you, your team, and your projects. If you've already figured that out, then don't take our suggestions as gospel or an attack.

We will talk authoritatively about code style, formatting, structuring, etc... but please know this comes from a place of education and not a authoritarianism. We aim to provide a collection of best practices, not the definitive collection of best practices to help port your experience in other programming languages to Scala.

With that in mind:

We aim to be for:

We do NOT aim to be for:

What does Scala Works do?

Or, I should say will do, as we grow:

We, as a community, aim to provide a set of standard, best practices, and "generally good advice" with things like:

Standard. Clean. Consistent. It's amazing how far this can go to make your codebase more approachable to everyone on your team.

We would also like to provide some slim frameworks/libraries that wrap (and not re-invent) functionality from existing, excellent Scala libraries, in order to provide good ergonomics around what we think are some "core, essential" frameworks that every developer newly entering the ecosystem expects. With these frameworks, one can learn the underlying tool without worrying about the edge cases, and get to work. We think these include:

Building applications isn't worth much if you can't ship your code. We also aim to provide advice for:

Join In

I've set up some topics in GitHub Discussions - feel free to join in the discussion!

Learning Scala

We're sure you'll pick up knowledge along the way, but there are already a great number of absolutely amazing resources on learning Scala. There is a great list here on Scala's site.

With that in mind, we don't want to duplicate that effort. We're here to help you use Scala, and abstract utilities "up the stack", so the initial boilerplate you might get stuck in can get out of the way.

Stay Tuned

Saying that we're new, and growing is currently an understatement, but feel free stay tuned as we start to set up more resources!