Did Julia community do something to improve its correctness?

IIRC Steve McConnell calls this “cargo cult software engineering”–things like:

  1. Thoroughly reviewing or nitpicking new PRs rather than addressing bigger issues in existing code (forgetting the purpose of code review is to fix bugs)
  2. 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)
  3. 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).

1 Like