יום ראשון, יוני 20, 2010

פיתוח חופשי של תוכנה, תחת רשיון קוד סגור -- בית משוגעים

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

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

תרגיל בדמיון מודרך: חברה בשם Digital נרכשה על ידי Compaq שאחרי כמה שנים נרכשה על ידי HP. נסו לצייר בדמיונכם מה קרה לקוד של כל הפרוייקטים של שלושת החברות הללו ב־15 שנים האחרונות... (כמה עורכי דין היו דרושים להתיר את הפלונטר? כמה יהיו דרושים אם/כאשר יהיה פלונטר אמיתי).

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

אגב, לא צריך ניחושים באויר כמו שזרק עורך הדין. יש לנו כמה דוגמאות היסטוריות של מוצרי תכנה קיניינים גדולים שהפכו למוצרי קוד פתוח -- רק לפתור את הספגטי של הרשיונות הקנייניים לקח לכל פרוייקט כזה לפחות שנה של עבודה טכנית/משפטית. בחלק מהמקרים זה גם גרר ויתור על יכולות שהיו במוצר המקורי ולא היה ניתן לפתור את בעיות הרישוי שלהם.
מי שעוסק בעובדות במקום ספקולציות והפחדות בוודאי יודע לאיזה דוגמאות התכוונתי:
  • Mozilla
  • XFS
  • JFS
  • OpenOffice.org
  • Java

לקינוח, מעט נתונים מספריים. מתוך מחשב אחד שלי הפקתי רשימת רשיונות וספרתי כמה חבילות מכוסות על ידי כל רשיון -- והרי תשעת המובילים (פדורה 13 עם KDE ו־GNOME למי שסקרן):
  • 24 - Public Domain (technically, not a license)
  • 30 - GPL+
  • 42 - GPLv3+
  • 44 - LGPLv2
  • 91 - BSD
  • 133 - GPLv2
  • 142 - MIT
  • 271 - LGPLv2+
  • 323 - GPLv2+
סה"כ 1100 חבילות מכוסות על ידי 9 רשיונות בלבד. כולם ידועים ומפורסמים. אגב, באותו מחשב יש עוד יותר מ־250 חבילות שפשוט מאפשרות הרכבה של כמה רשיונות. לדוגמא:
  • 9 - MPLv1.1 or GPLv2+ or LGPLv2+
  • 2 - MIT and GPLv2
ויש כמובן מספר חבילות בעלי רשיון יחודי משלהן. כמה דוגמאות מפורסמות:
  • 1 - ImageMagick
  • 1 - OpenSSL

בקיצור: עם תכנה חופשית -- למעלה מ־1000 חבילות מכוסות על ידי 9 רשיונות בלבד.

כמה רשיונות נצטרך לנהל למוצר קנייני המכיל רק 50 מרכיבים חיצוניים? כמה עורכי דין נצטרך כדי לוודא ש־50 הרשיונות תואמים אחד לשני (ולדרישות החוק במדינה שלנו, או מדינות אחרות).

הוא שאמרתי: בית משוגעים.

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



3 תגובות:

  1. פוסט יפה המעלה כמה נקודות למחשבה.

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

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

    השבמחק
  2. האמת, בעולם התכנה החופשית יש לא פחות בעיות משפטיות... רק במקרה לרובינו אין כסף לשכור עורך דין. האמת גם לא צריך כי רוב הדברים מכוסים ב־FAQ.

    אחת הדוגמאות זה ‎4-clause-BSD של OpenSSL וכמה רכיבים אחרים ו־GPL. זאת בעיה ממש רצינית - כי הם לא תואמים. ומה קורה, יש המון מוצרים עם רישיונות permissive בסגנון MIT שמשתמשים ב־OpenSSL, לדוגמה Boost.Asio (שאגב גם לו רישיון בפני עצמו).

    פתאום אתה מוצא את עצמך בסיבוך רציני.

    עכשיו, יש בעיה אחרת. גם אם נגיד HP קנה את Compact שקנה את Digital, עכשיו כל זכויות היוצרים שייכים לה, והם יכולים לשנות רישיון (כמובן למעט רכיבי צד ג' שנרכשו).

    עכשיו, נגיד יש פרויקט שמפותח תחת GPL והוא רוצה לשחרר את הקוד תחת LGPL או אפילו MIT... אבל עברו כמו שנים, היו 5 תורמים לקוד הפרויקט.

    במקרה הטוב, אתה תוכל ליצור קשר עם כולם והם יסכימו לשנות את הרישיון...

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

    זאת בעיה מאוד גדולה שקיימת בהמון פרויקטים שגם אם הם היו רוצים לשנות את הרישיון שלהם למשהו שונה, אפילו ‎4-clause-BSD ל־‎3-clause-BSD, הם לא יכולים!

    כך שאני לא חושב שהבעיות שלנו יותר פשוטות.

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

    השבמחק
  3. ארתיום:
    1. ביטלתי את הקפצ'ה לניסיון, נראה אם זה יחזיק...
    2. עניתי בבלוג שלך:
    http://art-blog.no-ip.info/newpress/blog/post/256
    3. הטעות בניתוח שלך (וגם של עורך הדין שלמאמרו הגבתי) נובעת מכך שנדמה לך שתכנה קיניינית מפותחת כמקשה אחת, בחברה אחת, עם רשיון אחד (להבדיל מתכנה חופשית המשאירה את זכויות היוצרים בידי המחברים השונים). אבל המציאות רחוקה מזה כרחוק מזרח ממערב...

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

    בתכנה חופשית:

    כמות הרשיונות (הגדולה מידי) -- עדיין קטנה בסדרי גודל מכמות הרשיונות בתכנה קיניינית.

    כמות הרשיונות הבעייתיים (למשל openssl אותו הזכרת) היא קטנה והם ידועים

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

    השבמחק