Recently, we’ve experienced a few changes that have sparked conversation and controversy about design choices and the state of Zig. I wanted to create this thread so people can voice their thoughts on the state of the project.
First, there’s a recurring theme lurking in these topics that seems to find it’s way back to the surface and I think it’s good to talk about that issue directly.
- Zig is not version 1.0 yet
This point has been brought up on several occasions to remind users that major changes are ongoing. For some, this is a reasonable response that speaks to rationality and temperament towards change. For others, it seems like an excuse for loading in features that seem misleading or obfuscating. I’d like to start by exploring the pros and cons of this response.
Pros:
It’s technically true. The language has not reached the version of 1.0 and is still under heavy development.
The benefit of this attitude is that it encourages us not to be weighed down by the baggage of day-zero design philosophies and choices. There are many language choices (such as nullptr
) that people wish they could go back in time and change.
Keeping your expectations realistic is important for developing languages because it enables you to measure the magnitude of project that is appropriate for this stage of development. An interesting post that I saw from @kristoff in a recent discussion was as follows:
In that post, @kristoff also made some practical advisements for users that want to introduce Zig into their company ecosystem (it’s worth a read).
Cons:
Let’s start with the observation that 1.0 is just a number. Yes, it’s important as far as numbers go, but it isn’t a magical assignment.
Take C++ for example - it was invented in 1979 but templates were introduced ten years later in 1989. There were even books published like “C++ Templates: The Complete Guide” in 2002 when in the year 2020 there were template features added that radically changed the language again via the expansion of non-type template parameters (NTTP).
The stance that I believe can be derived from this observation is one that pays unique attention to the gradient of change. In other words, each version is important and 1.0 is just another version. In fact, a more radical view could be that how we get there is the most important aspect.
At this point, I’d like to hear from you. What are your experiences working with developing languages and/or advocating for specific languages to be used?
When is the right time to advocate for the usage of a language? Should we wait or try to get people on board early?
What do you think about the development of languages - what does “1.0” mean to you?
Thanks