When I went to build and deploy my code to Heroku yesterday, I typed
git push heroku master, and had no reason to believe the push would be rejected. To my surprise, the build failed with this error.
npm ERR! No compatible version found: email@example.com
Confused, I Googled the error message, and instead of finding one random Github issue, I realized this was being discussed all over the web, discussions like this one in the React Native community. One dependency had been mysteriously removed from NPM that broke some modules that everybody uses. The issues got fixed fairly quickly, but the cause is still remarkable. One programmer unpublished his modules because he was rightfully pissed off at NPM for how they handled a legal threat. One of his modules, 11 lines of code, caused a glitch in the entire matrix.
The system we rely on, remarkably, works pretty well even though it is basically built on a house of cards. One angry solo programmer was able to break builds for, perhaps, millions of developers.
Programmers have a habit of seeing their craft as deterministic, technical, logical, and less about the emotions and uncertain actions of humans than it really is. The community has seen this thought process play out in the form of obnoxious refusals to acknowledge moral responsibilities, like in a discussion in the Opal community about a transphobic contributor.
Also to elaborate more on that, Opal is a technology, technology is moral-less, if a transgender contributor appeared @elia's views wouldn't even appear in here, because why would anyone care, bring contributions, they will be accepted with open arms, bring morals and politics in here, and you will be shown the metaphorical door.
The truth is, as I believe this latest incident reflects, programming outcomes are anything but moral-less, and anything but deterministic. The NPM ecosystem was rocked by one developer’s personal issues with the way he was treated. The programming world is becoming more and more like a global organism, one that can be affected and infected by humanity in the best ways, the worst ways, and everything in between. The liberal nature in which NPM packages can be published and removed creates great power and the need for great collective responsibility.
Open-source programming is a tremendous gift to the world, but the inherent humanity and contentious interplay between individuals, corporations, governments, etc, is so much more intricate than developers give it credit. Programs today are built upon the world’s collective humanity and if you want to make accurate technology projections and ultimately make good choices and build good software, acknowledge the humanity.