Ox

Safe direct-style concurrency and resiliency for Scala on the JVM. Requires JDK 21 & Scala 3.

To start using Ox, add the core dependency as described below. Then, follow one of the topics listed in the menu to get to know Ox’s API.

In addition to this documentation, ScalaDocs can be browsed at https://javadoc.io.

Start here

Adding Ox to your project

// sbt dependency
"com.softwaremill.ox" %% "core" % "0.1.0"

// scala-cli dependency
//> using dep "com.softwaremill.ox::core:0.1.0"

Scope of the Ox project

The areas that we’d like to cover with Ox are:

  • concurrency: developer-friendly structured concurrency, high-level concurrency operators, safe low-level primitives, communication between concurrently running computations

  • error management: retries, timeouts, a safe approach to error propagation, safe resource management

  • scheduling & timers

  • resiliency: circuit breakers, bulkheads, rate limiters, backpressure

All of the above should allow for observability of the orchestrated business logic. We aim to enable writing simple, expression-oriented code in functional style. We’d like to keep the syntax overhead to a minimum, preserving developer-friendly stack traces, and without compromising performance.

Some of the above are already addressed in the API, some are coming up in the future. We’d love your help in shaping the project!

Community

If you’d have feedback, development ideas or critique, please head to our community forum! Alternatively, you can create an issue or submit a pull request on GitHub.

Sponsors

Development and maintenance of Ox is sponsored by SoftwareMill, a software development and consulting company. We help clients scale their business through software. Our areas of expertise include backends, distributed systems, machine learning and data analytics.

Commercial Support

We offer commercial support for Ox and related technologies, as well as development services. Contact us to learn more about our offer!

Introductory articles

Inspiration & building blocks

Table of contents

Kafka integration