whatisgithub

What is souther?

kawasima/souther — explained in plain English

Analysis updated 2026-05-18

22JavaAudience · developerComplexity · 4/5Setup · hard

In one sentence

A small JVM language for writing business data rules and behaviors that compile down into working Java code.

Mindmap

mindmap
  root((souther))
    What it does
      Small JVM language for business rules
      Compiles specs into Java code
      Enforces data constraints
    Tech stack
      Java
      Maven
      JDK 25 toolchain
    Use cases
      Model approval or rejection outcomes
      Enforce value constraints on data
      Separate business rules from databases
    Audience
      Java developers
      Domain modeling teams

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Model business rules like approval or rejection of a request as explicit data types.

USE CASE 2

Enforce value constraints, such as amounts that can never go negative, at the point data is created.

USE CASE 3

Keep outside dependencies like databases or clocks separate from core business logic.

USE CASE 4

Generate Java classes from a specification file for use in a Spring Boot or jOOQ project.

What is it built with?

JavaMavenJDK 25

How does it compare?

kawasima/southerautismdevelopment/autism-clientfal1winter/knowledge-rag-agent-platform
Stars222222
LanguageJavaJavaJava
Setup difficultyhardhardhard
Complexity4/53/55/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires JDK 25 and Maven as the build toolchain, even though generated code runs on Java 21.

So what is it?

Souther is a small programming language built to run on the Java platform. It is meant for describing the rules of a business, such as what a piece of data is allowed to look like and what states something can move through, and then turning those rules into working Java code. In Souther you write two main things: data and behavior. Data describes the shape of information, along with constraints on what values are valid, so an amount of money might be required to never go negative. Behavior describes an action, what it takes in and what outcomes it can produce, such as a travel request being either accepted or rejected. Souther checks these constraints every time a piece of data is created, so invalid data cannot slip through unnoticed. One idea the project emphasizes is that outcomes like rejection are treated as ordinary results, not as errors or exceptions. A behavior that can either approve or reject something simply returns one of two named outcomes, and the rest of the program handles both cases as normal data rather than as something going wrong. Souther deliberately keeps outside the world, such as databases, clocks, or web requests, out of its own code. Instead, a behavior can declare that it needs something from the outside world, and the surrounding Java program is responsible for supplying it. This keeps the core business rules separate from the technical details of how the system talks to a database or the internet. To use it, you need JDK 25 and Maven to build the project, though the code it generates can run on the older Java 21. It includes a command line tool that can compile these rule files into Java class files, or run a single business rule directly against some input data to see the result, without writing any Java yourself. The language is intentionally limited: it does not support exceptions, null values, or arbitrary calls into the wider Java ecosystem, keeping the model simple and predictable. Documentation exists mainly in Japanese, alongside English examples and design notes in the repository.

Copy-paste prompts

Prompt 1
Help me write a Souther data and behavior definition for a simple approval workflow.
Prompt 2
Explain how Souther's invariant checks differ from writing validation code by hand in Java.
Prompt 3
Walk me through building this project with Maven and running the souther-cli tool on an example file.
Prompt 4
Show me how a Java Spring Boot app would inject a database dependency into a Souther behavior.

Frequently asked questions

What is souther?

A small JVM language for writing business data rules and behaviors that compile down into working Java code.

What language is souther written in?

Mainly Java. The stack also includes Java, Maven, JDK 25.

How hard is souther to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is souther for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.