Note: some overlap with previous topic “Mojo as a Python superset”, but I think I have different points to make.
Is Mojo an application programming language or a systems programming language? Putting it another way, is Mojo for Python devs or Rust devs?
I ask because Mojo can’t be both. Every previous attempt at creating a universal programming language has failed: PL/I, Ada, Java. There was a time in the 1980s when PC/workstation applications were developed in C/C++, because there wasn’t any alternative, but that ended as soon as better application languages became available. Application developers don’t want the same constructs and concepts as system developers, which is why Python became so popular, so fast. Application developers will even use Visual Basic or PHP if it means they don’t have to use a systems programming language!
I started writing Mojo code at the end of 2024, because I wanted to write HPC code without C/C++. That was about the time Chris Lattner said, on YouTube somewhere, that the goal was to make only necessary changes from Python to Mojo. I gave a talk in Feb 2025 to the local Python User Group, basically “Mojo is a superset of Python and it’s really fast!”
Recently though, there have been changes which, as a Python application developer, do not seem at all necessary to me. There was “alias”, which is not a Python keyword but is a commonly used term, becoming “comptime” because that’s what Zig does? There’s the March 4 2026 “Heads up - explicit std imports” which, once out of alpha, will make Mojo incompatible with just about every Python program in existence.
A problem for me is that developing a new programming language is system programming and requires system programmers. I can’t contribute to a modern compiler backend for CPUs, let alone GPUs. All I can do is complain. (And no I don’t feel good about that.) The problem for Mojo is that programmers tend to develop for themselves, and from my viewpoint as a Python application developer there’s far too much discussion about Rust and not nearly enough about CUDA, let alone Python.
I want to remind everyone involved in Mojo that the number of Python developers who want to write HPC code is at least two orders of magnitude larger than the number of system programmers who want to write code with significant whitespace instead of curly braces. Whether the goal is to sell development tools or simply make developers happy, that should matter.
I am NOT saying that Mojo becoming a systems programming language is a bad thing. Systems programming, especially open source, is important and valuable. I personally am eternally grateful for Linux and Mesa3D. Nor do I think that what Chris Lattner said more than a year ago is a binding commitment to Mojo being a superset of Python. It’s OK to change goals.
So, I’m asking y’all, is Mojo an application programming language or a systems programming language? If the latter, I’ll walk away and you won’t have to put up with me complaining any more.
But if Mojo is for Python programmers, we have a gazillion lines of existing code. Even if Sturgeon’s Law applies to the quality, that’s still a lot of code we don’t want to rewrite.
