BUCKYVERSE

Date: 2025-02-23
Deprecated: 2025-03-10

Status

Deprecated, superseded by ADR-0029

Context

We need a robust scripting language for our build tooling that can handle:

Decision

Historical We initially chose Ruby as our primary build tooling language because:

  1. Strong text processing capabilities

    • Built-in string manipulation
    • Regular expression support
    • Stream processing capabilities
  2. Rich gem ecosystem

    • Extensive package management options
    • Well-maintained testing frameworks (RSpec)
    • Documentation tools
    • CLI utilities
  3. System integration

    • Strong OS interaction capabilities
    • Built-in process management
    • Shell command execution support
  4. Developer experience

    • Clear syntax for build scripts
    • Strong testing culture
    • Excellent debugging tools
    • Built-in logging capabilities

Deprecation Reason

This decision has been deprecated in favor of using Elixir (see ADR-0029) due to:

  1. Need for better concurrency in the build pipeline
  2. Desire to leverage OTP for process supervision and fault tolerance
  3. Better integration with our target deployment environment
  4. Enhanced parallelization capabilities for format generation
  5. Stronger type system through pattern matching
  6. Built-in support for distributed processing

Migration Path

Existing Ruby build tooling will be gradually migrated to Elixir following these steps:

  1. Identify core build functionality
  2. Port to equivalent Elixir modules
  3. Validate feature parity
  4. Run parallel implementations
  5. Switch to Elixir implementation
  6. Remove Ruby code

See ADR-0029 for details on the Elixir implementation strategy.

Historical Consequences

Positive

Negative