הרבה חברות תוכנה נבהלות כשהן שומעות שהמפתחים שלהן רוצים להשתמש, או כבר משתמשים ברכיבי קוד פתוח.
בפוסט הזה אני אספר קצת על רשיונות הקוד הפתוח הנפוצים, ומה המשמעות של כל אחד מהם מנקודת מבטה של חברת תוכנה שרוצה להשתמש בקוד תחת הרשיון.
הערה:
אני לא עורך דין, ולמרות שאני די בטוח שרוח הדברים נכונה – יתכן ויש לי טעויות.
אני אשמח לקבל תיקונים.
GPL
GPL הוא אחד מרשיונות התוכנה הנפוצים ביותר בעולם, והוא גם כנראה הרשיון הבעייתי ביותר מנקודת מבטה של חברה מסחרית שלא תומכת אידיאולוגית בקוד פתוח.
GPL אומר בעצם משהו די פשוט:
הקוד משוחרר ברשיון ששומר על החופש של המשתמשים לשנות אותו. אם אתם מפיצים קוד שהופץ תחת GPL – כל הקוד שמשתמש בקוד ברשיון GPL צריך להיות משוחרר תחת GPL. זאת כדי למנוע מצב בו המשתמשים בקוד מקבלים חופש פחות מזה שקיבל המפתח שהשתמש בקוד ששוחרר תחת GPL.
אם קרה שמפתח הכניס בטעות קוד ברשיון GPL לתוך המוצר לפני שהוא שוחרר,אלו האפשרויות:
1.להוציא מהקוד של החברה את הקוד שתחת רשיון GPL.
2. לפנות למפתח הקוד ולבקש לרכוש רשיון חלופי (לא תמיד זה אפשרי כי במקרה שזכויות היוצרים לקוד שייכים לריבוי אנשים כולים צריכים להסכים).
3. לשחרר את כל הקוד שמתלנקג' עם קוד ברשיון GPL תחת GPL (בדרך כלל חברות יעדיפו לא לעשות את זה אלא אם כל הקוד שלהן מראש היה ברשיון GPL)
כדאי לשים לב שהרשיון מדבר על הפצה ולא על שימוש. מותר לכל אחד לקחת קוד ששוחרר תחת GPL, ולהשתמש בו כרצונו בלי הגבלות ובלי חובות כל עוד התוצר לא מופץ. לכן זה בסדר להשתמש בקוד ברשיון GPL לשימוש פנימי בחברה (ולא בגלל שאף אחד לא יגלה, אלא כי זה ממש בסדר). כמו כן, אפשר להשתמש חופשי בקוד GPL בצד השרת, בלי לחשוש – גם אם השרת משרת משתמשים חיצוניים לארגון.
יש לציין שתוצרים של תוכנית ששוחררה תחת GPL לא נדבקים בGPL, למעט במקרים מאוד מיוחדים בהם התוצרים מכילים חלקים מהתוכנית המקורית (כמו למשל YACC – תוכנית לייצור קוד לפענוח שפות).
הגרסא הנפוצה ביותר של GPL היא גרסא 2, וממש לאחרונה יצאה גרסא שלוש של GPL, שנועדה להתמודד עם השינויים שהתרחשו בעולם התוכנה מאז שוחרר GPL2 ב1991 – למשל הפריחה של תעשיית הפטנטים; בנוסף, GPL 2 נכתב תוך מחשבה על חוק זכויות היוצרים האמריקאי, ולכן הוא לא מאוד מתאים לשימוש מחוץ לארצות הברית.
LGPL
Lesser GPL הידוע גם בשם Library GPL הוא רשיון דומה לGPL, בהבדל חשוב אחד:
אם משתמשים בקוד בלי לשנות אותו ומפיצים את האפליקציה – היא לא "נדבקת" בGPL.
לעומת זאת, אם תבצעו שינויים בקוד LGPL ותפיצו אותו (כחלק מהאפליקציה שלכם), הכל ישוחרר תחת GPL. הרשיון הזה שימושי בעיקר לספריות קוד שמפתחיהן רוצים לקבל תרומות קוד חזרה מפרוייקטים מסחריים שמשתמשים בספריה. ברגע שחברה מסחרית מבצעת שיפור לספריית LGPL, יש לה מוטיבציה גבוהה מאוד לתרום את השינוי כדי שהוא יהפוך לחלק מהגרסא הבאה של הספריה.
רשיונות "עשה מה שאתה רוצה"
הרשיונות הבאים נופלים לקטגוריה של "עשה מה שאתה רוצה", כדאי לקרוא את הרשיון עצמו לפני השימוש, אבל בגדול המגבלות שהם מטילים הם מינימליים אם בכלל, וקל לעמוד בהם (דברים מסוג של לצרף עותק של הרשיון למוצר הסופי ו/או לציין שנעשה שימוש בקוד מסויים).
Apache license , שווה לקרוא את הFAQ שמסביר בדיוק מה מותר ומה אסור בשפת בני אנוש.
BSD license, אחד הרשיונות הפשוטים והמתירנים ביותר.
Mozilla public license – הרשיון של ארגון מוזילה, שמשחרר בדרך כלל תחת MPL, GPL וLGPL את הקוד שלו (הרשיון לבחירת המשתמש). עדכון: לא ממש מתאים לקטגוריה הזו (תודה לצפריר).
Eclipse public license, הFAQ
: Public domain נחלת הציבור. רשיון "העשה מה שבא לך" האולטימטיבי.
באופן מפתיע, לפעמים הוא מתירני מדי – Eclipse למשל מסרבים לקבל קוד תחת הרשיון הזה כי הם לא יכולים להבטיח שכולו נקי מזכויות יוצרים. (הטענה הזו מבוססת על נסיון שלי עם Eclipse, שרוצים לקלוט קוד שכתבתי שמסתמך על קוד תחת הרשיון הזה (ANTLR V2)
פוסט חשוב. צריך גם להסביר שתוצר של שימוש בתוכנות קוד פתוח (קובץ שנוצר בעורך טקסט, או תמונה שצוירה ב-GIMP) לא מושפע מהרשיון. אני אומר את זה כי כבר הצעתי למישהו להשתמש ב-KATE והוא סירב, מחשש שהתוכנית שהוא כותב תיאלץ להיות בקוד פתוח גם היא.
* הערה: נדמה לי שיש בעיית ניסוח כאן:
אולי הכוונה היא "למנוע מהמשתמשים לנצל לרעה"?
רוא"ש, תודה, תיקנתי.
הקודהפוסט 🙂 נכתב בהפסקות, ואיכשהו השתרבב לשם המשפט המוזר הזה. 🙂רשימה של סוגי רשיונות קישור אליהם ותקציר של תכונותיהם החשובות ניתן למצוא פה:
http://www.codeproject.com/info/Licenses.aspx
מוזר לראות את רשיון ה־MPL תחת "עשה לפי רצונך". למעשה הוא רשיון copyleft שדומה בקוויו הכלליים ל־LGPL. לצערינו הוא מנוסח בצורה פחות קריאה והרבה יותר גרועה ולכן יש בו לא מעט בעיות טכניות. ספק אם הוא רשיון חופשי. כנ לא שמעתי שמותר למיקרוסופט להשתמש בקטעי קוד של מוזילה עם "מגבלות מינימליות".
Public domain אינו בדיוק רשיון אלא העדר צורך ברשיון: תחום הציבור – מה שאין עליו מגבלות של זכויות יוצרים.. יש גם כאילו שטוענים שאין אפשרות חוקית להכריז על תוכנה כשייכת ל־public domain. זו כבר שאלה עבור עורכי־דין. sqlite ולאחרונה גם qmail נמצאים ב־public domain.
לגבי רשיון BSD: ישנן עדיין כמה תוכניות (לדוגמה: openssl) אשר משתמשות בגרסה הישנה והמעצבנת של רשיון BSD. גרסה זו אמנם חופשית, אך לא תואמת ל־GPL מסיבה דומה לזו שהיא מעצבנת. למעשה ההרגשה שלי היא שאף אחד לא מקיים אותו כלשונו.
וכמובן השחרת הפנים הרגילה של ה־GPL מצד מי שחושב רק על כתיבת תוכנה ולא על שימוש בה. את אותו הטיעון של ויראליות אפשר לטעון כנגד כל רשיון copyleft (ובפרט: גם LGPL ו־MPL מהרשימה שלך) וגם כנגד לא מעט רשיונות שימוש פחות חופשיים לקוד מקור.
עם כל הכבוד, לרוב המשתמשים לא מזיז בגרוש באיזה רשיון משוחרר הקוד של התוכנה (אם בכלל).
אני לא משחיר את פני GPL, פשוט הצגתי את העובדות כמו שהן (נכון – מנקודת מבט של מי שכותב תוכנה).
GPL הוא הרבה יותר עויין לקוד מרשיון לא תואם מאשר LGPL, וזו עובדה.
לגבי MPL, תיקנתי – תודה.
שוב כתבתי כאן תשובה ארוכה ומפורטת, שוב היא נחסמה והוגדרה כספאם אחרי אימות אופנאיידי, ושוב כשאני לוחץ "אחורה" טופס התשובה כאן נמחק והלכה התשובה. זה כיף לענות אצלך כמעט כמו בבלוגר.קום (וזו לא אמירה חיובית!)
אז אני אגיד את זה קצר מחדש: תתבייש שאתה קורא לGPL "ויראלי", ההסבר שלך לוקה בהמון חוסרים ונשמע כאילו יצא מהפה של הBSA.
אתה לא כתב של ידיעות, אני מצפה ממך להרבה יותר.
עירא, צר לי על התגובה האבודה, אני צריך לבדוק למה זה קורה. סימנתי תגובות מאומתות openid לאימות מיידי, אבל משום מה זה לא עובד.
אין לי מה להתבייש, אתה מוזמן לכתוב תגובה מפורטת חדשה ולהסביר איפה אני טועה.
לגבי LGPL,
הסיבה העיקרית לבחור בו כמשתמש או כמפתח היא שהוא מאפשר לחברות מסחריות להשתמש בספריות LGPL
בתוך מוצריהן המסחריים ולהשאיר את המוצר שלהן תחת רשיון מסחרי (כפי שכתבת כל עוד לא שינו את הספריות).
אני לא חושב שהסיבה העיקרית היא שחברות מסחריות יכולות לתרום קוד בחזרה למפתח, זה גם קיים ב- GPL.
עירא,
אני חושב שרשיון מדביק כל תוכנה שמשתמשת בקוד שלו ראוי להיקרא ויראלי, וחבל ש"וירוס" נותן תמיד קונוטציה שלילית.
הידעת שייתכן שהאבולוציה של האדם התאפשרה בזכות קטעי די-אנ-איי שוירוסים החדירו לאבותינו הקדמונים?
כמו כן, וירוסים משמשים ככלי להנדסה גנטית, ואולי בזכותם יוכלו לפתח זנים זולים ועמידים של אורז ולהאכיל את אוכלוסיות העולם הנחשלות.
אני חושב שקצת נסחפת עם התגובה החריפה, או שזה פשוט אחרי שמנגנוני האנטי ספאם הכושלים עיצבנו אותך 🙂
– אורן
אורן, אולי לא הייתי מספיק ברור:
זה שחברות יכולות להשתמש בקוד תחת LGPL בלי לשנות את הרשיון של של הקוד שלהן זה מעודד ללא ספק. הנקודה שלי היא שגם אם חברה רוצה לבצע שינויים בספריה, היא יכולה לתרום אותם חזרה כדי "להלבין" את השינויים ולא להיות מחוייבים לשחרר הכל תחת GPL.
זה לא בשבילך להתבייש, זה בשבילי לנסח הכל מהתחלה. אני שונא לחזור על עצמי, יש לי בעיה בשורשי כף היד, אני משתדל להקליד פחות, זה הכל.
"ויראלי" זו המצאה של אנשי השיווק של מיקרוסופט. לבחור במילים שליליות כמו "פיראטי" ו"ויראלי" כדי לתאר תופעה זה לשתול דיעה קדומה בראשו של הקורא. בנוסף זה גם פשוט לא נכון. לפתח פיצ'רים למוצר קיים זה לא "נדבק אליו קוד". הניסוח שלך נשמע כמו FUD שמנסים הBSA שנים להאכיל את העולם.
כנ"ל התיאור שלך של הLGPL (שכבר לא מציין ספריות קרוב לעשור), לוקה בהחלט בחסר.
לבסוף, נראה שההרשמה לתגובות לא עובדת, כי לא קיבלתי הודעות בדואל על תגובות שנוספו.
ראשית, התנצלות חזרה. נראה שהרישום לעדכונים עובד, אבל הפעם הפילטר של ג'מיל התלהב יתר על המידה.
ולגבי מילים, אורן: לא חברים היום אנשים שנדבקו לעובדה שלאובמה קוראים "חוסיין" כדי להסיק שהוא מוסלמי ואסור להצביע לו. אתה יכול לשמוע קטעי ראיונות שאוספים בדיילי שו בשביל להבין כמה מטומטמים יכולים אנשים להיות, אבל לא מדובר בבודדים אלא במאות אלפים אם לא מליונים בארצות הברית שמשוכנעים שהוא טרוריסט שבא להחריב את אמריקה. אנים מאוד מושפעים ממילים. למשל העובדה שרובם לא גנטיקאים ולא פתחו ספר של דוקינס ובשבילם הקונוטציה היחידה של וירוס היא מחלה. מספיק פעמים האשימו את הFSF בקומוניזם, טוב שאנחנו לא בשנות החמישים או שמישהוא עוד היה לוקח את זה ברצינות.
לרשיון יש תנאים. טייק איט אור ליב איט. לקרוא לו ויראלי באוזניים של משקיע, או לקוח טיפש או אפילו כמה תוכניתנים שפגשתי שלא מבינים ברשיונות, זה להוציא אותו מהמשחק שלא לצורך. השימוש במילים האלו פוגע. לכתוב בהתנסחות כזו בבלוג שלך זה להפיץ נוסחים בעייתיים שגוגל אח"כ מאנדקס ומפיץ בשבילך בפעם הבאה שמישהו יחפש חומר בעברית על הGPL. אני מעדיף שיהיה לו משהו כתוב קצת יותר חיובי. משהו על ארבעת החירויות הבסיסיות של ה Gnu Manifesto, ועל כמה שהרשיון הזה לא מונע מסחר, ולא הפצה עם מוצר סגור, וכמה חברות מצליחות קמו בעזרת קוד שהופץ תחת הרשיון הזה. במקום זה הנוסח שלך מפחיד אנשים שלא בתחום ולא יודעים במה מדובר.
קרא מחדש את הטקסט שלך לא כגיק שנמצא בענינים אלא בתור גולש אינטרנט ממוצע, ותראה שאתה עושה יותר נזק מתועלת להסברה של רעיון חופש התוכנה כאן…
עירא, לא התכוונתי לשתול דעות קדומות תוך כדי הפוסט בראשו של הקורא.
בתחילת הפוסט הזה כתוב שהוא מספר על רשיונות קוד פתוח מנקודת מבטה של חברה שמפתחת קוד.
GPL הוא רשיון שעשה מהפכה מדהימה בתחום פיתוח התוכנה ויצר תרבות שלמה, אבל הפוסט הזה לא בא לקדם אותו או את הרעיון של חופש התוכנה.
זה יכול להיות פוסט אחר לגמרי, ואתה מוזמן לכתוב אותו אם תרצה.
לדעתי קוד ברשיון GPL לא מתאים לשימוש כחלק מבסיס הקוד של חברות שמפתחות קוד אם הקוד שלהן לא היה מלחתחילה תחת רשיון תואם או אם אין מוכנות לשחרר את הקוד הרלוונטי תחת רשיון תואם (וזה נכון לגבי רוב החברות שמפתחות קוד).
כמובן, יש מקרים שבו הוא מתאים נהדר, ובפוסט הזה ניסיתי לתאר את המקרים האלו (שימוש פנימי, שימוש בצד שרת).
לגבי וויראליות:
לא כתבתי את זה כמילת גנאי. אלא משהו שאני תופס כאמת.
אם להשתמש במילה שלילית באמת, בסיטואציות מסויימות יש משהו נבזי בדרישות של הGPL:
אם חברה פיתחה מוצר עם מליון שורות קוד, ובחרה מסיבותיה לא לשחרר את הקוד – מספיק שפיסת קוד קטנה ששוחררה תחת תנאי הGPL תשתרבב למוצר – כדי שהרשיון של כל הקוד יצטרך להשתנות.
במקרה הזה, אין לי בכלל ספק שעדיף לחברה לא להשתמש בקוד תחת GPL בהקשר הזה.
מהבחינה הזו LGPL הוא הרבה יותר מעשי, ואפקטיבית דורש שרק השיפורים הרלוונטיים (אם יש) לקוד תחת LGPL יתרמו חזרה.
אגב – כשאני משחרר קוד תחת GPL, אני יודע שהרשיון לא יתאים לחברות מסחריות, ואני בהחלט אסכים למכור רישיון מסחרי לקוד למי שיבקש להשתמש בקוד שלא תחת תנאי הGPL.
שוב אני לא מבין אותך.
קוד של מליון שורות ופתאום "השתרבב" קוד? תן לי דוגמא איך קורה דבר כזה. אתה כותב תוכנה ע"י cut&paste ממקורות אחרים או כותב אותה בעצמך? אם אתה כותב קוד שמכיל סקריפטים של bash שמפעילים grep אלו סוגי האינטראקציות שהGPL מרשה כי יש ממשק מוגדר היטב. גם מערכת שרצה תחת קרנל פתוח ועם ספריות פתוחות. גם ספריות בלינק דינאמי. המקום היחידי שGPL יעשה לך "בעיות" זה קומפיליציה עם ספריה בלינק סטאטי (אאל"ט) ורק לשם כך בא הLGPL.
אם "שרבבת" בכוונה לתוך מוצר שלך קוד של מישהו אחר, ולא משנה באיזה רשיון, יש לך בעיה, נקודה. ההבדל הוא שבעל רשיון סגור יסכים לקבל תשלום ולהתדיין על התנאים, ואילו פרויקט תוכנה פתוחה הוא לקוב בבעלותם של מספר אנשים שתצטרך את הסכמת כל אחד מהם לצורך הענין, ולרוב מסיבות אידאולוגיות אתה עלול לא לקבל אותה.
להגיד שיש משהו נבזי בדרישות של הGPL זה פשוט לפספס את הפואנטה שלו. הGPL נוצר כי הוא טוען שקוד סגור הוא-הוא ההתנהגות הנבזית וכל הסיבה להקמת פרויקט גנו היתה הרי למגר את הנבזות של קוד סגור, ולכן הנקודה החשובה של הרשיון היא הסעיף שמונע ניצול לרעה של הקוד. הדרישה שמגוכחת שלך שכל חתיכת קוד שאתה רואה, תוכל להעתיק אליך ולהחביא אותה היא דרישה אנוכית ומתעלמת לחלוטין מרצונם של מי ששחררו את הקוד הזה, הלא הם בעלי זכויות היוצרים, אז למה שיותר לך?
הרבה חברות משלבות מוצרי GPL במוצר, רק לא בלינק ישיר עם הקוד אלא דרך API מוגדר, אם ספריה, אם דרך פרטיכל שעובר בsocket ואם ע"י fork. אין שום בעיה חוקית ומוסרית עם זה, וזה לא אתגר טכנולוגי שמהווה בעיה להוציא את התוכנה לשיווק. מי שמנסה להתחכם יותר מזה, לא צריך לקבל שום גיבוי משפטי, מול אף רשיון תוכנה.
ולכן אני חוזר לעמדתי המקורית, אם הטקסט לעיל נכתב כעצה לחברה מסחרית שבאה להשתמש במוצרי GPL קיימים, הרי שהוא פשטני, טועה ומטעה. זה לא שקוד GPL "הופך את כל מה שנוגע בו לGPL" אלא שהוא "נכתב מראש ויועד לשימוש ישיר אך ורק מתוך פרויקטים של רשיונות תואמי GPL". להתעקש לקרוא לו "ויראלי" ו"מדבק" ושאר דברים שמזכירים לאנשים מחלות וכאב, זה כמו להגיד שקוד שהתחיל להכתב בג'אווה הוא "ויראלי" כי הוא לא יכול להתלנקג' עם קוד בC# ומכריח אותך לכתוב את הקוד כולו מחדש בג'אווה.
או בדוגמא פשוטה יותר מהחיים: אם תנסה לגדל חתול בבית מלא שטיחים וצמחים, אתה לא יכול להאשים את החתול ב"ויראליות" כי השטיחים מתמלאים בשערות שלו והצמחים מכורסמים. אם אתה בוחר לגדל חתול אתה צריך לקבל מראש בעובדה שיש סדרים מסוימים בחיים שיהיו חייבים להשתנות ויש ציפיות שונות מרגע שיש חתול בבית. חתול לא סתם משתרבב דרך קבע לבית, או שאתה צריך לתקן את הרשתות או להפסיק להשאיר אוכל בחוץ.
עומרי,
עיצה להבא – תכתוב על הפוסט שאתה לא עורך דין. למרבה הצער, יש לך חוסר הבנה מסויים של איך המערכת עובדת.
לא נכון. הוא חייב להיות משוחרר תחת הרשיון של ה-GPL ממש. הרשימה שאתה מפנה אליה היא רשימה של רשיונות שתואמים ל-GPL, לא רשיונות שה-GPL תואם להם.
זה תיאור פשוט לא נכון של המקרה.
אם חברה פיתחה מוצר עם מליון שורות קוד ולקחה מספר קטן של שורות קוד שלא היא בעלת הזכויות שלו, ושנלקחו ללא רשות בעלי הזכויות, הרי שהחברה מפרה זכויות יוצרים. זה נכון בין אם הקוד הוא GPL ובין אם הוא כל רשיון אחר, קנייני או חופשי. במצב כזה יש מספר אפשרויות. החברה יכולה להוציא את הקוד המפר. זה יחזיר אותה לתאימות עם החוק, אבל בהחלט ייתכן שבעלי הזכויות יתבעו ממנה לשלם פיצויים (כספיים בלבד!) על ההפרה שבוצעה. אופציה שניה היא שהחברה תשיג רשיון בדיעבד לשימוש בקוד, מתוך תנאי הרשיון של הקוד או מתוך הסכמה עם בעלי זכויות היוצרים. אלו האופציות, בלי קשר לשאלה חופשי או קנייני, GPL או לא.
לגבי ה-GPL בפרט – הסיכויים שיתבעו אותך על פיצויים כספיים בלבד אם השתמשת בקוד GPL ואז הסרת אותו הוא נמוך יותר מאשר במקרה שבו השתמשת בקוד קנייני. בגרסה 2 של ה-GPL ברגע שהפרת את תנאי הרשיון הרשיון של פג, ואסור לך להפיץ את התוכנה ללא קבלת רשות מפורשת של בעלי הזכויות. ב-GPL גרסה 3 הסעיף הזה תוקן, ומרגע שבעל הזכויות הודיע לך שאתה מפר עומדים לרשותך מספר שבועות כדי להביא את עצמך לתאימות לתנאי הרשיון ללא אובדן הרשיון המוחלט. במילים אחרות, ניתנת לך האופציה להסיר את הקוד שבו השתמשת ללא רשות או להתאים את עצמך לתנאים שלו. זה משהו הרבה יותר נדיב ממה שתקבל ממיקרוסופט אם תשתמש בקוד המקור (שמסתובב ברשת) של חלונות בתוך המוצר שלך.
במילים אחרות, קשה לראות מצב שבו חברה נאלצת לשחרר את קוד המקור שלה בגלל שימוש רשלני במעט קוד תחת ה-GPL, למעט מקרים שבהם חלק ה-GPL של הקוד הוא כל כך גדול עד שבלעדיו לחברה אין מוצר. המקרים האלו מאוד רחוקים מהמקרה שאתה מתאר, והם יותר דומים למצב ההפוך, שבו מוצר של מליוני שורות קוד מכיל כמה שורות בודדות של קוד קנייני. כל המקרים שהגיעו לבתי משפט עד היום היו מהסוג הזה, שבו החלק הארי של המוצר היה תחת ה-GPL.
שחר
עירא:
תיקנתי את הפוסט שלא יכיל מילים שאתה תופס כשליליות בתאור של GPL.
לשאלתך:
איך השתרבב?
למשל : מפתח אחד מתוך 100 אחרים, בחור חכם אך חסר מודעות לזכויות יוצרים הכניס אותו לשם.
עירא, אני לא דורש שיותר לי להעתיק כל חתיכת קוד.אני כן אומר שהדרישה האבסלוטית לשחרר את כל הקוד של המוצר תחת GPL במקרה ששורת קוד בודדת תחת GPL נכנסת לתוכו היא לא סבירה בסיטואציות מסויימות, ובסיטואציות האלו עדיף להימנע מלהכניס קוד תחת GPL למוצר.
בעצם זה שאתה מציע מעקפי GPL אתה בעצם מודה שאני צודק.
לגבי הדרכים עוקפות הGPL שהצעת:
1. קישור דינאמי מול קישור סטטי:
לדעתי זה עניין טכני לחלוטין. לא סביר להניח שקישור דינמי ישנה את המהות של הקוד והאם הוא יצירה נגזרת או לא. אם זה המצב (וזה בכלל בכלל לא ברור, תקרא את זה למשל) זה סתם ניצול של חור ברשיון.
2. תקשורת עם קוד תחת GPL על גבי סוקט:
זה עוד חור ברשיון. זה פשוט עקיפה שת רוח הרשיון בשימוש באמצעים טכניים שכל המטרה שלהם היא לעקוף את הרשיון. מספר המקרים שבהם דבר כזה הוא דרוש באמת הוא אפסי. אם אתה עושה את זה רק כדי להשתמש בקוד תחת GPL – זה אולי כשר, אבל בטוח מסריח.
3. fork:
איך בדיוק זה פותר את הבעיה? הפורק עצמו יהיה תחת GPL וחזרנו לנקודת ההתחלה.
לגבי החתול:
בדיוק בגלל זה אין לי חתול!
לפני שאתה מבין מה קורה, כל הבית שלך ברשיון חתולפיאל.
שחר,
כתבתי שאני לא עורך דין בסוף הפוסט.
בגלל שיש אנשים שמגיבים לפני שקראו את הפוסט עד הסוף :), הזזתי את ההערה לראש הפוסט.
לגבי רשיון תואם:
אתה צודק כמובן, טעות (מביכה אפילו, כי ידעתי את זה ואיכשהו התבלבלתי בזמן כתיבת הפוסט). תיקנתי את זה.
לגבי מליון שורות קוד:
זה לא תאור של "ה"מקרה.
זה תאור של מקרה ספציפי שבו דרישות הGPL גורמות לכך שעדיף לא להשתמש בקוד תחת GPL.
הוספתי לפוסט את רשימה של האפשרויות במקרה שקוד GPL מוכנס לקוד סגור (לפני שהכל שוחרר).
תודה.
אוקי, אז גם אני עכשיו חטאתי בהפשטה יתרה. כמובן שלא סוג הממשק משנה אלא העובדה שיש API מוגדר והפרוסס שלך והפרוסס הGPLי מדברים אחד עם השני בצורה פתוחה ומתועדת, ולא הכנסת קוד משובש (obfuscated) לפרויקט הGPL ושחררת אותו כדי שהמוצר שלך ינצל את המוצר הGPLי בדרכים שאתה לא רוצה שאנשים יבינו מה עשית. _זאת_ התחמקות. ולא מדובר כאן על חור ברשיון. אין שום בעיה ששרת דואר יהיה סגור והלקוח פתוח או שרת אפאצ'י פתוח משרת לקוח אקספלונטר סגור, כל עוד הפרוטוכולים שבאמצע פתוחים (HTTP, SMTP, IMAP וכדומה)
כשכתבתי פורק, זה היה ברשימה של סוגי תקשורת בין פרוססים, לא התכוונתי לפורק של גרסאות קוד כמובן, אלא לפרוסס אחד שמייצר פרוסס אחר בפעולה של הרצה.
רק השבוע נתקלתי בתוסף פוטושופ סגור שלצורך פעולתו צריך לתת לו קובץ "מסיכה" בפורמט BMP. כדי לאפשר למשתמש לספק גם קובץ JPEG או GIF פשוט נכללה convert.exe כלשהיא שהיא למעשה כלי ImageMagic מקומפל סטטית לחלונות והתוסף מריץ אותה לפי הצורך. זה חוקי ועובד יופי כי מדובר בקובץ חיצוני שמתקשרים איתו בצורה גלויה ומוגדרת היטב, ולכן אין בעיה לכלול אותו עם מוצר סגור. כמו כן אי אפשר להגיד שהוא חלק מהמוצר הסגור כי:
א. אין בעיה לקמפל את המוצר ללא המצאות הקובץ הפתוח בסביבה.
ב. כיון שהפונקציונליות שאותה מספק הקובץ הGPLי מוגדרת היטב, ואינה מיועדת לשרת אך ורק את אותו המוצר הסגור, מכאן שלא נעשה שימוש ציני לרעה בקוד, ואפילו רוח הGPL נשמרת, ולא רק הטקסט עצמו.
במקרה הזה מופץ קוד GPL "כחלק מהמוצר" אבל בצורה חוקית. מהניסוח שלך אנשים עלולים לפחד מהGPL עד כדי שלא יכירו בעובדה שהאפשרות הזו קיימת.
עירא,
זו אכן נקודה מעניינת של שימוש בקוד GPL, ואני מסכים שבמקרה כזה זה לגיטימי לגמרי להפיץ קוד מקומפל תחת רשיון GPL בלי בעיה.
יפה, וזה בדיוק סוג המידע שחברות צריכות לדעת כשהן משתמשות בקוד פתוח, ועל זה היה צריך להיות הפוסט שלך. אם המטרה שלך היתה, כפי שטענת, להסביר למה ואיך אפשר להשתמש במוצרים חופשיים בתוך פרויקט קנייני, אז לא עשית את המלאכה, אלא רק הפחדת את הקורא ההדיוט לחשוב שבאמת יש לתפוס מרחק מהGPL. ועל זה קבלתי מההתחלה.
אני אתייעץ איתך בפעם הבאה שאני ארצה לכתוב פוסט כדי שלא להיקלע למצב שבו הוא לא על מה שהוא אמור להיות.
נו מה, עכשיו אתה נעלב לי או סתם סרקאסטי?
הכרזת כאן שזה פוסט מייעץ ליצרני מוצרי תוכנה, אבל לא נתת בגוף הפוסט אף עצה מעשית, רק אזהרות מה לא. ככה לא משווקים רעיון, ככה מרחיקים ממנו את הלקוח, זה כל מה שאני אומר בעצם…
תודה מאוד שימושי …
קידום קוד פתוח ולינוקס בישראל