The xord/all repository is a monorepo containing the complete xord library ecosystem—a unified creative coding and game development framework for Ruby. This repository serves as the central development location for all main libraries developed by xord, providing integrated development while maintaining the ability to distribute each library as a standalone package.
The framework enables developers to create graphics applications, audio synthesis programs, interactive user interfaces, Processing-compatible creative coding sketches, and sprite-based games using Ruby. The system spans from low-level C++ libraries with Ruby bindings to high-level game engines and application frameworks.
Scope: This page provides a high-level overview of the entire xord/all monorepo, including the library hierarchy, repository structure, and deployment models. For detailed information about specific subsystems, see:
Sources: README.md1-55 rubysketch/rubysketch.gemspec1-38 processing/processing.gemspec1-37 reflex/reflex.gemspec1-39
The xord/all framework is organized as a hierarchical stack of libraries, where each layer builds upon the capabilities of the layers below it. The architecture follows a clear dependency graph, enabling modular development and selective usage of components.
Library Dependency Hierarchy
The dependency relationships are explicitly defined in each library's gemspec file. Each library specifies its dependencies with version constraints to ensure compatibility.
Sources: rubysketch/rubysketch.gemspec28-33 processing/processing.gemspec28-32 reflex/reflex.gemspec28-30 rays/rays.gemspec28-29 beeps/beeps.gemspec28-29 rucy/rucy.gemspec28
| Library | Gem Name | Key Classes/Modules | Purpose | Current Version |
|---|---|---|---|---|
| xot | xot | Xot::Rake, Xot::Hookable | Foundation utilities and Rake-based build system | 0.3.9 |
| rucy | rucy | Rucy::Value, Rucy::Class, Rucy::Module | Ruby-C++ bridge for type conversion and extension development | 0.3.9 |
| rays | rays | Rays::Painter, Rays::Image, Rays::Polygon, Rays::Shader | OpenGL graphics rendering engine | 0.3.9 |
| beeps | beeps | Beeps::Processor, Beeps::Sound, generators/filters | Audio synthesis and processing using OpenAL | 0.3.9 |
| reflex | reflexion | Reflex::Window, Reflex::View, Reflex::Application | Cross-platform GUI framework with Box2D physics | 0.3.10 |
| processing | processing | Processing::Context, Processing::GraphicsContext, Processing::Window | Processing/p5.js-compatible creative coding API | 1.1.13 |
| rubysketch | rubysketch | RubySketch::Sprite, RubySketch::SpriteWorld, RubySketch::Sound | Sprite-based game engine built on Processing | 0.7.14 |
| reight | reight | Reight::Runner, Reight::Map, map editors | Application framework for content creation | (varies) |
| cruby | N/A (framework) | CRuby.xcframework, Objective-C bridge | Static Ruby runtime for iOS/macOS apps | (varies) |
Sources: xot/VERSION1 rays/VERSION1 reflex/VERSION1 processing/VERSION1 rubysketch/VERSION1 reflex/reflex.gemspec16
All libraries in the xord ecosystem maintain synchronized versioning for core dependencies. As of the current versions, libraries require:
>= 3.0.0 (specified in all gemspec files)xot ~> 0.3.9, rucy ~> 0.3.9rays ~> 0.3.9, reflexion ~> 0.3.10processing ~> 1.1 with minimum >= 1.1.13These version constraints ensure API compatibility across the entire stack.
Sources: rubysketch/rubysketch.gemspec26-33 processing/processing.gemspec26-32 reflex/reflex.gemspec26-30 rays/rays.gemspec26-29
The xord/all repository uses a flat directory structure where each library occupies a top-level subdirectory:
xord/all/
├── xot/ # Foundation utilities
├── rucy/ # Ruby-C++ bridge
├── rays/ # Graphics engine
├── beeps/ # Audio engine
├── reflex/ # UI framework
├── processing/ # Processing API
├── rubysketch/ # Game engine
├── reight/ # Application framework
├── cruby/ # Embedded Ruby framework
├── Rakefile # Root build orchestration
├── README.md # Repository overview
├── LICENSE # MIT License
└── CONTRIBUTING.md # Contribution guidelines
Each library subdirectory contains:
lib/ - Ruby source codeext/ - C++ native extension code (where applicable)include/ - C++ header filessrc/ - C++ implementation filestest/ - Test suiteRakefile - Build configuration using Xot::RakeVERSION - Version number fileChangeLog.md - Changelog*.gemspec - Gem specificationSources: README.md1-55
The monorepo uses git subtree to maintain bidirectional synchronization with standalone GitHub repositories. This enables:
xord/allgithub.com/xord/<library>Git Subtree Operations
The root Rakefile provides tasks for managing subtree operations:
rake subtree:push - Push changes from monorepo to standalone repositoriesrake subtree:pull - Pull changes from standalone repositories into monorepoSources: README.md15-19
The xord framework supports two distinct deployment models, allowing the same Ruby code to run on standard desktop platforms or be embedded in iOS/macOS applications.
In the standard deployment model, libraries are distributed as Ruby gems that can be installed via RubyGems.org:
Native Extension Loading Chain
Installation:
Supported Platforms:
.bundle extensions, Cocoa windowing.dll extensions, Win32 API.so extensions, X11 windowingFile Extensions by Platform:
rays.so, beeps.so, reflex.sorays.bundle, beeps.bundle, reflex.bundlerays.dll, beeps.dll, reflex.dllSources: rays/rays.gemspec39 beeps/beeps.gemspec39 reflex/reflex.gemspec38 processing/processing.gemspec1-37 rubysketch/rubysketch.gemspec1-38
The cruby project enables embedding the entire Ruby runtime and xord libraries into iOS and macOS applications as a static XCFramework:
CRuby XCFramework Architecture
Key Components:
startRuby(), evalRuby(), requireRuby() methods.a filesTypical Usage:
This deployment model enables distributing Ruby applications through the iOS App Store without requiring a separate Ruby installation.
Sources: Based on cruby section in high-level architecture diagrams
| Language/Tool | Usage | Key APIs |
|---|---|---|
| C++ | Core library implementation | OpenGL calls, Box2D API, OpenAL API |
| Ruby 3.0+ | High-level APIs, user scripts | Processing::Context, RubySketch::Sprite |
| Objective-C | Platform integration (macOS/iOS) | NSWindow, UIViewController, CRuby bridge |
| GLSL | Shader programs | Rays::Shader fragment/vertex shaders |
| ERB | Code generation templates | Build-time C++ code generation |
Graphics Stack:
rays.gemspec metadataglm::vec3, glm::mat4)Audio Stack:
beeps.gemspec metadataPhysics Stack:
b2World, b2Body, b2Fixture)MIDI/Input:
Platform Windowing:
NSWindow, NSView, NSOpenGLContext)UIWindow, UIViewController, UIView)HWND, WGL)Window, XEvent)Package Manager Dependencies:
Sources: rays/rays.gemspec37 beeps/beeps.gemspec37 reflex/ChangeLog.md261 rubysketch/ChangeLog.md6
The monorepo provides unified development commands through the root Rakefile, which delegates to Xot::Rake build framework:
Build Pipeline and Rake Tasks
Common Rake Tasks:
rake packages - Install system dependencies (GLEW, OpenAL, etc.) via package managerrake vendor - Build vendor libraries (Box2D, RtMidi, etc.) from sourcerake lib - Compile C++ libraries to static .a filesrake ext - Build Ruby C-extensions to shared libraries (.so/.bundle/.dll)rake test - Run Test::Unit suites for all librariesrake gems - Build gem packages for distributionrake changelog:update - Generate ChangeLog.md files from git commitsrake subtree:push - Sync changes to standalone repositoriesrake upload - Push gems to RubyGems.orgBuild Configuration: Each library's Rakefile uses Xot::Rake module for cross-platform compilation. The build system handles:
Example Development Session:
Sources: README.md26-45 xot/ChangeLog.md59-63
The repository uses GitHub Actions to test all components across a comprehensive matrix:
| Platform | Ruby Versions | Test Coverage |
|---|---|---|
| macOS | 3.2, 3.3, 3.4 | Full test suite for all libraries |
| Windows | 3.2, 3.3, 3.4 | Selective tests (xot, rucy, rays, reflex) |
| Ubuntu | 3.2, 3.3, 3.4 | Build verification |
Total Test Matrix: 9 parallel jobs (3 platforms × 3 Ruby versions)
Build status is tracked via badges in the README: !Build Status
Sources: README.md5 Based on diagram analysis (CI/CD section)
All libraries in the xord/all ecosystem are released under the MIT License, allowing free use, modification, and distribution with minimal restrictions. Contributors agree that their contributions will be licensed under the same terms.
Sources: LICENSE1-21 CONTRIBUTING.md49-56
Refresh this wiki