Skip to content

02 — Language & Framework Evaluation

Research date: 2026-04-15

Context

Evaluating programming languages and frameworks for building a large-scale, AI-native, fault-tolerant, atomic HR/workforce management platform. No decision has been made — everything is on the table.

The Three Serious Contenders

1. Elixir/Phoenix (BEAM/OTP) — Score: 9.0/10

AI-Native Fit: Exceptional. GenServer IS an AI agent: stateful process that receives messages, maintains context, responds. Supervision tree IS an agent hierarchy. OTP IS the agent framework — no bolting on required. The Sagents library provides production-ready agent orchestration with LiveView integration and DynamicSupervisor for pools.

Atomic Architecture: Native. OTP applications are the unit of isolation. Umbrella/poncho project structure gives independent OTP apps within one release — or independently deployable releases. Hot code reloading upgrades single modules without VM restart. Feature-level isolation without containers or Kubernetes.

Fault Tolerance: Best-in-class. Supervision trees are the foundational abstraction. "Let it crash" with defined recovery strategies. BEAM built by Ericsson for 99.9999999% uptime. No other runtime offers this natively.

Payroll Precision: ex_money — 28-digit decimal arithmetic with CLDR currency rounding. Explicit payroll support with Ecto composite types.

Real-Time: Phoenix Channels + LiveView. 2M+ concurrent WebSocket connections per node. PubSub built in.

Mobile: LiveView Native (production-ready 2023+). Or Phoenix API + React Native/KMP client.

IRAP/Security: BEAM provides memory safety by design (no buffer overflows, use-after-free, data races). Not on ISM's explicit list of memory-safe languages (names C#, Go, Java, Ruby, Rust, Swift). Would need to argue memory-safety-by-design in IRAP assessment.

AI Assistance Quality: Good and improving. Smaller training corpus than Python/JS/Java. Complex OTP patterns sometimes need correction.

Hiring: Small talent pool globally, tiny in Australia. Need to hire strong devs and train on Elixir (2-4 weeks for experienced devs). AI-assisted development reduces headcount requirement.

Open Source HR Components: None in Elixir. Build from scratch.

PoC Validation: 15/15 patterns validated, 327 tests, 0 failures, all 15 architectural patterns fit naturally.

2. Java/Kotlin + Spring Boot — Score: 8.0/10

AI-Native Fit: Good with Spring AI 2.0. Virtual threads (Loom, production since JDK 21) allow thousands of concurrent agent tasks. Spring AI 2.0 (March 2026) is a full AI application platform. Akka/Pekko provides actor-model supervision trees for OTP-like patterns.

Atomic Architecture: Mature tooling. Spring Modulith for modular monolith with enforcement. Gradle multi-module for build-level isolation. Independent deployment via separate Spring Boot services is well-trodden.

Fault Tolerance: Good. Resilience4j (circuit breakers, retry, rate limiting). Akka/Pekko supervision trees. Not as elegant as OTP but production-proven at massive scale.

Payroll Precision: BigDecimal — the gold standard. Java has run bank backends for 25 years.

Mobile: Kotlin Multiplatform (KMP) + Compose Multiplatform — production-stable 2026. Netflix, McDonald's, Cash App, Google Docs use KMP. Strongest mobile story.

IRAP/Security: Java explicitly listed in ISM as memory-safe. Spring Security is the most mature web security framework. Strongest IRAP story of any option.

AI Assistance Quality: Excellent. Massive training corpus. Spring Boot patterns well-represented.

Hiring: Best in Australia. Largest enterprise talent pool.

3. Go + Temporal — Score: 7.5/10

AI-Native Fit: Good but requires assembly. Goroutines for concurrency, Temporal for durable workflow orchestration. You assemble agent architecture from components rather than having it built in.

Atomic Architecture: Container-based. Static binaries → separate containers. Kubernetes/container model — well-understood but more operational overhead than OTP.

Fault Tolerance: External. No supervision trees. Temporal's durable execution + container restart policies + circuit breaker libraries. Assembled solution, not runtime primitive.

Payroll Precision: shopspring/decimal — solid. Go's strict typing helps.

Mobile: No native story. Pair with React Native, Flutter, or KMP.

IRAP/Security: Go explicitly listed as ISM memory-safe. Strong standard library for cryptography.

AI Assistance Quality: Very good. Simplicity + prevalence = high-quality AI-generated code.

Hiring: Excellent in Australia. Common in infrastructure/cloud space, growing in application dev.

Why the Others Fall Short

Stack Score Disqualifier
Rust 5.0 Development velocity penalty too severe for full platform. Use for specific IRAP-sensitive components.
C#/.NET + Orleans 6.5 Great actor model, broken mobile story (.NET MAUI has constant regressions in 2026).
TypeScript/Node 4.5 0.1 + 0.2 !== 0.3 for payroll. Single-threaded event loop wrong for fault-tolerant agents.
Python 4.0 Best AI/ML ecosystem, worst for everything else. GIL limits concurrency. No fault tolerance.
Polyglot 3.0 Too expensive operationally for small team. Every language = build pipeline + hiring requirement.

AI-Assisted Development Productivity by Language (2026)

  1. Python — 58% adoption, ~90% AI code accuracy, deepest corpus
  2. TypeScript/JavaScript — 66% adoption, best Copilot support
  3. Java/Kotlin — Massive enterprise corpus, 92% Copilot accuracy
  4. Go — Clean syntax helps AI tools, explicit error handling
  5. C#/.NET — Good support, smaller corpus than Java
  6. Elixir — Improving rapidly, dedicated Claude Code skills, smaller corpus
  7. Rust — AI manages ownership/borrow rules but complex patterns fail

Key insight: Elixir's concurrency primitives eliminate entire bug categories that AI tools generate in other languages. The productivity of the language itself matters more than AI assistance quality.

Hybrid Architecture Option

  • Primary: Elixir/Phoenix for core platform, AI agent orchestration, real-time, web UI
  • IRAP components: Go or Java/Kotlin for security-critical services (if ISM explicit listing required)
  • Mobile: Phoenix API + React Native or KMP (LiveView Native if primarily informational)
  • AI/ML: Python service behind gRPC boundary if custom model training needed; Elixir Nx/Bumblebee for inference

The Honest Trade-off

Elixir is technically superior for this specific problem. Also riskiest for hiring and ecosystem.

Java/Kotlin is the safe enterprise choice. Best IRAP/mobile/hiring story. Weaker AI-native fit — you assemble rather than inherit.

Go is the pragmatic middle ground. Maximum operational simplicity with good-enough agent patterns.

What you should NOT do: Stay on PHP/Laravel if AI agents are truly the core architecture. PHP lacks native concurrency primitives, supervision trees, and actor model patterns. The current Laravel app is well-designed for a traditional web app — but "AI agents are both architecture AND user-facing features" is a fundamentally different design center.

Sources

  • Orchestrating AI Agents with Elixir's Actor Model (freshcodeit.com)
  • Sagents - AI Agents in Elixir with OTP (github.com)
  • Why Elixir is Perfect for Building AI Agents at Scale (elixirator.com)
  • Spring Boot 4 and Spring AI 2.0 (medium.com)
  • Temporal + AI Agents (temporal.io)
  • Kotlin Multiplatform 2025-2026 Updates (aetherius-solutions.com)
  • .NET MAUI in 2026 (github.com/dotnet/maui)
  • ISM Guidelines for Software Development March 2025 (cyber.gov.au)
  • ex_money (hexdocs.pm)
  • AI Coding Assistant ROI (index.dev)
  • LiveView Native (github.com)
  • Frappe HRMS (github.com)