Most developers know what arguments and parameters are, even if some use the terms interchangeably. Mojo uses parameter to mean something that’s neither of those. This unique use of parameter can create real teaching and learning friction for new adopters.
We’ve recently been moving the word parameter out of Mojo in favor of comptime. It says what goes in those square brackets and doesn’t collide with existing mental models, unlike parameter. As March draws to a close, this is likely the last window to reconsider what we call the contents of those square brackets.
C++ and Rust call compile-time refinement specialization. That term covers everything Mojo parameters currently do, from concrete types to compile-time values. It gives us a natural noun: spec. A spec clearly signals what goes in those square brackets and avoids the mental-model collision that parameter creates.
I realize “specialization” can refer more narrowly to selecting a more specific implementation. I’m proposing a broader teaching term here. A spec is the thing in square brackets that makes a declaration more specific at compile time.
So I have a question, and I’m asking for help. I’m not really asking whether you struggled with this term. I’m asking whether the next hundred thousand developers will.
What do you think of this change? Would it make Mojo easier to enter, learn, and teach?
Most of the impact would be in error messages, docs pages, docstrings, and code comments—not in Mojo code itself, aside from updating the docstring keyword.
I value your feedback and want to run this by language users who have a stake in how Mojo is taught, discussed, and encountered for the first time. Thank you.