The home of the SCRUM programming language. Designed for being a language which is understandable for business as well as for developers and losely inspired by the Scrum (software development) framework (hence the name of course).
- Meet Scrummy! π
- Why?
- Revolutionary #INTENT: Natural Language Programming π
- Hello World
- Running A Scrum Program
- IDE Support
- Language Reference
- API Definitions
- Error Handling
- Documentation
- Credits
Scrummy is the official mascot of the SCRUM programming language! This friendly companion represents the approachable and collaborative spirit of SCRUM. With those big eyes and a cheerful smile, Scrummy is here to guide you through your journey of becoming a true SCRUM MASTER PROGRAMMER!
So you can become an actual Master of SCRUM programming instead of being just a 'Scrum Master' (without even coding)! Or in other words a SCRUM MASTER PROGRAMMER!
Inspired by being a Rockstar developer (the programming language developed by Dylan Beattie) and wanting to really comprehend the creation and work of an actual programming language I decided to develop my own. As by origin being a Java Developer and because everyone has Java on his computer I used Java as base for the new language.
SCRUM introduces a groundbreaking approach to programming: the #INTENT construct that represents a new level in programming languages. Write natural language descriptions that are automatically transformed into executable code at compile time using Large Language Models (LLMs).
Traditional approach:
// You write explicit implementation
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your age: ");
int age = scanner.nextInt();
int birthYear = 2024 - age;
System.out.println("You were born in: " + birthYear);SCRUM #INTENT approach:
USER STORY "ComputeBirthYear"
#INTENT
I want to ask the user for their current age.
The input will be used to calculate and display their birth year
based on the current year 2024.
#END INTENT
END
The #INTENT block automatically becomes fully functional SCRUM code at compile time!
- Write Intent: Describe what you want in natural language
- Compile-time AI: LLM transforms your intent into valid SCRUM syntax
- Auto-validation: Generated code is verified before execution
- Seamless Execution: Your program runs as if you wrote the code manually
- OpenAI (GPT-4o, GPT-4o-mini, o1, o3-mini)
- Anthropic Claude (Sonnet 4, Sonnet 4.5)
- Groq (Ultra-fast, free tier available)
- Cerebras (High performance)
- Together.ai (Multiple open-source models)
- Ollama (Local, completely free)
Quick start with Groq (free):
export SCRUM_API_KEY="your-groq-key" # Free at console.groq.com
export SCRUM_API_BASE_URL="https://api.groq.com/openai/v1"
scrum examples/IntentComputeBirthYear.scrumπ Complete #INTENT Guide: Getting Started with Intents | LLM Configuration
A glance of the scrum programming language using the 'Hello World' example:
#SPRINTGOAL Deliver our first Scrum program
EPIC "SampleStories"
USER STORY "HelloWorld"
#REVIEW Our first Scrum Program
SAY "Hello world!"
END OF STORY
END OF EPIC
Experience the future of programming with natural language:
EPIC "HelloWorldApp"
USER STORY "Greeting"
#INTENT
I want to create a simple greeting that displays "Hello from SCRUM!" to the user.
#END INTENT
END OF STORY
END OF EPIC
app IS NEW HelloWorldApp
app::Greeting USING []
The #INTENT block becomes real executable code automatically! π€β¨
The recommended way to run SCRUM programs is to install the SDK:
- Download the latest SDK from GitHub Releases
- Install using the provided installer script:
- Windows: Run
installers\install.bat(as Administrator) - Linux/macOS: Run
installers/install.sh(with sudo for system-wide)
- Windows: Run
- Verify installation:
scrum --version - Run programs:
scrum examples/HelloWorld.scrum
SCRUM provides a comprehensive CLI with powerful features:
# Get help and see all available options
scrum --help
# View built-in examples and sample code
scrum --examples
# Validate syntax without execution (perfect for CI/CD)
scrum --validate myprogram.scrum
# Run with detailed debugging information
scrum --debug myprogram.scrum
# Check version and environment details
scrum --versionAvailable Commands:
-v, --version- Display version and environment information-h, --help- Show comprehensive help with examples--examples- View available examples with sample code-d, --debug- Enable debug mode with detailed error traces-c, --validate- Validate syntax only (no execution)
To upgrade to a newer version:
# Method 1: Quick upgrade (replaces existing installation)
# Download new SDK and run installer directly
# Method 2: Side-by-side installation for testing
# Windows: installers\install.ps1 -InstallDir "C:\scrum-beta"
# Linux: ./installers/install.sh --install-dir /opt/scrum-beta
# Switch versions by updating SCRUM_HOME environment variableπ Complete installation guide: See SDK-INSTALLATION.md
Example code files can be found within SCRUM Examples.
The SCRUM Examples can be executed and debugged using the ScrumLanguageTest. The project is built upon Java 25 (LTS).
To run SCRUM programs from the development directory (for contributors and developers):
Navigate to Development and run:
# Windows Command Prompt
scrum.bat examples\HelloWorld.scrum
# Windows PowerShell
.\scrum.bat examples\HelloWorld.scrum
# Linux/macOS
./scrum.sh examples/HelloWorld.scrumYou can use the SCRUM Examples for testing purposes.
If you want to run the code from anywhere, you can create a SCRUM_HOME variable and add it to the system varaiables. Set the SCRUM_HOME environment variable pointing to your SCRUM installation and add this variable into your PATH variable adding %SCRUM_HOME%.
SCRUM language extensions are available for popular IDEs to provide syntax highlighting, code folding, and language support.
Get syntax highlighting and language support in Visual Studio Code:
Quick Install (Windows):
cd ide-extensions
.\install-vscode.ps1Or double-click ide-extensions\install-vscode.bat and restart VS Code.
Features:
- Syntax highlighting for keywords, directives, and operators
- Code folding for Sprint/Story/API blocks
- Auto-closing brackets and quotes
- Comment toggling (Ctrl+/)
- Bracket matching
Get SCRUM language support in IntelliJ IDEA:
Build and Install:
cd ide-extensions
.\install-intellij.ps1Then install the generated plugin via Settings β Plugins β Install Plugin from Disk.
Features:
- File type recognition for
.scrumfiles - Syntax highlighting
- Code structure view
- Custom file icon
- Comment support
For detailed installation instructions, manual setup, and development guides, see IDE Extensions Documentation.
Traditional Programming Constructs:
- Business-friendly syntax using Scrum terminology (EPIC, USER STORY, etc.)
- Variables, operators, control flow with intuitive keywords
- HTTP REST API definitions with declarative syntax
- Comprehensive error handling with "Scrum Impediment" reporting
Revolutionary AI-Powered Programming:
- #INTENT blocks: Write natural language that becomes executable code
- Multi-provider LLM support: OpenAI, Anthropic, Groq, Ollama, and more
- Automatic fallback chains: Seamlessly switch providers for reliability
- Compile-time transformation: AI code generation with validation
For complete syntax documentation including operators, keywords, control structures, and data types, see the Language Reference.
SCRUM supports first-class HTTP API definitions using declarative syntax. See the complete API Definitions documentation for detailed information on:
- Defining APIs with base paths
- Creating endpoints with HTTP methods
- Executable endpoints with WHEN REQUEST blocks
- Complete API examples
SCRUM features Scrum-inspired error reporting that transforms technical exceptions into narrative-style impediment messages using familiar Scrum terminology.
When a USER STORY encounters an error during execution, SCRUM reports it as an IMPEDIMENT that blocked the story from completing:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCRUM IMPEDIMENT β USER STORY COULD NOT BE COMPLETED β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
FILE DivisionByZero.scrum, LINE 3
DURING EXECUTION OF THIS STORY I TRIED TO:
result IS a / b
BUT I ENCOUNTERED A BLOCKER:
Division by zero is not allowed
IMPEDIMENT CODE: SCRUM-RUNTIME-ARITH-001
Parse and syntax errors are reported as impediments discovered during BACKLOG REFINEMENT:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCRUM IMPEDIMENT β BACKLOG ITEM NOT READY β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
FILE billing.scrum, LINE 8, COLUMN 5
DURING BACKLOG REFINEMENT I COULD NOT UNDERSTAND THIS PART:
I WANT TO DEFINE ENDPOINT "GetInvoices"
BECAUSE:
Expected 'METHOD IS' after endpoint name
IMPEDIMENT CODE: SCRUM-SYNTAX-ENDPOINT-001
SCRUM uses structured impediment codes for different error categories:
Runtime Impediments:
SCRUM-RUNTIME-ARITH-001- Arithmetic errors (division by zero, overflow)SCRUM-RUNTIME-NAME-001- Undefined EPIC, USER STORY, or API referencesSCRUM-RUNTIME-TYPE-001- Type mismatch errorsSCRUM-RUNTIME-ITERATION-001- Iteration errors (non-iterable values)SCRUM-RUNTIME-PROPERTY-001- Property access errorsSCRUM-RUNTIME-UNKNOWN-001- Uncategorized runtime errors
Syntax Impediments:
SCRUM-SYNTAX-TOKEN-001- Unrecognized tokens or charactersSCRUM-SYNTAX-STRUCTURE-001- Misplaced or unfinished EPIC/USER STORYSCRUM-SYNTAX-ENDPOINT-001- Invalid API endpoint definitionSCRUM-SYNTAX-EXPRESSION-001- Invalid expression or operatorSCRUM-SYNTAX-UNEXPECTED-001- Unexpected tokenSCRUM-SYNTAX-UNEXPECTED-001- Unexpected tokenSCRUM-SYNTAX-UNKNOWN-001- Uncategorized syntax errors
For development and debugging, you can enable full Java stack traces alongside Scrum-style messages:
java -Dscrum.debug=true -jar scrum-language-1.2.0.jar yourfile.scrumComplete documentation is available in the docs/ directory:
- Language Reference - Complete SCRUM syntax and semantics
- API Definitions - REST API integration capabilities
- SDK Installation Guide - Install SCRUM globally on your system
- Quick Reference - Command cheat sheet
- Getting Started with Intents - Revolutionary natural language programming
- LLM Configuration - AI service setup and provider options
- Fallback Chain Implementation - Multi-provider reliability
- Release Process - Step-by-step guide for releasing new SDK versions
- SDK Implementation - Technical architecture details
If you're contributing to the SCRUM language:
- Release Process - Step-by-step guide for releasing new SDK versions
- Use the automated release scripts:
release.bat,release.ps1, orrelease.sh - Follow semantic versioning (MAJOR.MINOR.PATCH)
- All releases are automatically published to GitHub via GitHub Actions
The base code started from a sample project of @alexandermakeev toy-language. A very fine starting base to get a good comprehension of developing a new programming language. The original version of the SCRUM programming language was developed and designed by @janvanwassenhove (aka mITy.John - follow mITy.John on Instagram).
Check out the blog post on mITy.John for more information on the development of the SCRUM programming language or other projects.
Since SCRUM is built on top of Java, Scrummy and Duke (Java's mascot) are best friends! This friendship symbolizes how SCRUM leverages the power and stability of the Java platform while bringing its own unique, business-friendly syntax to the world of programming.
Copyright (c) 2023-2025 Jan Van Wassenhove
Licensed under terms specified in LICENSE file.


