Hello alls !
I would like to share my modest opinion concerning the philosophy and the strategy of the Zig project. I’m not a software engineer, but I love zig as a hobby, and I hope I am offering a constructive feedback.
I believe the Zig project is very well managed:
- Zig has clear guidelines for the development of the language.
- Zig has a leadership who share and defend their values concerning the software ecosystem.
- Zig has a foundation which ennacts these values for the zig project
and its future.
But as the project progresses, I realize there’s a keyword which is becoming shadowy: stability. When we look back at public declarations, we discover that stability was a clear goal at first, but with time, it became more and more hidden by short term goals, until the long term objective seems to be carefully avoided in public presentations.
I guess it’s a word hard to honor when development is ongoing and still discovering opportunities and difficulties. But I think it is the word in which all the values of the Zig project come together – or at least, it is my impression by following the project for a few years.
I would like to encourage you to think twice about this trend in your strategy, and consider this opinion: technical difficulties to reach 1.0 do not mean stability is not your goal, and do not mean you can’t express a clear path to reach that goal. Here follow some ideas to consider.
- Zig’s roadmap to stability
I guess, having this «roadmap to stability» written somewhere would be a significant help for people to consider the Zig language and support the Zig project.
Such a roadmap does not have to define deadlines. It does not have to be written in marble either. It can evolve, and should probably be transparent concerning its changes. It could simply explain technical expectations (incremental compilation, async IO…), steps to fulfill (review of the standard library), etc. All it has to do, in my opinion, is to share a vision.
- Zig’s definition of stability
I guess a first attempt to define which behavior is expected from a stable Zig would also help people to phase their expectations with what Zig can promise.
I wish Zig’s management could attempt to define what stability means for the language, compiler, and standard library. Does it mean the language definition can still evolve? Is it a promise my code written for 1.0 will compile on 2.0 compiler? Does it mean bug fixes will be backported to previous versions of the compiler? Does it mean tools to auto-update one’s codebase? Or does it mean an ever evolving language with well documented changes?
Maybe that definition would lead to prefer another word than «stability» («sustainable» for example). Maybe will it be needed to offer a variety of words: what does stability could mean before 1.0, what will it mean after 1.0, what does it mean for the language, what does it mean for the standard library, etc.
- Zig’s strategy concerning stability
I guess a roadmap and a definition would be first steps toward a strategy concerning stability. Such a strategy could also define measures, tools or best practices, to enforce our definition of stability, or to help us approach it. With such a strategy, even if we do not reach «stability», we can still be proud of the efforts we are devoting to reach that goal. And I guess Zig could be innovative on that field too.
That was my modest opinion. I hope this feedback will appear constructive to your eyes.
Cheers !