BSD או LGPL?

ב־10.6.2008, מאת ארתיום; פורסם תחת: תכנה חופשית, פיתוח, תכנה ומחשבים, CppCMS; ‏10 תגובות

עם התקדמות הפרויקט שלי אני מתחיל להתלבט: האם בחירת רישיון 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.

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

שאלה קשה... דעתכם?

תגובות

ik_5, ב־10.6.2008, 16:03

רוב הפרוייקטים של מהדרים וכו' משתמשים בתוספת שנקראת COPY בה הם מסבירים שמותר לבצע static linking וכו' לקוד LGPL.

הדיונים השונות על רשיונות בד"ג מעלים של BSD (אני מעדיף MIT ד"א) חופשי באמת, כי הוא לא מונע שום דבר, בעוד שGPL הוא פחות חופשי כי הוא מונע יותר את חופש השימוש.

ד"א ב opensource.org יש הרבה רשיונות (אני לא מכיר את רובם) אולי תצליח למצוא משהו.

ארתיום, ב־10.6.2008, 16:10

רוב הפרוייקטים של מהדרים וכו' משתמשים בתוספת שנקראת COPY בה הם מסבירים שמותר לבצע static linking וכו' לקוד LGPL.

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

צפריר כהן, ב־10.6.2008, 19:18

לא מומלץ להשתמש ברשיון נידח ש"נראה טוב". קל מאוד לכתוב רשיון גרוע. בחור בשם לינוס טורבלדס כתב לפני כמה שנים תוכנית קטנה לניתוח סטאטי של קוד וקרא לה sparse . הוא לא אהב את רשיון ה־GPL והחליט לכתוב בעצמו רשיון. התוצאה: התוכנית הקטנה הזו נמצאת ב־non-free של דביאן.

מה עוד נמצא ב־non-free? כל התיעוד הרשמי של פרויקט גנו, אשר זמין ברשיון GFDL.

גם ללינוס וגם לריצ'רד סטולמן היו כוונות טובות. התוצאות קצת פחות.

צפריר כהן, ב־10.6.2008, 20:33

כמוכן למיטב זכרוני קישור סטאטי מול ספריית LGPL הוא חוקי בתנאי שתוכל להחליפו תמיד בקישור דינאמי. כלומר: הקישור הדינאמי אמור להיות הוכחה לכך שהתוכנית לא כוללת באמת חלק מהספריה.

אבל זהו כאן רק זכרוני הקודח ללא שום אסמכתא.

ארתיום, ב־10.6.2008, 20:58

טוב, צריך לבדוק את הסוגיה היטב...

כי ראיתי שיש דבר כזה: GPL אם הסתייגות ויש LGPL והם איכשהו שונים בנושא static link.

חבל שהרישיונות כתובים בעורכ־דינית ולא בשפת אנוש.

צפריר כהן, ב־10.6.2008, 21:29

רשיונות הם מסמך משפטי מחייב.

היית רוצה שתוכניות מחשב ייכתבו בשפת בני אדם?

משהו כמו הזוועות הבאות:

http://en.wikipedia.org/wiki/Chef_%28programming_language%29 http://en.wikipedia.org/wiki/LOLCODE

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

ארתיום, ב־10.6.2008, 22:22

אני יודע שמה שאמרתי אינו מציאותי... בכל אופן, זה עדיין לא הופך את הבעיה לפתירה: "כיצד להבין רישיון?"

אורן, ב־10.6.2008, 22:41

לדעתי: LGPL. אני לא מבין למה יש בעיה לעשות deploy.

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

שחר שמש, ב־30.6.2008, 11:22

LGPL.

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

במילים אחרות, מותר לקשר אליו סטטית בלי לחשוף את קוד המקור.

שחר

ארתיום, ב־30.6.2008, 22:30

תודה שחר, זו בהחלט נקודה חשובה...

חייב להגיד שהרישיונות האלה "קצת" מסובכים למידי.

למשל, אני עד עכשיו לא יכול להבין מה קורה כשאני עושה dynamic link לספריות תחת BSD בעל 4 סעיפים???

אוווופפף... יש מצב שאני אחליף את הרישיון ל־LGPL.

הוסף תגובה:

 
 כתובת דוא"ל לא תוצג
 

ניתן לכתוב תגובות עם שימוש בתחביר Markdown.

חובה לאפשר JavaScript כדי להגיב.

דפים

נושאים