> Somewhere along the way, people started associating the celebration of 
> ORC/ARC with the idea that we should piggyback lots of other breaking changes 
> on top

Well, that's because ARC/ORC were released rather long ago and "celebration" 
can't happen if the standard library is not utilizing the new model fully and 
there's not enough users to feel the change for the better.

> the desire to remove things will not die with v2 - this is a problem that 
> every project that lives for some time has to face, and continuously - a 
> single breaking v2 does not actually solve the issue, instead it just kicks 
> the can down the road

The desire never dies, but the freedom to act on it can only decrease (if the 
language is living a healthy life of course).

To be frank, no offense, but in the grand scheme of things Nim has almost zero 
public software products built with it in use to show, with a few notable 
exceptions, such as Status and Nitter. So, the only proper time for a breaking 
change is now, not later.

> splitting up the standard library into smaller components that can be 
> developed, upgraded and deprecated separately

That is formulated very poorly, because the context defines everything here, in 
my opinion. If the only things that change are internal structure and 
governance, it's fine and probably the way to go. But if it results in 
depopulating standard library and increasing the reliance on the Nimbleverse, 
I'd be totally against. I could expand on whys if anyone feels like asking.

> what's needed is a structure under which change can be introduced over time, 
> so as avoid staleness in the language, and at the same time promote a mindset 
> and culture that values the contributions of existing Nim users and sees them 
> for the asset they are

Strongly agree.

* * *

My comment may seem contrarian, but I get Arne's drift and support it. Some of 
the ideas in the other v2 thread, while interesting, are really ridiculous. 
Nim, like any growing project, has problems, and that's ok. What's not ok is it 
sometimes feels there's just not enough hands to deal with them. So, this leads 
me to believe that instead of whishlists of things to add and change, we should 
discuss priorities and structural changes dealing with the concrete issues at 
hand.

Thus, my list is:

  1. Dealing with bugs. For the last few years I've been coding only 
occasionally and my projects are tiny. Nevertheless, even I encounter compiler 
and other tooling bugs, as well as little issues in the standard library pretty 
regularly. This is truly a new experience for me, but I can live with it, while 
for some people considering Nim professionally it might be a dealbreaker.
  2. Fully embracing already released features and adopting the ecosystem to 
fully utilise them. Namely: view types and concepts in standard library as much 
as possible. They should be normalised in the eyes of the Nim users as the core 
features of the language.
  3. Increasing the velocity of the development. Currently the main team looks 
overwhelmed, so small changes and fixes should be made possible to implement 
with minimal involvement on their part. Decisions have to made faster where the 
possible damage area is small enough to afford mistakes. I don't say I know how 
to do it, but at the very least it would be wise to consider this as a goal. 
Some ideas by Arne will bring Nim closer to achieving this.
  4. [3.2] Increase the involvement of the community. This requires: even more 
verbalised plans and roadmaps, more smaller task (with clear requirements and 
boundaries, not just open issues) which can be delegated, community 
initiatives, bounties, some structural changes which decrease interdependence 
of parts of the language so small breaking changes and mistakes can be more 
easily dealt with.


Reply via email to