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, that's great! Maybe you'll find some useful tips here, or can contribute an improvement!

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:

  • People who are new to Scala, that don't have their own "style" opinions yet
  • People who are looking for a broader idea of "style" out there
  • People who just want to adopt a style, and get coding

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:

  • .gitignore files that consider all current Scala tooling
  • .scalafmt.conf files to give you a style that keeps your codebase standard
  • .scalafix.conf files to keep your codebase clean
  • project structure recommendations, to keep your codebase consistent
  • project templates that you can use that have all of the above already set up for you.

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:

  • HTTP/Web Server (REST and GraphQL)
  • Front Ends (SPAs)
  • CLI tools

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

  • General build/deployment strategies
  • CI/CD strategies
  • The platforms for Scala (JVM, ScalaJS, Scala Native)

Join In

I've set up some topics in GitHub Discussions (opens in a new tab) - 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 (opens in a new tab) 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!