Ображений програміст ледь не зламав інтернет, видаливши 11 рядків коду

Ображений програміст ледь не зламав інтернет, видаливши 11 рядків коду

Інтернет, який ми сприймаємо як щось вічне, в один момент може розвалитися, немов картковий будиночок. Це майже сталося днями, коли один програміст в засмучених почуттях видалив простеньку програму з 11 рядків, зашкодивши таким чином тисячам софтверних проектів. Зараз вже все добре, але кейс наочно демонструє, наскільки це тендітна штука - інтернет.

Все почалося з того, що програміст на ім'я Азер Кокуль написав нічим не примітний модуль - розширення для популярної мови програмування Node.js. І назвав його Kik. свій модуль Кокуль завантажив на NPM (це як App Store для Node.js-програмістів) безкоштовно в допомогу колегам.

Але був і інший Kik - додаток-месенджер, власники якого звернулися до Кокуля з вимогою перейменувати модуль. Але програміст уперся. «Коли я почав писати Kik, я не знав, що є компанія з такою назвою. І я не хотів, щоб мене примушували міняти назву моєї програми», - написав Азер в блозі на Medium.

Як повідомляє Business Insider, закон був на стороні супротивника, який зареєстрував назву задовго до Кокуля з його модулем. В результаті СЕО NPM Ісаак Шлуетер анулював авторство Кокуля над власним модулем, не порадившись з програмістом.

Ображений програміст ледь не зламав інтернет, видаливши 11 рядків коду
Творець програми Kik Теджена Лівінгстон. Фото: BI

«Ця ситуація дала мені зрозуміти, що NPM - приватний майданчик, на якому корпоративні інтереси важливіші загальнолюдських, а я роблю проекти з відкритим кодом, щоб озброїти людей», - написав Ісаак, після чого в пориві емоцій видалив Kik з NPM, а заодно і всі свої коди.

Здавалося б, кому яке діло, та ось невдача: саме Кокуль свого часу створив примітивний, але дуже популярний модуль npm left-pad. У ньому всього 11 рядків коду, які не виконують нічого особливо складного, проте цей модуль налічує 575 000 завантажень. І коли модуль зник, розробникам таких інтернет-проектів, як Reddit, Twitter та інших було дуже не байдуже.

Такі модулі, як npm left-pad, є по суті шаблонами базових функцій, які розробники використовують в своїх кодах, щоб не прописувати функції з нуля. Вони просто вставляють в код виклик модуля з NPM, і в потрібний момент програма завантажує його безпосередньо з менеджера пакетів. Але якщо модуль раптом зникне звідти, компілятор буде викликати його знову і знову, зациклюючи програму. А це дуже погано.

Щоб вирішити проблему, програмістам доведеться пройтися по всіх своїх кодах і замінити виклик віддаленого модуля на інший схожий або прописати функцію з нуля. Жодна програма в архітектурі проекту не повинна ніде посилатися на ці 11 рядків коду, інакше весь картковий будиночок руйнується.

Глобально зникнення таких модулів призводить до того, що популярні проекти на кшталт Babel, які допомагають Facebook, Netflix і Spotify працювати швидше, а їх розробникам створювати більш ефективні інтерфейси, раптово перестають працювати. За даними NPM, жест Кокуля привів до збоїв в роботі приблизно тисячі софтверних проектів.

Після масових протестів розробників по всьому світу NPM відновила модуль з резервної копії, назвавши це «безпрецедентним рішенням». Права на модуль передали іншому програмісту Камерону Вестлейку - власнику аналогічного модуля, але з іншою назвою. (Модуль Азера називався 0.0.3, а модуль Кемерона - 1.0.0). Інтернет страждав приблизно 2,5 години, але потім був врятований.

У серії твітів СТО NPM Лорі Восс зазначила, що компанія і сама не рада була віддати іншим користувачам права на інтелектуальну власність Кокуля, але мета виправдовує засоби. Інакше сайти по всьому світу продовжували б страждати.

Ображений програміст ледь не зламав інтернет, видаливши 11 рядків коду

Підсумок історії такий: npm left-pad знову онлайн. Але осад залишився. Програмісти все частіше використовують чужий код замість того, щоб писати самостійно. Однак Азер не має нічого проти і обіцяє ділитися своєю роботою на GitHub. Але на NPM він повертатися не планує: «Я вчинив так, не тому що я мудак. Я люблю opensource і вірю, що ком'юніті одного разу створить по-справжньому вільну альтернативу NPM».

© джерело     

Тисни «Подобається» і отримуй свіжі новини на Facebook: