They could’ve at least output a compiler warning for all Int.__truediv__ calls, enabled by default at least until Mojo v1 is released.
It would be good if we could get detailed documentation with examples on the Origin system.
- Practical examples of basic and advance usage
- Known limitations and how to work around those limitations
- Concrete future plans for improvements
I’m concerned that the origin system, which seems to be a cornerstone of Mojo, is not as fleshed-out as I had hoped it would be at this stage, given that v1.0 should be released at some point this year.
If v1.0 is meant to signal some level of stability, then proper detailed documentation is going to be proof of stability (or at least proof of commitment to functionality)
If people are going to be convinced to adopt Mojo, it’s going to be based on the quality of the documentation - Even breaking changes are fine, as long as it is properly documented.
Currently, for some features, there is very little documentation beyond basic usage.
Other features currently lack documentation entirely (e.g. closures).
Users have to dig around the standard library to deduce how features are meant to be used.
I would suggest Modular does one of the following:
- Either have a dedicated group of people focused on documentation.
- Or give a small trusted group of community members more detailed access, to the extent they can write official language documentation.
Keeping with the “Wait What”:
If v1.0 is published, the general public is going to assume a level of stability that, we as avid followers of Mojo, know is not going to be there, because Modular wants to be able to change things (which is fine).
But the issue is that there is going to be frustration from the general public if v1.0 is released with limited stability and little documentation.
We want to avoid "Wait, what? This is v1.0 but the API keeps changing and the docs don’t help."
Note that some origin work is deferred to phase 2 of the roadmap: Mojo roadmap | Modular
A literal Wait What: the first time I saw the {} used as a constructor. I still don’t know what it’s called, but it’s super useful.
They are called initializer lists (C++ heritage).
At this point it’s hard to pick the biggest “wait, what?” moment. They just dropped a new one: Proposal: Bounds checking and removing negative indexing