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)¶
- Python — 58% adoption, ~90% AI code accuracy, deepest corpus
- TypeScript/JavaScript — 66% adoption, best Copilot support
- Java/Kotlin — Massive enterprise corpus, 92% Copilot accuracy
- Go — Clean syntax helps AI tools, explicit error handling
- C#/.NET — Good support, smaller corpus than Java
- Elixir — Improving rapidly, dedicated Claude Code skills, smaller corpus
- 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)