כמה מילים על קוד פתוח, מיקרוסופט ובעלות על הקוד

27 בדצמבר 2015

תגיות: , , ,
אין תגובות

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

נושא הקוד הפתוח במיקרוסופט אינו חדש. כבר ב 2001, כאשר נולד ה .NET, מיקרוסופט שיחררה פחות או יותר בו זמנית, גירסת קוד פתוח של NET. בשם Rotor, שכללה חלק נרחב מקוד המקור של NET. כולל המהדיר (קומפיילר) של #C, בגירסה שיכולת להוריד (ואתה יכול להוריד גם כיום), לקמפל ולהריץ עליה יישומי .NET על Windows, ו- (תחזיקו חזק) Unix (בניב FreeBSD) וגם (תחזיקו עוד יותר חזק) Mac Os X. ואני מדבר על לפני יותר מעשור שמיקרוסופט הייתה בתקופת ביל גייטס וסטיב בלמר. וזו לא הייתה מעידה חד פעמית, כי כשיצאה גירסה 2.0 של .NET יצאה איתה במקביל גירסת קוד פתוח עדכנית של Rotor. ואם נתקדם קצת בזמנים, מי שמאוהב ב Linux, בטח ישמח לשמוע שב-2011 מיקרוסופט הייתה התורמת החמישית בגודלה לגרעין של מערכת ההפעלה לינוקס.

היום כבר ניתן לומר בביטחון מלא, שהקוד הפתוח הוא ממש מגיפה במיקרוסופט. מיקרוסופט מעורבת כיום בצורה אקטיבית, פעילה ואף יש שיגידו במעורבות בעלת אופי מנהיגותי, בקהילת הקוד הפתוח ורבים מהפרויקטים שלה כיום הם פרוייקטי קוד פתוח. ואני לא מדבר על פרויקטים אזוטריים ושוליים, חלק מהפרוייקטי הקוד הפתוח הם פרויקטים אסטרטגיים במיקרוסופט, כמו תשתית ה Device drivers של Windows, שפת TypeScript, כל ה NET Core. ואפילו ה Live Writer שבו אני משתמש כרגע לכתוב את רשומת הרשת הזו. כרגע מספר המוצרים והתוכנות של מיקרוסופט שהם קוד פתוח כבר נמדד במאות ומי שלא מאמין לי, שילך בעצמו ל GitHub ויספור בעצמו כמה פרויקטים של מיקרוסופט יש שם. יש גם כמה חוזי עתידות וידוענים עם תת התמחות בקונספירציות, שטוענים שלא רחוק היום שקוד המקור של מערכת ההפעלה Windows כולה, יפורסם כפרויקט קוד פתוח, אבל אני לא הייתי עוצר את נשימתי בציפייה שזה יקרה בשנה הקרובה.

אחד הסימנים המעניינים ביותר לכך שקהילת הקוד הפתוח מתחילה להשתחרר מההלם שהיא קיבלה מזה שמיקרוסופט היא שחקן פעיל במגרש הקוד הפתוח, היא, אולי, העובדה שהמנהלה של פרויקט מונו, שהוא גירסת הקוד הפתוח ה"רשמית" של קהילת הקוד הפתוח ל NET. שנכתבה כולו מהבסיס מחדש, על ידי הקהילה של הקוד הפתוח, כדי למנוע חשש שהיא חס וחלילה "מזוהמת" עם קוד שנכתב במיקרוסופט. נשברה לפני כחצי שנה והחליפה את כל התשתיות הבסיסית של הקוד שלה, תשתיות שנכתבו בהרבה עמל וייסורי שנות אדם של שונאי מיקרוסופט, בקוד הפתוח של פרויקט ה NET Core. שנכתב על ידי מיקרוסופט "השנואה". יש לזה משמעויות הרבה יתר נרחבות מאשר האירוניה המשתמעת מההחלטה. דוגמא "הזויה" נוספת היא שגוגל, היא התורמת הגדולה ביותר לפרויקט ה Type Script של מיקרוסופט ומשתמשת ב Type Script ככלי הפיתוח הראשי, לפרויקט הדגל שלה, Angular JS שהוא בכלל מתחרה ישיר בתשתית של מיקרוסופט. מי שרוצה לקרוא את כל הממבו ג'מבו השיווקי של מיקרוסופט על קוד פתוח, מוזמן להעמיק את השכלתו בקישור הבא.

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

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

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

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

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

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

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

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

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