קוד פתוח (?) איך לא תהרוס את המיזם שלך

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

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

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

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

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

זכויות יוצרים

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

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

הגבלת שימוש מסחרי

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

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

שינויים ומודיפיקציות

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

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

הפצה

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

הגרוע מכל  – הצגה בקוד פתוח

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

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

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

בהכנת המאמר עזר, חקר וכתב: יותם עזרי, מתמחה.

[1] במאמר מוסגר נציין כי ישנם מספר רישיונות קוד פתוח שתכליתם עסקית ואינם עובדים על פי אותו מודל אידילי הרואה את הקוד כנחלת הכלל. אלה נועדו בכדי לבסס "אחיזה" של ענקיות טכנולוגיה בעבודה היומיומית של מפתחים.

על הכותב

מוטי בבצ'וק
מוטי בבצ'וק

הכתוב והאמור באתר זה הינו מידע כללי בלבד ואין בן כדי להוות ייעוץ משפטי או תחליף לכזה כל הזכויות שמורות לזיסמן, אהרוני, גייר ושות' (ZAG-S&W)