מחלוקת על שם מסחרי, מתכנת שנעלב ומלחמות בין תאגידים מסחריים לשוחרי השיתופיות. מה עמד מאחורי התקלה ששיתקה לזמן קצר חלקים גדולים מהרשת, ואיך אפשר למנוע אירועים כאלה?

לפני כשבועיים חוותה רשת האינטרנט טלטלה עזה. ייתכן שרובכם לא הרגשתם בכך, אך פעולה קטנה של מְפַתֵחַ רשת אחד, אָזר קוֹצ'וּלוּ (Koçulu) חוללה תגובת שרשרת שהובילה לתקלות רבות וגרמה לקהילת המפתחים לחשוב מחדש על האופן שבו נבנית ומתפתחת רשת תקשורת המחשבים.

ככלל, אפשר לחלק בגסות את תחום פיתוח התוכנה ברשת ל"צד השרת" (Server side) ו"צד הלקוח" (Client side). בכל אחד מהם המחשב (שרת או מחשב אישי) מריץ תסריטים ("סקריפטים"), שהם קטעי תוכנה המסוגלים לרוץ באופן עצמאי, ללא צורך בהידור (Compiling).

רבים מהתסריטים נכתבים כיום בשפת התכנות ג'אווה-סקריפט (JavaScript). השפה הזאת מאפשרת לדפדפן האינטרנט בצד הלקוח להריץ תסריט בתוך הדפדפן עצמו, וכך מאפשרת עיצוב מורכב של אתרים, כמו היכולת לפתוח חלון לשליחת הודעה בתוך אותו דף. לכל שפת תכנות יש יתרונות וחסרונות, והדיון בהם הוא תחביב נפוץ בפורומים של מפתחי רשת. בסופו של דבר, חלק ניכר מרשת האינטרנט עושה כיום שימוש בתסריטים כאלה.

בנוסף, יש פלטפורמות שמאפשרות להשתמש בתסריטי ג'אווה-סקריפט גם על גבי השרתים, למשל Node.js. אתרים רבים, בהם איביי, וולמארט, לינקדאין ואפילו גוגל ויאהו! עושים שימוש בסביבה הזאת.

אחד הכלים העומדים לרשותם של מפתחי הרשת בסביבת ג'אווה-סקריפט הוא חבילות תסריטים שכל מפתח יכול להשתמש בהם. כך אפשר לקצר את עבודת התכנות, כיוון שכל אחד יכול להשתמש בקודים שנכתבו לפניו, בתנאי שהכותב העמיד את התסריט שלו לתועלת הציבור ("קוד פתוח"). כדי לפשט את השימוש מאוחסנות חבילות הסקריפטים בספריות "ציבוריות". בתחילת כל תסריט מציין המפתח באילו חבילות הוא משתמש, והתסריט מוריד אותן בעצמו מהספריות.

רעיון הקוד הפתוח מגלם בתוכו אידיאולוגיה שלמה ואינו מוגבל לתוכנה זו או אחרת. המאבק בין מפתחים הדוגלים באידיאולוגיית הקוד הפתוח לבין חברות תוכנה (למשל מיקרוסופט ואדובי) הוא מאבק עקרוני על הזכות לקניין רוחני על ידע לעומת חופש המידע.

קהילת המפתחים בג'אווה-סקריפט תומכת בדרך כלל במודל השיתופי הזה. מפתחים רבים דוגלים בשיטות האלה גם בחיי היומיום, ומקדמים כלכלה שיתופית ושימוש ברעיונות הקוד הפתוח בעולם כולו. הפעם, כמו במקרים רבים אחרים, הדברים הסתבכו כשנכנסו לתמונה עורכי הדין.

בעיטה ועלבון
אחת הספריות הגדולות לניהול חבילות תסריטים לפלטפורמת Node.js (שמסוגלת להריץ ג'אווה-סקריפט בצד השרת) היא NPM. אלפי מפתחים מרחבי העולם מעלים אליה את התסריטים שכתבו, מתוך רצון לתרום לכלל ולעזור לעמיתיהם במלאכת הפיתוח המפרכת. אחד המפתחים הללו היה מיודענו אזר קוצ'ולו, שהעלה ל-NPM לא פחות מ-273 חבילות, ובהן אלפי תסריטים שונים. לאחת החבילות שהעלה, נתן קוצ'ולו את השם הקליט "KIK".

הבעיה היא ש-KIK הוא גם שמה של רשת חברתית למסרים מיידיים. עורכי הדין שלKIK  דרשו מקוצ'ולו לשנות את השם שנתן לחבילה, כיוון שהשם KIK הוא סימן רשום בבעלותם. קוצ'ולו סירב, בטענה שהוא נתן את השם לפניהם, ובכלל הוא עצמו שוקד על פיתוח של חבילת קוד פתוח בשם הזה. KIK איימו לנקוט הליכים משפטיים, וקוצ'ולו ביקש 30 אלף דולר כדי לוותר על השם לטובת התאגידים, שהם ועורכי דינם מסמלים בעיני קהילת הקוד הפתוח את תמצית הרוע.

מכאן העניינים הידרדרו במהירות. NPM היא חברה מסחרית, ובמקביל למאגר הקוד הפתוח היא מוכרת מוצרים רבים לחברות תוכנה אחרות. זמן קצר אחרי שפנו אליה עורכי הדין של KIK, החליטה NPM להעביר את השם "KIK" לרשות החברה התובעת. הנהלת NPM הודיעה על כך במייל לקוצ'ולו, והוא לקח את העניין ללב.

חשוב להבין שהמחלוקת העמוקה באמת אינה על השם KIK עצמו. המקרה הזה הוא רק סימפטום למאבק רחב ועמוק הרבה יותר בין קהילת מפתחי הקוד הפתוח והכלכלה השיתופית, לבין התאגידים המסחריים ועורכי הדין המייצגים אותם, שעוסקים בקניין רוחני, זכויות יוצרים, פטנטים וסימנים רשומים.

בעוד אנשי הכלכלה השיתופית טוענים שהמידע שייך לכולם ושכל אחד רשאי לעשות שימוש בכל דבר, חוקי הקניין הרוחני מאפשרים לעתים רישום של "פטנטי בלימה" וסימנים רשומים, שכל תפקידם למנוע מאחרים להתחרות בבעל הזכויות. מצד שני, לרישום פטנטים וזכויות קניין יש חשיבות רבה במתן תמריצים ובפיקוח על רווחים עתידיים מהמצאות אמיתיות שאפשר לחקות בקלות.

וזה מחזיר אותנו לקוצ'ולו, שנעלב והחליט למשוך את כל החבילות שכתב והעלה אי פעם לשרתי NPM. אחד מהם היה תסריט פשוט של 11 שורות בשם left-pad:

1

2

3

4

5

6

7

8

9

10

11

module.exports = leftpad;

function leftpad (str, len, ch) {

  str = String(str);

  var i = -1;

  if (!ch && ch !== 0) ch = ' ';

  len = len - str.length;

  while (++i < len) {

    str = ch + str;

  }

  return str;

}

התסריט הקצר הזה בסך הכול "מנפח" מחרוזת אותיות מסוימת ומביא אותה לאורך רצוי באמצעות הוספת רווחים. אבל כאמור, בכתיבת תסריט חדש, המפתח מפרט את התסריטים שהוא משתמש בהם, והם "קוראים" לכל התסריטים הדרושים, שקוראים לכל התסריטים הדרושים להם וכן הלאה. למרות פשטותו של תסריט ה-left-pad, ואולי בזכותה, מפתחים רבים השתמשו בו כפקודה. זה הגיע לידי כך שבמהלך חודש אחד בוצעו 2,486,696 קריאות לתסריט הזה.

150 דקות של אימה
והנה, ברגע שקוצ'ולו משך את כל החבילות שלו מ-NPM, כל התוכנות שקראו לleft-pad הפסיקו פתאום לפעול. זה כלל גם תוכנות שקראו לתוכנות המבוססות על התסריט הזה, ותוכנות שקוראות להן וכן הלאה. למרבה האירוניה, גם תוכנת המסרים KIK, שהתחילה את תגובת השרשרת, נסמכה בלא ידיעתה על אותו תסריט.

בסופו של דבר מתכנת אחר (יש הטוענים כי אין זה אלא פרופיל פיקטיבי של NPM עצמה) פרסם מחדש את הקוד, באותו שם, שהתפנה לאחר שקוצ'ולו משך את התסריט הרשום על שמו. הבעיה נמשכה בסך הכול כשעתיים וחצי.

התקלה נפתרה לעת עתה, אך חברים רבים בקהילת הקוד הפתוח ומפתחי הרשת מנסים להבין איך אפשר למנוע מתקלות כאלה להישנות בעתיד. מהם האמצעים העומדים לרשות מתכנתי קוד פתוח, וחברות שאוספות תסריטי קוד פתוח לתועלת הציבור כמו NPM ו GITHUB, כדי להגן על הקוד שהן מפיצות אך אינן מחזיקות בזכויות היוצרים עליו – אם מושג כזה קיים בכלל.

0 תגובות