4 ms·
Good essay. Counter-argument: the Python setuptools outage this week (https://github.com/pypa/setuptools/issues/4919 https://github.com/pypa/setuptools/issues/
by shadowgovt 2y ago
Good essay.
Counter-argument: the Python setuptools outage this week (https://github.com/pypa/setuptools/issues/4919 https://github.com/pypa/setuptools/issues/4919) was more-or-less an exercise in ignoring Postel's Law to the peril of the project. Python (as an ecosystem) had historically allowed hyphens and underscores in the `setup.cfg` file. The setuptools project deprecated this behavior years ago. This week, they tried to act on the deprecation and blew up multiple high-use dependencies.
The best way to avoid this issue would have been to never deprecate it in the first place; treating hyphen and underscore as the same had minimal impact on the codebase and made setuptools more compatible with other Python tooling.
- bonoboTP 2y agoGreat example for minor cosmetic changes that pointlessly break stuff. I see this a lot in Python libraries, seems to be a culture thing. Renaming arguments, moving stuff into different subpackages, just so much churn. Yeah, I get it, it may be slightly more consistent, or feels cleaner, but in many cases it's quite subjective but library authors seem quite prone to just deprecate it, then deprecate the new version again soon after... It's like they don't realize that there's code out there that uses it. This is why code "rots". When I complain about software churn and the waste of effort to keep existing code functional, people point to security vulnerabilities etc., but that should be possible to do without a bunch of pointless renames and refactors. Case in point: `collections.MutableMapping` was moved to `collections.abc.MutableMapping` in Python 3.10, breaking a bunch of nice libraries that provide useful data structures. And why? Because it looked more tidy and conceptually comforting for some Python devs. https://stackoverflow.com/questions/70870041/cannot-import-name-mutablemapping-from-collections https://stackoverflow.com/questions/70870041/cannot-import-n... This can be super demotivating. Someone at some point in their lives made a useful tool, but then moved on, maybe they were a grad student at the time, and now they have a family, etc. And we are cut off from their contributions because they can't keep up with slightly adjusting the code to the whims of language and library authors every month or two. Some other languages are much better about not breaking existing code, e.g. Java.
- shadowgovt 2y agoThis is actually what keeps me out of the Ruby on Rails ecosystem unless I'm forced into it. I was excited about Rails... Until I put a project down for a year, picked it up again, and discovered it wouldn't build because Rails had switched out its entire package management engine. I simply don't have time for that much churn.