IIRC Steve McConnell calls this “cargo cult software engineering”–things like:
- Thoroughly reviewing or nitpicking new PRs rather than addressing bigger issues in existing code (forgetting the purpose of code review is to fix bugs)
- Obsession with keeping packages “lightweight” by refusing to take on even widely-used, quick-to-compile dependencies (forgetting the purpose of lightweight packages is to reduce compile time and fragility)
- Religious adherence to written contracts of compatibility/API (forgetting the purpose of avoiding breaking changes is to reduce maintenance burden)
Even much more well-established languages are more willing to make big changes than Julia is, despite having much larger codebases to maintain. For example:
- Python breaks some code every minor update; they just give 3 years’ warning, more than enough time for even poorly maintained packages to fix issues.
- Dart literally switched from dynamic to static typing and abolished null pointers (two massive changes) in the 1->2 shift. A few months ago, they removed
f(name: arg)
for named keyword arguments.
Meanwhile, I think this is the most common reply to almost any request to fix a problem. And changes that don’t break the Official Contract provided by docs (most notably, offset indices) are treated as being non-breaking, without any mitigating measures (like scripts or tools to help people convert, @inbounds
deprecation, or required ordinal indexing).