איש אחד מאוקלנד, קליפורניה, גרם כאב ראש רציני למפתחי ווב בכל העולם בשבוע שעבר לאחר שמחק 11 שורות של קוד בלבד.
המקרה של אזר קוקיולו בן ה-28 מטורקיה ששבר לזמן קצר את האינטרנט ממחיש כיצד קוד בווב מורכב טלאים-טלאים שתרמו מפתחים מרחבי העולם, וכאשר אחד מהם מחליט למשוך את התרומה שלו, כפי שקרה בשבוע שעבר, ההשלכות עלולות להיות מרחיקות לכת.
“אני חושב שיש לי זכות למחוק את מה שיצרתי”, כתב קוקיולו באימייל ב-20 במרץ, שהפך פומבי מאוחר יותר.
קוקיולו פירסם קוד שכתב ב-npm, שירות פופולרי שמשמש לחיפוש ולהתקנה של תוכנות קוד פתוח בג’אווה סקריפט. השירות הפך כלי חיוני בפיתוח ווב בזכות הממשק הידידותי וקטלוג עצום של חבילות קוד חינמיות שנתרמו על ידי מפתחים בקהילת הקוד הפתוח.
פילוסופיית הקוד הפתוח, שדוגלת בשיתוף קוד מקור פתוח ונגיש עם הקהילה, היא זו שגרמה לקוקיולו לתרום קוד ל-npm מלכתחילה, וזו הסיבה מדוע חזר בו. כמו מפתחים רבים שכותבים קוד מקור שכולם רשאים להשתמש בו, קוקיולו מושפע מאתיקת ההאקרים עם שורשים היסטוריים בני כמה עשרות שנים שנעוצים במפתחים הראשונים שיצאו מ-MIT ואישים בולטים כמו המפתח ריצ’ארד סטולמן.
אחת מחבילות הקוד הפתוח בג’אווה סקריפט שקוקיולו כתב היא waskik, שעזרה למפתחים ליצור תבניות לפרויקטים שלהם. לא הרבה מפתחים הכירו את את החבילה הזו, אך איתרע מזלה והיא חלקה שם משותף עם Kik, אפליקציית המסרים שפועלת מאונטוריו, קנדה.
קוקיולו
ב-11 במרץ קוקיולו קיבל אימייל מבוב סטרטון, עו”ד פטנטים וסימני מסחר שעובד עבור “קיק”. סטרטון אמר כי “קיק” מתכננת לשחרר חבילת ג’אווה סקריפט משלה ושאל אם קוקיולו מוכן לשנות את שם החבילה שלו.
“מצטער”, ענה קוקיולו, “אני מפתח פרויקט קוד פתוח בשם זהה”.
מכאן והלאה העניינים הקצינו, וסטרטון איים בהליכים משפטיים. “אנחנו לא מתכוונים להיות מניאקים, אבל מדובר בסימן מסחר רשום ברוב מדינות העולם ואם אתה תשחרר פרויקט קוד פתוח בשם kik, עורכי הדין שלנו ידפקו בדלת שלך, יסירו את החשבונות שלך וכן הלאה. אין לנו ברירה אלא לנהוג כך משום שאנחנו חייבים לאכוף את סימני המסחר שלנו או שנאבד אותם”.
“חחח, אתה בהחלט מניאק”, ענה קיוקיולו והוסיף: “לך תזדיין. אל תכתוב לי יותר”.
סטרטון הציע לשלם עבור השם וקוקיולו הסכים ל-30,000 דולרים, “עבור הטירחה שכרוכה בוויתור על הפרויקט שאהבתי לחבורה של זינים תאגידיים”. זה לא הלך לשום מקום חיובי.
חברת npm מאוקולנד, על אף שהיא מפעילה מאגר חינמי של תוכנות קוד פתוח לטובת קהילת המפתחים, היא גורם מסחרי. החברה רושמת הכנסות עבור שירותי קוד שהיא מספקת שאינם בקוד פתוח, במודל עסקי דומה ל-GitHub. סטרטון העביר את הבקשה של “קיק” ל-npm, ואייזיק שולטר, מנכ”ל npm, הסכים להעביר את השם kik במאגר לרשום החברה. “אנחנו מאמינים שרוב המשתמשים יחשבו ש-kikpackage שייכת ל-Kik.com”, הוא כתב לסטרטון ולקוקיולו ב-18 במרץ, “על כן, העברת הבעלות על שני שמות החבילות האלה היא סבירה”.
“אני מכיר אותך במשך שנים”, הגיב קוקיולו, “ואני לא מאמין שאתה דוגל בצד של עורכי דין תאגידיים לפטנטים שמאיימים על מפתחים שתורמים לקהילת הקוד הפתוח”.
מפתחים רבים, בקוד פתוח במיוחד, הם ביקורתיים ביחס לחוקי הקניין הרוחני בארצות הברית, ועורכי הדין שפועלים לאכוף אותם. חברות תוכנה מתמודדות זה שנים רבות עם תביעות הנוגעות להפרת פטנטים בקוד פתוח, בהליכים שונים כמו הצגת תמונות בדפי ווב ועד משלוח חדשות אוטומטיות באימייל. המבקרים רואים בתביעות האלה ניסיון לשבש את החדשנות וסחטנות בפועל. עבור קיוקיולו, ההחלטה של npm למסור את השמות שהוא רשם ל”קיק” הייתה לא פחות מסכין בגב.
בתגובה הוא החלט להסיר את כל חבילות הקוד שאי פעם תרם ל-npm. “אני לא רוצה להיות חלק מהקהילה הזו יותר”, הוא כתב, “אם אתה לא תעשה את זה עדכן אותי איך עושים את זה מהר”.
יומיים לאחר האימייל האחרון של קוקיולו ל-npm, ב-22 במרץ, מפתחי ג’אווה סקריפט ברחבי העולם החלו לקבל הודעות שגיאה מוזרות כאשר ניסו להריץ את הקוד שלהם. הבעיה מנעה מחלק מהמפתחים לעדכן אפליקציות ושירותים שכבר פעלו בווב. הודעת השגיאה כללה שורות רבות, אך אחת מהן בלטה:
npm ERR! 404 'left-pad' is not in the npm registry.
המשמעות היא שהקוד שהם ביקשו להריץ דרש חבילה בשם left-pad אך זו לא נמצאה במאגר של npm.
רוב המפתחים לא שמעו מעולם על left-pad, אך מתברר שהקוד שלהם לא יכול לרוץ בלעדיו. איך זה יכול לקרות? כדאי לזכור שכמעט כל תוכנה בווב בנויה על גבי תוכנה אחרת, שאף היא עשויה להיות תלויה בתוכנה אחרת. כאשר אתם מפעילים אפליקציה ייתכן שהיא מבקשת חבילות שונות מ-npm, אך גם החבילות האלה מתבססות על חבילות משלהן וכן הלאה. זו אחת הסיבות מדוע npm הפכה כה פופולרית, בזכות הניהול היעיל של כל יחסי התלות האלה בין תוכנה במקום אחד. זאת אומרת עד שמשהו נשבר.
עד שעות הערב מפתחים הציפו את קבוצות הדיון בשאלה לגבי גורלה של left-pad. חבילות קוד לא נעלמות לרוב סתם כך, בייחוד כשמדובר בחבילה בת 11 שורות קוד בסך הכל:
הקוד הספציפי הזה משמש להוספת תווים בתחילת לולאת טקסט, כמו הוספת אפס בתחילת מיקוד. זה קוד פשוט שרוב המפתחים יכולים לכתוב בעצמם. עם זאת, חבילות רבות של npm מתבססות על left-pad שתעשה זאת עבורם, וכך פיסת קוד קטנה ופשוטה הפכה כל כך חשובה. חלק מהחבילות הגדולות והפופולריות של npm פתאום נשברו. אחת החבילות שנפגעו, בשם React, משמשת גם אתרים גדולים כמו פייסבוק, שיצרה אותה. React עצמה לא התבססה על left-pad ישירות, אך היא נסמכה על ערכה אחת של חבילות, וכל אחת מהן התבססו על ערכה אחרת, וכן הלאה, ואחת מההסתעפויות האלה נדרשה בסופו של דבר ל-left-pad, שפתאום הייתה חסרה.
החסרון הזה הורכש בכל העולם וצחוק הגורל, גם בחברת Kik עצמה. אותו מייק רוברטס, מנכ”ל “קיק”, אמר בראיון כי השגיאה מנעה מהמפתחים שלו להריץ תוכנה שהם פיתחו. “איך זה שאחת החבילות שלנו חסרות”, הוא תהה לעצמו. זמן קצר לאחר פרוץ המשבר, קוקיולו פירסם פוסט ב”מדיום” בכותרת “למה שיחררתי את המודולים שלי“. הוא סקר את העימות עם “קיק” ו-npm, והסביר כי מחק את כל 273 החבילות שלו מ-npm במחאה.
אחת החבילות האלה, אפילו לא אחת הפופולריות או החשובות לקוקיולו עצמו, הייתה left-pad. “המצב הזה גרם לי להבין ש-npm היא שטח פרטי בו תאגיד חזק יותר מאנשים”, הוא כתב, “בחרתי בקוד פתוח בגלל הכח שהוא נותן לאנשים”. לנוכח המשבר, npm החליטה לשחזר את 11 שורות הקוד בניגוד לרצונו של קוקיולו. “החלטה זו שמה לנגד עינינו את האינטרסים הרחבים של משתמשי npm כאשר הם מתנגשים באלה של משתמש אחד”, צייץ לורי ווס, מנהל הטכנולוגיה של npm. וכך העניין נפתר, שעתיים לאחר שהמשבר העולמי פרץ.
המשבר מדגיש את השבריריות של תוכנה בווב, כאשר גם שירותי ווב גדולים, כמו פייסבוק, הפכו תלויים בשורות קוד שכתבו מפתחים שונים. חלק מהמפתחים האשימו את “קיק” במשבר, בגלל שאיימה על פרויקט קוד פתוח בתביעה. אחרים הפנו אצבע מאשימה ל-npm, ואמרו כי השבירה מעידה על התשתית השברירית של השירות. אחרים ביקרו את החלטת npm להיענות לדרישה של “קיק”, ללא דיון ציבורי או קרב ראוי.
היו גם כאלה שהצביעו על העצלנות של מפתחים, שבמקום לכתוב 11 שורות קוד בעצמם מתבססים על תוכנה של אחרים. אחד אפילו יצר את leftpad.io, תוכנה חלופית ל-left-pad שמספקת את “כל הפונקציונליות” של המקור, “כדי למנוע טרגדיה איומה כזו לחזור על עצמה”, במחאה סאטירית על התלות העצומה בפיסת קוד פשוטה. רוברטס מ-kik אמר בראיון שהוא מתחרט בדיעבד שלא פנה בעצמו לקוקיולו. “אני רואה בקוד הפתוח, בקהילה, מקום שבו אנשים עוזרים זה לזה”. אך כנראה כי כאשר עורכי דין נכנסים לתמונה קל לאבד קשר עם זווית הראייה הזו.