פ-תו-ח!

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

ויש גם מתנות בסוף!

תרומה ללא עלות

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

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

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

מילון מונחים

לפני שנענה על השאלה, כדאי שנלמד מספר מושגים: תוכנה הניתנת בחינם היא תוכנה חינמית (free במובן חינם). תוכנה שקוד המקור שלה ניתן להשגה נקראת קוד פתוח (open source). באנגלית יש לה שם נוסף: free, הפעם במובן של חופש. ההבדל בין שתי המשמעויות של free ניתן לתמצות באמצעות המשפטים "free as in beer" (חינמי – כמו בירה חינם) ו-"free as in speech" (חופשי – כמו חופש הדיבור). מה ההבדל? הבה נחדד את העניין:

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

ארגון התוכנה החופשית
ארגון התוכנה החופשית

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

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

מה יוצא להם מזה?

תוכנה, חופשית ומשוחררת
תוכנה, חופשית ומשוחררת

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

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

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

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

למה דווקא קוד פתוח?

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

טקס, סמל מערכת ההפעלה לינוקס
טקס, סמל מערכת ההפעלה לינוקס

רוצים דוגמה? שוב לינוקס: לינוס טורוולדס יצר את מערכת ההפעלה שלו עבור מחשבים אישיים, כאלטרנטיבה ל-Windows. התקשור עם המערכת נעשה בתחילה באמצעות פקודות טקסטואליות, בדומה למערכת DOS הישנה. אנשים שאהבו את המערכת החדשה קראו את הקוד והוסיפו לו יכולות גרפיות, כך שניתן היה להשתמש גם בעכבר כדי ללחוץ על כפתורים שמוקמו בתוך חלונות, כמו ב-Windows. אנשים אחרים לא היו מרוצים מהמעטפת הגרפית הזו וכתבו מעטפות גרפיות משל עצמם. כיום, תוכלו לבחור מבין ממשקים גרפיים רבים עבור מערכת הלינוקס שלכם, מ-KDE ו-GNOME ועד ל-Unity ול-Enlightenment.

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

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

למה לי קוד פתוח?

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

דוגמה לתיקונים ניתן לראות אם נשווה כל גרסת אנדרואיד רשמית (של סמסונג, LG, סוני וכו') ל-Cyanogen, עליו דיברנו קודם: בעוד החברות הגדולות מוציאות גרסאות חדשות אחת למספר חודשים (וגם אז עלינו לחכות לגרסה העברית הרשמית, ואז לתוספות של חברות הסלולר ועוד ועוד), אנשי Cyanogen מוציאים עדכונים רציפים בקצב חודשי ולפעמים אפילו שבועי, עם אפשרות לעדכונים יומיים (אם אתם רוצים להסתכן ולקבל את הגרסה הכי חדשה, אבל הכי פחות בדוקה).

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

האותיות הקטנות

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

לא אלאה אתכם בפרטים – אספר רק שקיימים המון ניסוחים של רשיונות שימוש בתוכנה פתוחה. הנה מספר שמות אקראיים: GPL גרסה 2, GPL גרסה 3 (מסתבר שיש הבדלים משמעותיים בין הגרסאות), Apache (ארגון המפתח תוכנות שונות, שיצר גם סוג מסוים של רשיון שימוש), Creative Commons (אוסף ניתן להרכבה של הרשאות שונות לשימוש בכל דבר – תוכנה, ספר או שיר שכתבתם), וגם Shared Source (דרכה של מיקרוסופט לשחרר קוד פתוח ולהשאיר לעצמה שליטה מסוימת בנעשה). הרשיונות הללו לא אמורים להשפיע בדרך-כלל על אנשים שרק רוצים להשתמש בתוכנה – הם נועדו בעיקר למפתחים שרוצים לשנות אותה. המתכנתים שבינינו יכולים לעיין ברשימה המלאה, כולל השוואה.

מתנות לסיום

לכל מי ששרד עד כה ממתינה כאן רשימה קצרה (וחלקית מאוד!) של אתרים המאגדים פרויקטים של קוד פתוח, מעבר לתוכנות שהוצגו במאמר:

תוכנות קוד פתוח
תוכנות קוד פתוח