Love this intentionality: ” Our open source approach has been deliberate: we’ve found that small and tight-knit design teams (not committees) are the best for finding the “soul” of a language, but that feedback from a broader community is essential to escape an echo chamber. As such, we first open-sourced the Mojo standard library, then released hundreds of thousands of lines of kernel code written in Mojo, tools, and support. We built together with community feedback and public design proposals, and are now open sourcing the compiler. We will continue to open our processes further as Mojo keeps maturing.”
One of my favourite features of Mojo is linear types and how deeply they have been integrated into manual memory management - see:https://x.com/melodyogonna/status/2085089269484343725?s=20.
When I first learned about linear types, my first thought of the use case was making manual allocations and deallocations safer without sacrificing usability, but I didn't know what that could look like; now I do. This is great because in Mojo, pointers are surfaced a lot more than in, say, Rust, but such sharp tooling in a language you expect to be safe by default can be problematic. Linear types, combined with the origin system, give the language a lot of flexibility; it is like using a sharp tool with a safety glove: the tool isn't any less sharp, but the chances of accidentally injuring yourself are reduced.
So I think the permissive license like Apache 2 without opening up for upstream contributions would be the way of future open source development. In a very similar way of SQLite. It definitely will help shield off a bunch of AI generated contributions first and foremost and then, aligning mental model with the human contributions with Mojo leader team.
you can but through a python interpreter in the mojo process so you get the same numpy speed with mojo<->ptyhon interop overhead.
NuMojo is native and also is now starting to support features that numpy can't really do like native GPU execution.
I wonder if the Python-to-Mojo overhead is significant enough where language-native bindings make more sense. I'd be interested in seeing some benchmarks.
This is really exciting. I've been using Mojo off and on for side projects over the last two years.
(copying from some previous Mojo threads) It's got an ownership system adjacent to Rust, comptime similar to Zig, and a first class dependent type system. Even more exciting, is that uses LLVM (to the best of my understanding) in some novel ways and for more optimizations.
Hm, in docs they say that dependent type system is not first class seems.
Is it even dependent? More like refinement types, which seems will be in Rust too.Also HN recently mentioned Rust building similar llvm based integration with GPU.
But compared with Python, Julia, Matlab, R, Rust, C, C++ - Mojo feel relief for working with numerics.
The innovative potential of Mojo would be constrained to relatively niche and senior dev circles until they get a Windows release, which probably won't happen anytime soon. Python keeps the throne for now.
I was excited to try Julia, but then, as I saw it was an interpreted language, with bulky runtime, slow startup times and bloated library sizes - my initial interest quickly faded.
For the same reasons I see languages like Python, Java, C# as inferior.
I indeed don't know about Java, but with C# there are a lot of limitations if you want AOT compilation and you still get the bloated binary and limited performance.
I also, personally, never seen a single project written in either Java or C# that distributes aot binaries.
Especially when it is actually successful at what it was designed to be, a faster Python for data science folks, having gotten enough researchers, more than most toy languages that almost daily drop on HN and Reddit.
In the category of AI/HPC software Mojo aims to displace (which is my industry), I don't know many people who care that much about running Windows. The software I work on may only run as a Docker image or directly in a Linux/WSL. Mojo is hardly the only tool in the space (currently) lacking Windows support.
Senior is the last word in use to describe myself as a developer, personally, and I think it's hard to overstate the current economical significance of this software niche. Granted that it IS a niche and nobody would recommend Mojo for, say, kernels in video games or art editors.
We already could do that with VMWare Workstation and VirtualBox, since at least 2010.
WSL could have been avoided if Microsoft had been more serious about the POSIX subsystem in Windows NT, or later Subsystem for UNIX-based Applications that was available until 2016.
I don't understand this premise. And the more I think about it, the less sense it makes. On the grand scale of things, Windows is the niche platform here. For consumer desktop use cases, it is king, but nobody deploys on it for the use cases that the first version of Mojo is optimised for.
> On the grand scale of things, Windows is the niche platform here.
They plan Windows support: ” Mojo has supported macOS and Linux for years, and Windows developers have been able to use it through WSL. Native Windows support has always been one of our most common requests from developers.
Millions of developers build on Windows every day, across an enormous range of applications and workloads. We believe Mojo can have a meaningful impact across that ecosystem. Bringing Mojo to Windows the right way requires deep expertise in the platform, which is why we’re delighted that the Microsoft Windows team sees the same opportunity we do — and that we’re working together to make it happen.”</i>
Many companies only allow for Windows computers, even if the servers are UNIX like, additionally as proven by NVidia and CUDA, Windows laptops are a great way to get students interested on the technology.
Technically soruce available now with the promise of accepting contributions (thus becoming fully open source) early next year. But since it is an Apache 2 license (like the rest of the LLVM project) you are already allowed to fork and contribute to your own fork right now, just no upstreaming.
For many the closed source nature of the compiler was a knock-out criterion. We will see if Mojo can gain traction now or if it has missed its window of opportunity.
Technically, the criteria for open source is freedom to freely distribute and modify the source code, not to upstream changes. That's a different for thing.
Maybe it is not listed by the OSI, but it is 'open source' in practice, if the source is also in the public domain. The FSF's definition of free software makes more sense not only ideologically, but also because it does not try to be exhaustive.
You're just making up your own definitions of things.
If the complete source is available and distributable under an OSI-approved license, it is absolutely Open Source. Accepting outside contributions is nowhere in the definition of Open Source.
Love this intentionality: ” Our open source approach has been deliberate: we’ve found that small and tight-knit design teams (not committees) are the best for finding the “soul” of a language, but that feedback from a broader community is essential to escape an echo chamber. As such, we first open-sourced the Mojo standard library, then released hundreds of thousands of lines of kernel code written in Mojo, tools, and support. We built together with community feedback and public design proposals, and are now open sourcing the compiler. We will continue to open our processes further as Mojo keeps maturing.”
One of my favourite features of Mojo is linear types and how deeply they have been integrated into manual memory management - see:https://x.com/melodyogonna/status/2085089269484343725?s=20. When I first learned about linear types, my first thought of the use case was making manual allocations and deallocations safer without sacrificing usability, but I didn't know what that could look like; now I do. This is great because in Mojo, pointers are surfaced a lot more than in, say, Rust, but such sharp tooling in a language you expect to be safe by default can be problematic. Linear types, combined with the origin system, give the language a lot of flexibility; it is like using a sharp tool with a safety glove: the tool isn't any less sharp, but the chances of accidentally injuring yourself are reduced.
So I think the permissive license like Apache 2 without opening up for upstream contributions would be the way of future open source development. In a very similar way of SQLite. It definitely will help shield off a bunch of AI generated contributions first and foremost and then, aligning mental model with the human contributions with Mojo leader team.
As long as it was proprietary, I could ignore it. Now, I guess I have to learn a little something about it.
Is this a case of of Qualcomm commoditizing their complements? Does Mojo have a potential for disrupting Nvidia's current market position?
https://www.joelonsoftware.com/2002/06/12/strategy-letter-v/
Very exciting. Closed source was one of the main things making me not try it out yet.
Any good resources for getting started? And anything on doing NumPy/SciPy-like stuff in it?
NuMojo is the closest thing in the ecosystem to numpy and the final aim is offer numpy-like experience. https://github.com/Mojo-Numerics-and-Algorithms-group/NuMojo
Can't you just use Numpy directly in Mojo?
you can but through a python interpreter in the mojo process so you get the same numpy speed with mojo<->ptyhon interop overhead. NuMojo is native and also is now starting to support features that numpy can't really do like native GPU execution.
I wonder if the Python-to-Mojo overhead is significant enough where language-native bindings make more sense. I'd be interested in seeing some benchmarks.
https://mojolang.org is the best spot for getting started generally. numojo is the closest thing to numpy right now. You can check out more packages here: https://github.com/modular/modular-community/tree/main/recip...
This is really exciting. I've been using Mojo off and on for side projects over the last two years.
(copying from some previous Mojo threads) It's got an ownership system adjacent to Rust, comptime similar to Zig, and a first class dependent type system. Even more exciting, is that uses LLVM (to the best of my understanding) in some novel ways and for more optimizations.
Hm, in docs they say that dependent type system is not first class seems.
Is it even dependent? More like refinement types, which seems will be in Rust too.Also HN recently mentioned Rust building similar llvm based integration with GPU.
But compared with Python, Julia, Matlab, R, Rust, C, C++ - Mojo feel relief for working with numerics.
> But compared with Python, Julia, Matlab, R, Rust, C, C++ - Mojo feel relief for working with numerics.
Out of those, Julia is the only one that combines Multiple Dispatch and native code, both important for numerics.
Such an exciting time for Mojo, I don't think people realize just yet the innovation being brought to fore here.
The innovative potential of Mojo would be constrained to relatively niche and senior dev circles until they get a Windows release, which probably won't happen anytime soon. Python keeps the throne for now.
They announced a partnership with Microsoft today.
That's quite promising - https://www.modular.com/blog/modcon-announcements#:~:text=Wi...
And Julia as well.
It's a sad time to be a fan of Julia-- everyone forgets it's there.
I was excited to try Julia, but then, as I saw it was an interpreted language, with bulky runtime, slow startup times and bloated library sizes - my initial interest quickly faded.
For the same reasons I see languages like Python, Java, C# as inferior.
Java and C# definitely don't belong on the same basket.
And inferior to what, the crab?
Inferior to languages that compile to native binaries, not burning dramatically more cpu cycles than necessary.
Showing your ignorance regarding Java and C# ecosystems and available compilers on that reply.
I indeed don't know about Java, but with C# there are a lot of limitations if you want AOT compilation and you still get the bloated binary and limited performance.
I also, personally, never seen a single project written in either Java or C# that distributes aot binaries.
You mean bloated as Go, the superior language?
The limited performance of game engines like the one used by Capcom for Devil May Cry on the Playstation 5?
Java binaries deployed in embedded systems by PTC and Aicas are AOT compiled.
Julia compiles to native code, same as C++/Rust.
Especially when it is actually successful at what it was designed to be, a faster Python for data science folks, having gotten enough researchers, more than most toy languages that almost daily drop on HN and Reddit.
In the category of AI/HPC software Mojo aims to displace (which is my industry), I don't know many people who care that much about running Windows. The software I work on may only run as a Docker image or directly in a Linux/WSL. Mojo is hardly the only tool in the space (currently) lacking Windows support.
I'd put you in the "relatively niche and senior" bucket without even thinking.
I would put you in the clueless bucket without even thinking
Senior is the last word in use to describe myself as a developer, personally, and I think it's hard to overstate the current economical significance of this software niche. Granted that it IS a niche and nobody would recommend Mojo for, say, kernels in video games or art editors.
The niche is so big that Microsoft invented WSL to run Linux programs on Windows.
We already could do that with VMWare Workstation and VirtualBox, since at least 2010.
WSL could have been avoided if Microsoft had been more serious about the POSIX subsystem in Windows NT, or later Subsystem for UNIX-based Applications that was available until 2016.
I don't understand this premise. And the more I think about it, the less sense it makes. On the grand scale of things, Windows is the niche platform here. For consumer desktop use cases, it is king, but nobody deploys on it for the use cases that the first version of Mojo is optimised for.
> On the grand scale of things, Windows is the niche platform here.
They plan Windows support: ” Mojo has supported macOS and Linux for years, and Windows developers have been able to use it through WSL. Native Windows support has always been one of our most common requests from developers.
Millions of developers build on Windows every day, across an enormous range of applications and workloads. We believe Mojo can have a meaningful impact across that ecosystem. Bringing Mojo to Windows the right way requires deep expertise in the platform, which is why we’re delighted that the Microsoft Windows team sees the same opportunity we do — and that we’re working together to make it happen.”</i>
—- https://www.modular.com/blog/modcon-announcements
Many companies only allow for Windows computers, even if the servers are UNIX like, additionally as proven by NVidia and CUDA, Windows laptops are a great way to get students interested on the technology.
Related post with relevant pr: https://news.ycombinator.com/item?id=49347777
Related:
Mojo 1.0
https://news.ycombinator.com/item?id=49261128
"Modular Confidential (obviously), May 14, 2022"
lol, feels like espionage
https://github.com/modular/modular/blob/main/KGEN/docs/Desig...
Compiler walkthrough
https://github.com/modular/modular/blob/main/KGEN/docs/MojoC...
Technically soruce available now with the promise of accepting contributions (thus becoming fully open source) early next year. But since it is an Apache 2 license (like the rest of the LLVM project) you are already allowed to fork and contribute to your own fork right now, just no upstreaming.
For many the closed source nature of the compiler was a knock-out criterion. We will see if Mojo can gain traction now or if it has missed its window of opportunity.
Technically, the criteria for open source is freedom to freely distribute and modify the source code, not to upstream changes. That's a different for thing.
https://opensource.org/osd
It’s open source under the Apache 2 license, not source available.
Accepting contributions is not required to be open source.
SQLite doesn’t accept contributions from random people either [0] (though you could argue being public domain isn’t being open source).
Anyway, this is great, I was waiting for this to take the language for a spin! Congrats to the Mojo team!
[0]: https://simonwillison.net/2025/Dec/29/copyright-release/
Maybe it is not listed by the OSI, but it is 'open source' in practice, if the source is also in the public domain. The FSF's definition of free software makes more sense not only ideologically, but also because it does not try to be exhaustive.
You're just making up your own definitions of things.
If the complete source is available and distributable under an OSI-approved license, it is absolutely Open Source. Accepting outside contributions is nowhere in the definition of Open Source.