קוד פתוח הוא מידה כנגד מידה, ונעילת לקוחות היא בגידה תמידית
האבולוציה של שיתוף הפעולה של רוברט אקסלרוד עוסק בטורניר. אסטרטגיות לדילמת האסיר החוזרת הוגשו כתוכניות ושוחקו זו נגד זו פעמים רבות. המנצחת, כידוע, הייתה ההגשה הפשוטה ביותר: מידה כנגד מידה. שתפו פעולה קודם, ואז עשו מה שהצד השני עשה בפעם הקודמת. היא ניצחה כל תכנית ערמומית שהוגשה נגדה, כולל האסטרטגיה שבוגדת תמיד.
מצאתי בזה את המסגרת הבודדת השימושית ביותר להבנת מה שקורה בתעשיית התוכנה בעשרים השנים האחרונות, ואני רוצה לפרוש את ההתאמה.
המשחק
שני צדדים שמחליפים תוכנה שוב ושוב ניצבים בפני דילמת האסיר בכל פעם. כל אחד יכול לשתף פעולה, כלומר להשתמש בפורמטים פתוחים, לתעד ממשקים, לשתף שיפורים, או לבגוד, כלומר לנעול את הצד השני, להסתיר את הממשקים, לשמור את השיפורים לעצמו. בכל החלפה בודדת הבגידה משתלמת: אתם זוכים במנעול והצד השני נושא בעלות.
אבל החלפות תוכנה אינן בודדות. אותם ספקים, משתמשים ומפתחים נפגשים שוב בכל שחרור, בכל אינטגרציה, בכל סבב גיוס. זה עושה את המשחק חוזר, ובמשחק חוזר החישוב משתנה לחלוטין, וזו כל התוצאה של אקסלרוד.
בגידה תמידית
נעילת לקוחות קניינית היא האסטרטגיה שהטורניר של אקסלרוד קרא לה ALL-D: בגידה בכל מהלך בלי קשר למה שהצד השני עושה. פורמטים סגורים כדי שקבצים לא יוכלו לעזוב. פרוטוקולים לא מתועדים כדי שמתחרים לא יוכלו להתחבר. תנאי רישיון שמענישים את הלקוח על שהסתכל למקום אחר.
ALL-D מצליחה היטב בהתחלה, נגד שחקנים שעוד לא למדו עם מה הם מתעסקים. היא מחלצת הרבה מכל החלפה. ואז נגמרים לה השותפים, מפני שכל מי ששיחק נגדה פעם אחת עובר לבגוד בחזרה, ובוגד המוקף בבוגדים מרוויח את התוצאה הגרועה ביותר שהמשחק מציע.
זו אינה מטפורה. כל ארגון שנשרף מנעילת ספק מתנהג אחרת ברכש הבא. הזיכרון הקולקטיבי של התעשייה הוא הסיבובים המאוחרים של הטורניר.
מידה כנגד מידה
קוד פתוח הוא מידה כנגד מידה, כמעט מעצם ההגדרה. הוא משתף פעולה קודם: הקוד מתפרסם לפני שמישהו עשה משהו כדי להיות ראוי לו. הוא מחזיר: תרמו ותרומתכם ממוזגת, לתועלת כולם ובכללם אתם. והוא נוקם בבגידה בדרך האחת שחשובה. ה-GPL אומר שאם אתם לוקחים ולא נותנים בחזרה, אתם מפסידים את הזכות לקחת. גם הרישיונות המתירניים נוקמים חברתית; חברה שכורה פרויקט עד תום ואינה מחזירה דבר מגלה שמפתחי הפרויקט לא יעבדו איתה.
מידה כנגד מידה מנצחת בטורניר של אקסלרוד מארבע סיבות, ולקוד הפתוח יש כל אחת מהן. היא נחמדה, כלומר לעולם אינה בוגדת ראשונה. היא נוקמת, ולכן אי אפשר לנצל אותה זמן רב. היא סלחנית, וחוזרת לשיתוף פעולה ברגע שהצד השני חוזר. והיא ברורה, כך שכל מי שמשחק נגדה מבין במהרה ששיתוף פעולה הוא הדרך היחידה להרוויח.
מדוע שיתוף פעולה מנצח היכן שהמשחק חוזר
התנאי של אקסלרוד ליציבות שיתוף הפעולה הוא שצל העתיד יהיה ארוך דיו. השחקנים חייבים לצפות להיפגש שוב, ולהעריך את ההחלפות העתידיות די כדי שבגידה עכשיו לא תהיה שווה את אובדנן.
לתוכנה יש צל עתיד ארוך במיוחד. קוד חי עשורים. פורמטים מאריכים ימים יותר מהמוצרים שיצרו אותם. מפתחים עוברים בין חברות ונושאים איתם את הרגליהם ואת טינותיהם. ספק שבוגד היום יתעסק עם אותם לקוחות, מתחרים ומהנדסים בעוד עשר שנים, והם יזכרו.
זו הסיבה שהאסטרטגיה הפתוחה כובשת קרקע בהתמדה ולא מנצחת במכה אחת. היא אינה מנצחת את הנעילה בשום עסקה בודדת. היא מנצחת אותה לאורך הרצף, ככל שיותר שחקנים לומדים את המשחק ועוברים להחזיר. כל שרת שמריץ לינוקס, כל שפה שמימוש הייחוס שלה חופשי, כל תקן שנכתב לפני שמומש הוא סיבוב בטורניר שבו מידה כנגד מידה קלעה ו-ALL-D לא.
החצי הלא נוח
המסגרת גם אומרת משהו שתומכי הקוד הפתוח אינם אוהבים לשמוע. מידה כנגד מידה אינה אלטרואיזם. היא משתפת פעולה מפני ששיתוף פעולה משתלם לאורך המשחק הארוך, והיא נוקמת מפני שהנקמה היא מה שעושה את שיתוף הפעולה משתלם. פרויקט שלעולם אינו נוקם, שמרשה לצדדים שאינם נותנים דבר בחזרה להשתמש בו ללא הגבלה, אינו משחק מידה כנגד מידה. הוא משחק שיתוף פעולה תמידי, ושיתוף פעולה תמידי מפסיד לכל דבר.
אז המוסר של אקסלרוד לתעשייה אינו ששיתוף הוא טוב. הוא שהדדיות היא האסטרטגיה שמנצחת במשחק חוזר, ושיתוף הוא מה שהדדיות נראית כמותו כשהמשחק הוא תוכנה. הספקים שמפסידים לא הבינו שהמשחק חוזר. הפרויקטים שמנצחים גם הם לא הבינו זאת, במקרים רבים, אבל הרישיונות שלהם הבינו זאת בשבילם.