2026-03-31·9 min read·sota.io team

Deploy Oz/Mozart to Europe — Multi-Paradigm Constraint Programming Hosting in 2026

In the early 1990s, researchers at three European institutions posed a question that most programming language designers avoided: what if one language could do everything? Not by accumulating features onto an existing paradigm, but by designing a semantic core expressive enough to encode functional programming, object-oriented programming, concurrent programming, and constraint programming — all as coherent instances of the same underlying model.

The language they built was Oz. The implementation was Mozart. The collaboration spanned Universität des Saarlandes in Germany, Université catholique de Louvain (UCLouvain) in Belgium, and — later — KTH Royal Institute of Technology in Stockholm. The result became the basis for one of the most influential computer science textbooks of the 2000s: Concepts, Techniques, and Models of Computer Programming by Peter Van Roy and Seif Haridi, used to teach programming at dozens of European universities.

This guide shows how to deploy Oz/Mozart backends to EU infrastructure with sota.io.

The European Roots of Multi-Paradigm Programming

The Mozart Project was a joint research initiative — one of the few programming language efforts of the 1990s explicitly organised as a European academic collaboration, with researchers from Germany, Belgium, and Sweden working on a shared codebase and a shared vision.

Peter Van Roy 🇧🇪 (UCLouvain, Louvain-la-Neuve) — professor at the École Polytechnique de Louvain and the principal force behind both the Oz language design and the CTMCP textbook. Van Roy's intellectual project was to show that the many paradigms of programming — functional, imperative, OOP, concurrent, logic — are not competing philosophies but different facets of a single computational universe. Oz was built to make that claim tangible: one language with one semantics that subsumes them all. His 2004 book Concepts, Techniques, and Models of Computer Programming (co-authored with Haridi) became a standard CS text at ETH Zürich, KTH Stockholm, UCLouvain, and programmes across the EU.

Seif Haridi 🇸🇪 (KTH Royal Institute of Technology, Stockholm) — professor at KTH and co-creator of the Mozart system, co-author of the CTMCP textbook, and later chief scientist at RISE (Research Institutes of Sweden). Haridi brought expertise in distributed computing and concurrent programming to the project; Mozart's dataflow concurrency model and distributed programming features owe much to his work. Mozart was arguably the most capable distributed programming platform of its era — you could write distributed Oz programs that ran across multiple machines using the same linguistic constructs as local concurrent programs.

Gert Smolka 🇩🇪 (Universität des Saarlandes → Universität Stuttgart → Universität des Saarlandes) — Smolka was the founding designer of Oz at Saarbrücken and co-creator of the original Mozart system. His research background in constraint logic programming, in particular the Constraint Propagation paradigm, is the direct source of Oz's constraint programming capabilities. DFKI (Deutsches Forschungszentrum für Künstliche Intelligenz) in Saarbrücken was the institutional home of the early Mozart development.

The Mozart Project — The open-source Mozart system was developed jointly by Saarland (DFKI), UCLouvain, and KTH as a shared research platform. This made Mozart unusual: a language implementation with multi-institution European governance, predating the modern open-source foundation model. Mozart 2, the current maintained version, compiles Oz via LLVM and runs on modern 64-bit systems.

What Makes Oz/Mozart Different

Oz's claim to fame is that it unifies paradigms that most language designers treat as separate design spaces. Understanding how it does this explains why Oz is studied, and why it continues to influence language research.

Dataflow variables — the unifying primitive:

In Oz, an unbound variable is not an error — it is a dataflow variable that blocks any computation trying to read it until it becomes bound. This single mechanism enables lazy evaluation, futures/promises, and logic unification within the same semantics.

local
  X Y
in
  thread
    % This thread blocks until Y is bound
    {Browse Y + 1}
  end
  
  % Bind Y after a delay
  {Delay 1000}
  Y = 42
  % The first thread now unblocks and displays 43
end

Functional programming:

% Recursive factorial — purely functional style
fun {Factorial N}
  if N =< 1 then 1
  else N * {Factorial N-1}
  end
end

% Higher-order functions
fun {Map F Xs}
  case Xs
  of nil   then nil
  [] X|Xr  then {F X}|{Map F Xr}
  end
end

% List comprehension equivalent
Squares = {Map fun {$ X} X*X end [1 2 3 4 5]}
% Squares = [1 4 9 16 25]

Object-oriented programming:

class Counter
  attr count: 0
  
  meth init(N)
    count := N
  end
  
  meth increment
    count := @count + 1
  end
  
  meth get(X)
    X = @count
  end
end

local C in
  C = {New Counter init(0)}
  {C increment}
  {C increment}
  local N in {C get(N)} {Browse N} end   % displays 2
end

Constraint programming:

% Constraint satisfaction: find X, Y, Z in 1..9 where X+Y=Z
local
  X Y Z
in
  {FD.dom 1#9 [X Y Z]}
  X + Y =: Z
  {FD.distribute ff [X Y Z]}
  {Browse X#Y#Z}   % explores all solutions
end

The constraint programming subsystem is one of Oz's most powerful features and a direct descendant of Smolka's CLP research at Saarbrücken. EU applications in logistics scheduling, timetabling, and combinatorial optimisation have used Mozart-based constraint solvers since the 1990s.

Concurrent programming with port objects:

% A port object — the Oz equivalent of an Erlang process
fun {NewCounter}
  P = {NewPort S}
  proc {Loop State Stream}
    case Stream
    of increment|Rest then {Loop State+1 Rest}
    [] get(X)|Rest   then X = State {Loop State Rest}
    [] nil            then skip
    end
  end
in
  thread {Loop 0 S} end
  P
end

local Counter in
  Counter = {NewCounter}
  {Send Counter increment}
  {Send Counter increment}
  local N in {Send Counter get(N)} {Browse N} end   % displays 2
end

Port objects are Oz's concurrent actor model, conceptually identical to Erlang's message-passing processes but integrated with the same language that does functional programming and constraint solving.

Building an HTTP Backend with Mozart2

Mozart2 includes networking support via the Open module and can be used to build HTTP servers:

functor
import
  Application
  Open
  System
define
  fun {ReadRequest Sock}
    B = {New Open.socket init(type:stream)}
    In = {Sock accept(accepted: B)}
    Req
  in
    try
      {B read(list: Req size: 4096)}
    catch _ then
      Req = ""
    end
    {B close}
    Req
  end

  fun {BuildResponse Body}
    Header = "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\nContent-Length: "
    Length = {IntToString {Length Body}}
  in
    Header # Length # "\r\nConnection: close\r\n\r\n" # Body
  end

  fun {Route Request}
    if {List.isPrefix "GET /health" Request} then
      {BuildResponse "{\"status\":\"ok\",\"lang\":\"oz\",\"paradigm\":\"multi\"}"}
    elseif {List.isPrefix "GET /api" Request} then
      {BuildResponse "{\"message\":\"Oz/Mozart on EU infrastructure\",\"creator\":\"Van Roy + Haridi\"}"}
    else
      "HTTP/1.1 404 Not Found\r\n\r\n{\"error\":\"not found\"}"
    end
  end

  Server = {New Open.socket init(type:stream)}
  _ = {Server bind(host:localhost port:8080)}
  _ = {Server listen}
  {System.show 'Mozart HTTP server on :8080'}

  proc {Serve}
    Client = {New Open.socket init(type:stream)}
    _ = {Server accept(accepted: Client)}
    Req
  in
    try
      {Client read(list: Req size: 4096)}
      {Client write(vs: {Route Req})}
    catch _ then skip
    end
    {Client close}
    {Serve}
  end
  {Serve}

  {Application.exit 0}
end

Packaging for sota.io

Mozart2 compiles via LLVM and distributes as a self-contained package. The Dockerfile installs Mozart2 and packages your application as a native binary or bytecode:

Project structure:

myapp/
├── main.oz          # Application functor
├── Dockerfile
└── .gitignore

Dockerfile:

FROM debian:12 AS builder

RUN apt-get update && apt-get install -y \
    wget \
    cmake \
    build-essential \
    libboost-dev \
    libgmp-dev \
    && rm -rf /var/lib/apt/lists/*

# Mozart2 — download latest release
RUN wget -q https://github.com/mozart/mozart2/releases/download/v2.0.1/mozart2-2.0.1-x86_64-linux.tar.gz \
    && tar -xzf mozart2-2.0.1-x86_64-linux.tar.gz -C /opt \
    && rm mozart2-2.0.1-x86_64-linux.tar.gz

ENV PATH="/opt/mozart2/bin:$PATH"

WORKDIR /app
COPY main.oz ./

# Compile to bytecode
RUN ozc -c main.oz -o main.ozf

FROM debian:12-slim
RUN apt-get update && apt-get install -y \
    libgmp10 \
    libboost-system1.74.0 \
    && rm -rf /var/lib/apt/lists/*

COPY --from=builder /opt/mozart2 /opt/mozart2
COPY --from=builder /app/main.ozf /app/main.ozf

ENV PATH="/opt/mozart2/bin:$PATH"
EXPOSE 8080
CMD ["ozengine", "/app/main.ozf"]

Build and push:

docker build -t myapp:latest .
docker tag myapp:latest registry.sota.io/YOUR_PROJECT_ID/myapp:latest
docker push registry.sota.io/YOUR_PROJECT_ID/myapp:latest

Deploy on sota.io:

sota services create \
  --name myapp \
  --image registry.sota.io/YOUR_PROJECT_ID/myapp:latest \
  --port 8080 \
  --region eu-central

sota services logs myapp

Your Oz/Mozart backend is live on EU infrastructure in Frankfurt — GDPR-compliant, isolated, with managed PostgreSQL available on demand.

Why EU Teams Use Oz/Mozart

Multi-paradigm by design, not by accumulation. Most languages add paradigms via libraries or bolt-on features — Python added async, Java added lambdas, JavaScript gained classes. Oz was designed from first principles to unify paradigms at the semantic level. Dataflow variables make concurrent, lazy, and logic programming instances of the same primitive. For researchers and engineers exploring the boundaries between paradigms — reactive systems, declarative UIs, constraint-based configuration — Oz provides a laboratory where the borders dissolve.

Constraint programming for EU industrial optimisation. Oz's FD (Finite Domain) constraint solver is one of the original mature CLP(FD) implementations, predating modern alternatives like MiniZinc. EU industrial applications in airline crew scheduling, production line optimisation, and university timetabling have used Mozart's constraint subsystem. The DFKI Saarbrücken research group applied Mozart-based constraint solvers to logistics problems for German manufacturing clients in the 1990s and 2000s. For teams building scheduling, resource allocation, or combinatorial optimisation systems, Oz's constraint programming is battle-tested EU-origin technology.

Distributed programming built in. Mozart's distributed programming model, developed primarily by Haridi's group at KTH, allows Oz programs to distribute computation across multiple nodes using the same language constructs as local programming. The network transparency of dataflow variables — a remote computation binding a local variable — remains one of the most elegant distributed computing abstractions ever designed. For EU distributed systems research and teaching, Mozart is still the reference implementation.

The CTMCP curriculum. Concepts, Techniques, and Models of Computer Programming by Van Roy and Haridi is used in CS programs at ETH Zürich, KTH Stockholm, UCLouvain, Chalmers, and many other EU universities. Students who learned programming from CTMCP have a different mental model — paradigms as points in a design space rather than competing philosophies. Teams hiring EU-educated engineers who studied from CTMCP will find Oz familiar. For companies building on-premises tools at European universities or research institutions, Oz has institutional presence.

Transparent European academic lineage. The Mozart system was developed at three EU academic institutions — Saarland, UCLouvain, KTH — with support from DFKI, one of Germany's premier AI research centres. Mozart2 is open source under the Mozart License. The entire supply chain is auditable, European, and academically maintained. For EU public procurement, research institutions, and organisations with data sovereignty requirements, Oz/Mozart's provenance is as transparent as it gets.

Alice ML cross-compatibility. Alice ML, developed at Universität des Saarlandes by Andreas Rossberg and the Smolka group, extends Standard ML with Oz-style concurrency primitives (futures, promises, lazy evaluation). Alice ML code compiles to the Seam virtual machine, which is based on Mozart's architecture. Teams working in the ML type-system tradition who need concurrency beyond what SML provides have a European-origin path through Alice ML into Mozart-style concurrent programming.

Practical Considerations

Ecosystem scope. Mozart2 is primarily a research and education platform. The standard library covers core I/O, networking, constraint solving, and concurrency. For commercial web backend use, evaluate whether your required libraries are available or can be implemented. Mozart is most valuable for constraint-heavy applications, distributed systems research, or educational platforms.

Mozart2 maturity. The current Mozart2 (v2.0.x, LLVM-based) is stable for research use but less actively maintained than the original Mozart 1.x series. The community is small but dedicated — the GitHub repository is active, and the mailing list responsive. Budget time for platform-specific build issues.

When Oz/Mozart is the right choice:

Deploy on EU Infrastructure

sota.io runs on servers in Germany (Frankfurt) and other EU data centres. All data stays within EU jurisdiction, GDPR compliance is structural, and every deployment is isolated by default.

Get started:

# Install sota CLI
curl -fsSL https://sota.io/install.sh | sh

# Log in
sota login

# Deploy from Dockerfile
sota deploy --port 8080

# Custom domain
sota domains add oz.yourdomain.eu

Multi-paradigm. European-born. Hosted in Europe.

European Connections Summary

WhoInstitutionContribution
Peter Van Roy 🇧🇪UCLouvain (Louvain-la-Neuve)Oz language design, CTMCP textbook
Seif Haridi 🇸🇪KTH Royal Institute of Technology, StockholmMozart distributed system, CTMCP co-author
Gert Smolka 🇩🇪Universität des Saarlandes (Saarbrücken)Oz founding design, constraint programming
DFKI 🇩🇪Deutsches Forschungszentrum für KI, SaarbrückenOriginal Mozart implementation host
Andreas Rossberg 🇩🇪Universität des SaarlandesAlice ML — SML + Oz concurrency
Mozart ProjectSaarland + UCLouvain + KTHOpen-source multi-institution collaboration

Oz/Mozart is the output of a genuine European multi-institution collaboration — German constraint programming expertise from Saarbrücken, Belgian programming language theory from Louvain, and Swedish distributed computing research from KTH. It is the language that proved all paradigms can coexist, built on a continent where multi-national collaboration is the default.


sota.io is EU-native infrastructure for backend services. Deploy your Oz/Mozart application to German servers in minutes — GDPR-compliant, managed PostgreSQL, custom domains included.