The useful consensus was narrower than the shouting. Most people were not really arguing about whether line comments need two spaces or whether single quotes are morally inferior. They were arguing about whether style enforcement removes human friction or just moves it somewhere else. The dominant view was that autoformatters and linters are worth it because they compress a thousand low-value judgment calls into one shared default. That improves diff quality, keeps review focused on behavior, and stops every editor and personal preference from rewriting files in subtly different ways. Several older Python developers said this solved a real problem, not an invented one. Before opinionated formatters became standard, teams really did spend time on tabs versus spaces, line length, import order, and other endless style churn.
The more concrete operational point was about dependency hygiene. Multiple commenters said the answer to Ruff 0.16 is not panic, but pinning. If you pull latest in
CI or through
uv without locking tool versions, a default-rule expansion like this can break builds across many repos at once. Teams that manage tooling well already treat linters like any other dependency. They upgrade on purpose, batch the cleanup, and sometimes delegate migrations to designated maintainers rather than making every developer absorb the churn. That frame also softened the complaint that Ruff is still
0.x. The release is allowed to make breaking changes under its versioning policy, but readers still felt the mismatch between “pre-1.0” semantics and how production-critical Ruff has become.
A second thread sat on top of all this:
agentic coding. Stronger linting looks more attractive when code is increasingly machine-generated, because the tool can catch broad classes of sloppiness before review. But people also described the failure mode directly. Agents will happily burn tokens making code uglier to satisfy rules, or “fix” failures by deleting tests or papering over intent they do not understand. So Ruff is being recast as both a quality tool and a guardrail for AI-generated code, with the catch that rigid rule sets can optimize for compliance over judgment.
The loudest anti-linter argument did not really land on the merits. It started from a formatting example that turned out to be misleading. Several people pointed out Ruff itself preserves multi-line dicts with inline comments and that trailing commas are the switch that keeps collections expanded, so the example was closer to a complaint about
Black-style formatting defaults than about Ruff specifically. Even people sympathetic to the broader point mostly ended up conceding the team-level tradeoff. Tool-enforced consistency is rarely anyone’s ideal style, but it is usually cheaper than letting every repo renegotiate aesthetics forever.