Hacker News
points by locknitpicker 4 days ago | 0 comments
> but that'd be unprecedented

Not really. The unprecedented part was how come contracts proponents decided to push a proposal against all feedback and concerns, knowing very well it was falling to build up any form of consensus.

Contracts proponents knew for years the featured proposal was opposed as it was riddled with fundamental technical flaws. The unprecedented part was the way they said "screw them" and pushed forth anyway, hoping the formality would build enough pressure to force anyone opposing the feature to succumb to the bureaucratic pressure and silence their concerns.

This contracts stunt reeks of corporate chicanery. I mean, what was the plan here? Ignore everyone, get the bureaucratic foot in the door, and then blackmail all dissenting voices of sabotaging the process if contracts proponents didn't had their way?

[–] leni536 4 days ago
"Any form of consensus": there was obviously consensus in WG21, hence contracts remained in the draft.
[–] locknitpicker 4 days ago
> "Any form of consensus": there was obviously consensus in WG21, hence contracts remained in the draft.

Contracts have been systematically pulled from the drafts since C++ 2020 as their proponents decided to ignore technical feedback and opted to go for political petty tactics much like those we see today.

Ask yourself this: how come the contracts proposal has been floating for so long, changed so little, have no reference implementations that address any remarks, and you still see the half baked proposal being floated?

And WG21 members did voted against it. Contract proponents repeatedly try to dismiss critics as having been ignored due to the nature of the democratic process, and now are complaining that they themselves see the same democratic process rejecting the proposal yet again, this time after the unprecedented push.

[–] leni536 4 days ago
> And WG21 members did voted against it.

Not most recently, when it was first voted in, then repeatedly voted to remain in when the option to remove it was polled. The most recent consensus of WG21 is reflected in the current draft, established by multiple votes overwhelmingly in favor.

[–] BlackFingolfin 4 days ago
But receiving a majority vote is not the same as building a consensus. I think that's the sticking point here.
[–] leni536 4 days ago
It wasn't voted out of the blue. There was extensive discussion prior to votes (including weekly telecons for months solely dedicated to contracts). So how do you measure consensus if not by a vote after extensive discussion, leaving everyone to voice their opinion, come up with alternatives and propose polls?

And sustained opposition does not necessarily mean lack of consensus either. WG21 heard the opposition and decided that constracts belong in the proposed draft despite of that opposition. It is very rare that a new feature does not get opposition, even a sustained one.

Now it is clear that there is no consensus between WG21 and the national bodies (although they overlap), but there is clear consensus within WG21.

[–] BlackFingolfin 4 days ago
The definition in ISO/IEC Guide 2 for consensus is this:

> Consensus: General agreement, characterized by the absence of sustained opposition to substantial issues by any important part of the concerned interests and by a process that involves seeking to take into account the views of all parties concerned and to reconcile any conflicting arguments.

So to me it is not at all clear that there was consensus within WG21.

John Spicer, the former chair of SG21 (the C++ Contracts Study Group), also seems to have doubts about that, see <https://open-std.org/JTC1/SC22/WG21/docs/papers/2026/p4381r0...> -- which is quite self-critical.

Don't get me wrong, I am not taking sides here (I haven't even done any work in C++ in the last 10 years), but it does seem a bit more complex than how you paint it.

[–] locknitpicker 4 days ago
> So to me it is not at all clear that there was consensus within WG21.

Not only was there no consensus, reports from the process described the behavior from contracts proponents in WG21 as political maneuvering and trying to ignore criticism by pretending that somehow consensus was not a goal and thus they could simply nominwlly reject and ignore any criticism.

There's a lot of personal attacks directed at Stroustrup but somehow it's left out of the story the fact that Microsoft apparently criticised the proposal as unimplementable. We're talking about feedback from the dominant compiler vendor.

[–] leni536 4 days ago
I appreciate that ISO/IEC tries to provide some definifion of consensus, but it's so vague that is borderline useless. Who decides what is "important" or "substantial"? Do we need an other round of consensus for that (making the definition circular)? Or is deciding what is "important" or "substantial" part of the process that is outlined in the second part of the definition (making the first part more or less redundant)? Or is it the opposition to decide if their presented issues are "important" (making it effectively a veto power)?

As for the second part of the definition, regarding the process, that all took place with a measurable outcome. Although "reconcile any conflicting arguments" might be interpreted as unanimity, but that's surely not the intent.

[–] jcranmer 4 days ago
The vote for incorporating contracts into C++ was 100 in favor to 12 against.

Consensus is not the same as a majority vote. But it also doesn't mean that a small minority gets the right to block the feature forever.

[–] bluGill 4 days ago
At some point a minority needs to accept they have lost.

I've been following contracts for a while and my interpretation is some people are refusing to accept that others disagree with them. These people are repeating the same arguments that have been addressed multiple times.

You can disagree, but I look at it as people refusing to work with others voting no.