הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
BSD או LGPL?
עם התקדמות הפרויקט שלי אני מתחיל להתלבט: האם בחירת רישיון BSD הייתה נכונה.
מה אני רוצה:
- שרישיון לא ימנע מפרויקטים לקחת את התשתית ולהשתמש בה, אפילו לצורך שימוש מסחרי.
- אני כן רוצה לאפשר static linking בגלל שזה פשוט מקל על תהליך deploy בצורה משמעותית.
- אני לא רוצה לתת את הספרייה לכל אחד לעשות את מה שחפץ לו: קרי לשנות אותה לפתח על בסיסה משהו אחר ולא לפתוח את הקוד.
מצד אחד, LGPL הוא טוב למטרה ראשונה והאחרונה, אבל עם השנייה יש בעיה: הוא לא מאפשר לבצע static link עם תוכנה בעלת רישיון אחר (אפילו מסחרי). וזה מאוד חשוב, כי קשה לעשות deploy לשרת מרוחק אם יש הרבה תלויות. (אפילו אני כשעושה deploy לשרת וירטואלי מקמפל עם גרסה סטטית של התשתית).
מצד, שני, רישיון BSD לא מסוגל לתת לי את מה שאני רוצה מבחינת הגנה על חופשיות הקוד. אבל במחשבה אחרת, האם זה מפריע לעשרות פרויקטים מוצלחים להישאר פתוחים כמו sqlilte, lighttpd ואחרים? האם אני באמת זקוק להגנה ש־LGPL נותן לי?
מה לעשות?.. שאלה קשה. עדיין לא החלטתי, אבל בינתיים אני נוטה להחליף רישיון ה־BSD ב־LGPL.
בכל אופן, אני לא רוצה רישיון בסגנון GPL או אחר בעל מגבלות דומות.
אז מה עדיף רישיון copyleft או non-copyleft?
בשימושים שלי אני די מעדיף להשתמש ברישיון שהוא non-copyleft כי אני יכול לקחת את הקוד כפישהו, לשנות ולשלב בתוכנה בלי ליצור ספריות נפרדות אלא ע"י static link למספר קובצי C (כמובן כשאני רוצה להכניס שינויים). אני לא יכול עשות את זה בצורה טריביאלית במקרה של LGPL. וזה תמיד מרתיע אותי ברישיונות כאלה. אני אפילו צריך לשכתב קטע קוד קטן ש"השאלתי" מ־contrib של CgiCC, בגלל שהוא LGPL ואז תוכנה שלא לא תהיה תואמת BSD.
מצד, שני, מי שיכול לקחת את הקוד הוא לאו דווקא אדם שישחרר את הקוד אחר כך, וזה כבר פחות מוצא חן בעיניי.
שאלה קשה... דעתכם?
תגובות
רוב הפרוייקטים של מהדרים וכו' משתמשים בתוספת שנקראת COPY בה הם מסבירים שמותר לבצע static linking וכו' לקוד LGPL.
הדיונים השונות על רשיונות בד"ג מעלים של BSD (אני מעדיף MIT ד"א) חופשי באמת, כי הוא לא מונע שום דבר, בעוד שGPL הוא פחות חופשי כי הוא מונע יותר את חופש השימוש.
ד"א ב opensource.org יש הרבה רשיונות (אני לא מכיר את רובם) אולי תצליח למצוא משהו.
אתה יכול להביא דוגמה: כי זה די מעניין, כלומר הם נותנים הסתייגות מסוימת מ־LGPL. אבל כיצד לעשות את זה בלי לפגוע ברישיון המקורי.
לא מומלץ להשתמש ברשיון נידח ש"נראה טוב". קל מאוד לכתוב רשיון גרוע. בחור בשם לינוס טורבלדס כתב לפני כמה שנים תוכנית קטנה לניתוח סטאטי של קוד וקרא לה sparse . הוא לא אהב את רשיון ה־GPL והחליט לכתוב בעצמו רשיון. התוצאה: התוכנית הקטנה הזו נמצאת ב־non-free של דביאן.
מה עוד נמצא ב־non-free? כל התיעוד הרשמי של פרויקט גנו, אשר זמין ברשיון GFDL.
גם ללינוס וגם לריצ'רד סטולמן היו כוונות טובות. התוצאות קצת פחות.
כמוכן למיטב זכרוני קישור סטאטי מול ספריית LGPL הוא חוקי בתנאי שתוכל להחליפו תמיד בקישור דינאמי. כלומר: הקישור הדינאמי אמור להיות הוכחה לכך שהתוכנית לא כוללת באמת חלק מהספריה.
אבל זהו כאן רק זכרוני הקודח ללא שום אסמכתא.
טוב, צריך לבדוק את הסוגיה היטב...
כי ראיתי שיש דבר כזה: GPL אם הסתייגות ויש LGPL והם איכשהו שונים בנושא static link.
חבל שהרישיונות כתובים בעורכ־דינית ולא בשפת אנוש.
רשיונות הם מסמך משפטי מחייב.
היית רוצה שתוכניות מחשב ייכתבו בשפת בני אדם?
משהו כמו הזוועות הבאות:
http://en.wikipedia.org/wiki/Chef_%28programming_language%29 http://en.wikipedia.org/wiki/LOLCODE
אני מניח שזה מה שעורכי דין יחשבו אם תבקש מהם לנסח חוזים בשפה לא מדוייקת.
אני יודע שמה שאמרתי אינו מציאותי... בכל אופן, זה עדיין לא הופך את הבעיה לפתירה: "כיצד להבין רישיון?"
לדעתי: LGPL. אני לא מבין למה יש בעיה לעשות deploy.
פשוט מאוד משתמשים בחבילות rpm/deb ומגדירים תלויות בספריות כמו שצריך. הכל זמין מרפוסיטורי (אפילו שלך), ואז ה- deploy באופן שקוף.
LGPL.
מותר לקשר אותו סטטית, ובלבד שכל מי שזכאי לקבל את קוד המקור של הספריה (כלומר - כולם) זכאי גם לקבל את התוכנית מקומפלת אבל לא מקושרת, כדי שיוכל להחליף את רכיב הספריה.
במילים אחרות, מותר לקשר אליו סטטית בלי לחשוף את קוד המקור.
שחר
תודה שחר, זו בהחלט נקודה חשובה...
חייב להגיד שהרישיונות האלה "קצת" מסובכים למידי.
למשל, אני עד עכשיו לא יכול להבין מה קורה כשאני עושה dynamic link לספריות תחת BSD בעל 4 סעיפים???
אוווופפף... יש מצב שאני אחליף את הרישיון ל־LGPL.
הוסף תגובה:
חובה לאפשר JavaScript כדי להגיב.