שימוש בקוד פתוח כתשתית IT לארגון: יתרונות, חסרונות וסכנות.

0.
בחודש הבא אני מתעתד להעביר במסגרת פורום CTO של אנשים ומחשבים הרצאה על שאלות משפטיות הנוגעות לשימוש במערכות קוד פתוח בארגון. ההרצאה היא חצי המשך של ההרצאה שהעברתי במסגרת OpenIsrael2010 על בניית סטארט-אפ עם קוד של אחרים. אולם, בעוד שההרצאה הקודמת דיברה על שימוש בקוד כיחידת הבסיס ממנה נגזר המודל העסקי, הקניין הרוחני המהותי של החברה והיתרון המסחרי שלה על מתחרים, כאשר אנחנו מדברים על תשתית הIT, אנו מסתכלים על יישומי קוד פתוח כקטליזטורים וכלי עזר: החל משרת הדואר, דרך מרכזית הטלפון ועד Firewall, בארגון היום ישנם עשרות כלי-עזר שנועדו לקדם את הארגון, ומחקר חדש מצא כי 98% מהארגונים משתמשים בקוד פתוח.

1.
אז בקצרה, מה הן תוכנות בקוד פתוח? תוכנות בקוד פתוח הן תוכנות בהן, בעת ההעברה, ניתן למזמין קוד המקור (Source Code) של האפליקציה, על ידי אחד מהרשיונות המקובלים על ידי הOpen Source Initiative ועוקב אחרי עשרות הדיברות לקוד פתוח: (1) הרשיון מאפשר הפצה חופשית של הקוד; (2) למקבל הרשיון יש את הזכות לקבל גם את קוד המקור של התוכנה; (3) מותר לייצר יצירות נגזרות מהתוכנה (כלומר, מותר לך לשנות אותה); (4) ניתנת גישה לתוכנה המקורית ממנה נוצרה התוכנה; (5) אין אפליה בין בני אדם או קבוצות בשימוש בתוכנה; (6) אין אפליה בין מטרות או שימושים; (7) הזכויות הצמודות לרשיון מוצמדות לכל הפצה נמשכת; (8) הזכויות אינן צמודות למוצר ספציפי אלא לקוד תוכנה; (9) הרשיון לא יכול להגביל תוכנה אחרת ו(10) הרשיון נייטרלי מבחינה טכנולוגית. במצב כזה, הארגון מקבל את הרשיון כמו יצירה מוזמנת עבורו, עם כל הזכויות ונקי מהתחייבויות לצדדים שלישיים: כל עוד הארגון לא מפיץ את הקוד לאחרים, מותר לו לעשות עם האפליקציה כמעט כל מה שהיה מותר לו לעשות אם הוא בעצמו היה כותב את הקוד, ואין חובה שהוא ישלם עבור רכישת הקוד או תמלוגים חודשיים (למרות שבפועל ניתן לגבות כסף עבור שירותים או התאמות).

2.
השימוש מאפשר חופש. לא בכדי תוכנות קוד פתוח נקראות גם תוכנה חופשית. לארגון שמקבל את התוכנה ניתן החופש לבחור מה לעשות עמו, ואינו קשור בהסכמים מגבילים של יצרני תוכנה וספקי שירותים. רשיון הGPL, לדוגמא, אחד הרשיונות הפופולריים, כלל אינו מאפשר להטיל כל מגבלה על התוכנה. סעיף 10 לגרסא 3 של הרשיון קובע כי "You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License". כלומר כאשר אתה רוכש או מתקין תוכנה שמוגנת על ידי הGPL, אתה מקבל אותה עם הזכויות שהספק שמכר לך אותה קיבל. בניגוד לרשיון בסגנון רשיון השימוש של חלונות XP, שאוסר עלייך הנדסה לאחור של מערכת ההפעלה, רשיונות התוכנה החופשית נותנים לארגון את הזכויות שבדרך כלל ספקי תוכנה לא היו רוצים לתת.

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

4.

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

4.
בעלות על הקוד. יתרון משמעותי נוסף הוא היכולת לשנות את קוד התוכנה ולהתאימה לתשתית הארגונית. ברוב המקרים, תוכנות שנרכשות מוגבלות מבחינה זו ולא ניתנות לשינוי, בין היתר בעקבות העדר הזמינות של קוד המקור. תנועת התוכנה החופשית החלה בעקבות רצונו של אדם אחד, ריצ'ארד סטולמן, לתקן את קוד המקור של המדפסת שלו. כאשר ארגון רוכש תוכנה בקוד פתוח, הוא מקבל יחד עם התוכנה את המקור, זהו התנאי הבסיסי ברשיון; במצב כזה, הוא יכול להתאים, לתקן, לשנות ולהוסיף רכיבים לפי צרכיו. עוד סוגיה היא שכל עוד הארגון לא מבצע הפצה של הקוד (כלומר, כל עוד לא מדובר בתשתיות שמופצות על ידי הארגון כחלק מהשירותים שהוא מספק), הרי שאין עליו חובה לשחרר את קוד המקור. גרסא 2 של רשיון הGPL, שהיא עדיין אחד הרשיונות הפופולריים ביותר, מאפשר לערוך שינויים ולהתאים את התוכנה ודורש כי רק אם יופץ הקוד (אשר הוא לא), ישוחרר הקוד תחת רשיון הGPL גם כן.

5.
יכולת להגדיל את האבטחה. עוד יתרון משמעותי בשימוש בקוד פתוח הוא אבטחה: כאשר התפיסה היא כי ככל שיותר אנשים יצפו בקוד המקור של תוכנה מסוימת, כך יותר כשלי אבטחה יתגלו ויתוקנו במהרה. אלא שהיתרון המשמעותי הוא קיומה של קהילה של מפתחים שמשוחחים בינם לבין עצמם ומעבירים מידע ותיקונים מידיים, כך שכשלי אבטחה מטופלים במהרה. עוד יתרון משמעותי הוא קיומן של תכניות תמריצים כמו תכנית התמריצים של Google Chrome אשר מעניקות למפתחים פיצוי כספי על כל שגיאת אבטחה שהם ימצאו או הZero Day Initiative.

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

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

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

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

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

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

15 thoughts on “שימוש בקוד פתוח כתשתית IT לארגון: יתרונות, חסרונות וסכנות.

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

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

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

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

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

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

  6. יאיר זו בדיוק הנקודה המשפטית אשר לא קשורה בהכרח לקוד פתוח אלא להפרת תנאי רישוי.

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

    רישיון קוד פתוח, כמו גם רישיון קוד סגור או "תנאי שימוש" (קרי EULA) בא להגן מפני הפרה, לא מפני עבודה תקינה.

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

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

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

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

  9. יאיר: GPL לא כל כך קל להפר: ההפרה מתבצעת בעת הפצת היצירה הנגזרת (קוד לצורך העניין, שימוש ב-copyleft ליצירות אחרות אינו מתאים לדעתי) לא בעת השימוש בו.

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

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

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

    דרך אגב, שימוש ברכיבי קוד פתוח בפיתוח של תוכנה או אתר או כל דבר יכול לחסוך המון זמן פיתוח, מה גם שעם הרישיון של GPL וMIT, מי שעושה שינוי או שיפור ברכיבים האלה מעוּדד (ולאו דווקא מחוייב) להחזיר אותם לקהילה כך שהמוצר גדל לפעם הבאה. כך שזה ייתרון משמעותי למתכנת שיודע לנצל את זה.
    הפסקת עבודה עם מתכנת רק בגלל שהוא השתמש בקוד פתוח, אך גם רצה להגן על עצמו מפני זליגה ושימוש לא נאות של הקוד שלו, נשמעת כאילו יש שם משהו הרבה יותר רציני מאשר זה.

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

  12. יש לי תהיה לגבי "דברה" 7 ("הזכויות הצמודות לרשיון מוצמדות לכל הפצה נמשכת"); לכאורה, לפי הניסוח הזה, וגם (עד כמה שאני מבין) לפי המקור שלו באתר של OSI, הרשיונות הליברליים (BSD, MIT וכדומה) אינם רשיונות קוד־פתוח, מאחר והם מאפשרים הפצה מחדש בלי מתן הזכויות (ודוגמאות שבהן הדבר אכן נעשה לא חסרות).

    מה אני מחמיץ?

Comments are closed.