Mojo finally went open source last week, three years after the performance-focused programming language first promised it would. Modular released the compiler and toolchain under an Apache 2 license, following the language’s 1.0 release.
The delay isn’t the interesting part. What matters is what changed along the way.
When Mojo launched in May 2023, the pitch was seductive: a Python superset that could match C++ performance for systems programming while letting developers reuse existing Python code. You’d get the syntax you already know with the speed you actually need.
That plan changed around August 2025. Current Mojo is Python-inspired, but it’s not a superset anymore. You can’t drop Python code into Mojo and expect it to work. The syntactic similarities are still there, but true compatibility is gone.
This matters because compatibility was the original unlock. Learning a new systems language is hard. Learning one that looks like Python and runs your existing code? That’s an easier sell. Without it, Mojo is competing directly with Rust, Go, and Zig for mindshare, not bootstrapping an ecosystem from Python’s.
The open source release includes the full compiler toolchain, so developers can build and contribute instead of waiting for Modular to ship features. The 1.0 designation suggests the language is stable enough for production use, which is significant for a systems language this young.
Modular, the company behind Mojo, was acquired by Qualcomm at some point between the original announcement and now. That changes the incentive structure. Qualcomm cares about edge computing and mobile performance, which aligns with Mojo’s low-level focus but might constrain where the language evolves.
If you’re writing performance-critical code and want Python-like syntax without Python-like speed penalties, Mojo’s worth evaluating now. The combination of 1.0 stability and open source availability means you’re not betting on a closed corporate project anymore.
The language targets the same space as Rust but with less ceremony around memory safety. Whether that’s a feature or a bug depends on your priorities. If you want the type system to prevent entire classes of errors, stick with Rust. If you want performance without fighting the borrow checker, Mojo offers a different tradeoff.
If you’re already committed to Rust, Go, or Zig, nothing here changes your world. Mojo doesn’t do anything those languages can’t; it just offers different ergonomics.
Losing Python compatibility makes migration harder than originally promised. You can’t gradually rewrite hot paths in Mojo while keeping the rest in Python, at least not seamlessly. You’re doing a full language port, which is a much bigger commitment.
This probably explains why adoption has been slow despite the initial hype. Developers who wanted Python performance have options now (PyPy, Numba, Cython) that don’t require learning new semantics. Developers who need true systems performance already picked Rust or stayed with C++.
Mojo’s window is narrower than it looked in 2023. The open source release helps, but it doesn’t fix the positioning problem. A Python-like language is less compelling when it’s not actually Python-compatible.
Still, the tooling is out there now. If you’re curious about what high-performance Python could have looked like, you can clone the repo and see for yourself.
One email at dawn. The five stories that mattered, with the bits removed and the meaning kept. Free, for now.