דבר ראשון – פתחתי קטגוריה חדשה. קראתי לה “שחרור קיטור טכני”. בקטגוריה הזו אני שם כל פוסט שהוא דיון טכני על דברים מעצבנים שאני נתקל בהם במהלך עבודתי השוטפת. אם אתם לא מעונינים בפרטים טכניים מעיקים – אתם יכולים לסנן את הרשימות האילו ללא חשש.
את יום שישי הקדשתי לבחור הזה, שהיה צריך שאני אוסיף תמיכה בסוג משתנה חדש. המשתנה “numeric” פירושו מספר בעל דיוק גבוה כרצונכם. בעודי עובד על לתרגם את הצורה בה PostgreSQL מייצג את המספר לצורה שבה מיקרוסופט מצפים לקבל את המספר, התגלו לי כמה עובדות משעשעות (או משעשעות פחות).
1. PostgreSQL שומר את הנתונים בוריאציה על בסיס, שהדחקתי את קיומו, שנקרא “BCD”. לא בדיוק בינארי, לא בדיוק עשרוני. הרעיון (המעוות) הוא שאתם שומרים כל כמה ספרות עשרוניות בבינארי. התוצאה היא שכדי לתרגם את הסיפור הזה לבינארי רגיל, צריך להתחיל לעשות פעולות כפל וחילוק. כבר ציינתי שהמספרים הם בעלי דיוק מוחלט? הייתי צריך להתחיל לממש כפל ארוך בתוכנה. גרר.
2. את הנתונים לגבי איפה המספר נמצא (אקספוננט), הוא שומר בבסיס עשרוני. אני מניח שזה הגיוני, לאור זה שככה גם המספר עצמו נשמר.
3. OLE DB של מיקרוסופט, מצד שני, שומר את הנתונים בבינארי רגיל. מצויין!
4. את הנתונים על איפה על איפה המספר נמצא (אקספוננט) הוא שומר בעשרוני!! מה???
התוצר הסופי כולל תרגום ממספר עשרוני של 39 ספרות למספר בינארי של 39 ספרות עשרוניות, חישוב כמה ספרות עשרוניות זה הספרות הבינאריות, ושאר דברים טובים. נו טוב – מי אמר שתיכנות זה דבר קל?
שחר
חודש: אפריל 2004
ה-GPL עמד למבחן משפטי – וניצח (בנתיים)
ב- 14 לאפריל נתן בית משפט צו מניעה ראשוני שמונע מחברת Sitecom להמשיך להפיץ נתב אלחוטי שלה, אלא אם תקבל את תנאי ההפצה של ה-GPL.
עכשיו בעברית – תוכנה חופשית הינה תוכנה מוגנת בזכויות יוצרים, כמו כל תוכנה אחרת. בתור שכזו, מותר להפיץ אותה אך ורק באמצעות רשות מבעלי זכויות היוצרים. בניגוד לתוכנה קנינית, הרשות הזו ניתנת מראש ובצורה גורפת, ועל כן התוכנה חופשית.
מצד שני, הרשות להפיץ את התוכנה אינה מחוסרת סייגים. הרשיון החופשי המסוייג ביותר נקרא “GPL”, או “General Public License”. ניתן לקרוא אותו בלינקים בצד. הרשיון הזה מתיר להעתיק ולשנות את התוכנה, ובלבד שהתוכנה החדשה אף היא תהיה תחת ה-GPL, והעובדה הזו תצויין על המוצר החדש. כתוצאה מכך, אם אתם משנים מוצר שהוא GPL, אתם חייבים לתת את קוד המקור לכל מי שמקבל מכם את התוכנה שעשיתם (לפחות אם מבקשים מכם), ואתם חייבים ליידע את האנשים שלהם אתם נותנים את התוכנה שזכותם לקבל את קוד המקור. חברת Sitecom לא עשתה אף אחד מהשניים, על אף שהתמשה בקוד של Netfilter – הפיירוול המובנה של לינוקס.
רשיון ה-GPL קיים מאז 1990, אולם עד כה מעולם לא הגיע למבחן בית משפט. כל הפרה שהיתה עד היום נגמרה בהסדר מחוץ לכתלי בית המשפט. בצורה כמעט גורפת, ההסדר כלל שיחרור של הקוד המדובר. חברת Sitecom היתה הראשונה שהתעקשה שלא לקבל את תנאי הרישוי, גם אחרי שפנו אליה. כתוצאה מכך פנתה קבוצת Netfilter לבית המשפט וקיבלה צו מניעה זמני.
צו מניעה זמני ניתן רק אם בית המשפט משתכנע שקיים סיכוי סביר לתובעים לנצח במשפט. נתינת צו מניעה זמני מצביעה על כך שה-GPL נראה בעיני בית המשפט הגמרני כרשיון זכויות יוצרים תקף, וחייבים לכבד אותו אם מעוניינים להפיץ את הקוד עליו הוא מגן.
מתמטיקה מיקרוסופטית
נתחיל בחדשה החשובה:
מיקרוסופט שיחררה עידכון אבטחה. כל משתמשי חלונות מקרב קוראי (למה אני טורח להשתמש בלשון רבים?) מתבקש ללחוץ על הכפתור שנקרא “Windows Update” ולעדכן את המערכת. בבקשה תתחילו להגן על עצמיכם. נמאס לי לקבל את הוירוסים שלכם.
עכשיו לגבי העידכון – עידכון אמרתי? נסו עידכונים. ארבעה. ארבעה אמרתי? הם פותרים כעשרים בעיות אבטחה שונות, רובם מאפשרות למשתמש מרוחק להשתלט לכם על המחשב! במילים אחרות, מיקרוסופט מנסה לצמצם את כמות עידכוני האבטחה שהיא משחררת ע”י זה שהיא מאחדת אותם למספר קטן של עידכונים.
לא היה בזה שום דבר רע, אלמליא הם היו מנפנפים בגאון בעובדה שיש להם פחות תיקוני אבטחה מאשר ללינוקס. נשמע קצת חשוד, לא?
אם זו היתה כל הסיבה, הייתי אומר מילא. הרי יש גם סיבות טובות לשחרר מעט עידכונים שמכסים הרבה חורים. הבעיה היא שהם מחכים עם שיחרור התיקון בגלל זה. חלק מהתיקונים שהם משחררים דווחו להם בספטמבר 2003 – לפני שבעה חודשים. לא מדובר בחורים קלים. מדובר בחורים שמאפשרים לתוקף לפרוץ למחשב מרחוק, תוך מינימום של מאמץ.
בפעם הבאה שאתם שומעים על הסקר החדש שמראה שזמן שיחרור התיקונים של מיקרוסופט נמוך משל לינוקס, תחשבו על הנתון הזה.
למה תמיד כותרות עם סימני שאלה?
שמתי לב שכל פוסטיי עד כה היו עם סימני שאלה בכותרת. דיי!
מצד שני – גם הפוסט הזה עם סימני שאלה בכותרת . יאללה – הבא בלי, אני מבטיח!
כתיבת תוכנה חופשית – למה?
למה לכתוב תוכנה חופשית? למה למישהו להשקיע את הזמן בייצירת תוכנה, שלא הופכת לרכושו הבלעדי אחר כך?
עד כמה שאני לא מעוניין להפוך את הבלוג הזה לבמה להסברת מהי תוכנה חופשית, זוהי כנראה השאלה הנפוצה ביותר שאני מקבל (ואני לא מדבר רק על הבלוג הזה, עם כל הכבוד ל-33 הכניסות ול-12 התגובות שלו .
קהילת המתכנתים הכותבים תוכנה חופשית נחלקת בין אילו שעושים זאת בגלל שמקום העבודה שלהם משלם להם על עבודתם, לבין אילו שעושים זאת ללא תמורה כספית מיידית. החלוקה היא 60:40, כאשר 60% אילו השכירים – אילו שמקבלים שכר. עובדה זו עוזרת לי להתמקד בסיבות של גוף כלכלי להשקיע בפיתוח תוכנה חופשית, דבר שנובע מזה שהסיבות של פרטים להשקיע בפיתוח תוכנה חופשית הרבה יותר עמומות .
עולם המחשבים המסחרי מתחלק לנחשו כמה חלקים? נכון. שלושה. אילו תוכנה, חומרה ושירותים. בעבר הרחוק, עיקר הכסף הגיע מחומרה. דבר זה נבע בעיקר מכיוון שהחומרה היתה מחשב בגודל כחדר אשר עלה, במקרה הזול, כמה עשרות אלפי דולרים. החומרה היתה כל כך יקרה, שהתוכנה ניתנה לרוב בחינם (גם אם היה צריך לפתח אותה במיוחד בשביל הלקוח הספציפי).
עם כניסתו של המחשב האישי והפיכתו לסטנדרטי, החומרה הפכה ל-“commodity” – מוצר צריכה. אתם יכולים להחליף את הדיסק, את לוח האם, את המקלדת, את המסך, וכל רכיב אחר במחשב, בלי להחליף אף אחד מהרכיבים האחרים, כולל לא את התוכנות שרצות עליו. הן המחשב האישי, והן כל אחד מרכיביו, הינם חלקים אשר זמינים לקניה מהמדף מספקים שונים, בתנאי תחרות חופשית ועזה. העקרון הכלכלי אומר שבתנאי שוק חופשי, עלות כל מוצר יורדת להיות עלות הייצור של העותק האחרון מאותו מוצר. במילים אחרות, אין מספיק רווח במכירת מחשבים היום כדי שספק החומרה יוכל לתת תוכנה שהוא פיתח בחינם וגם להרוויח. רק כדי לסבר את האוזן, כל ספקי המחשבים הגדולים בארה”ב מרוויחים היום על רוב המחשבים שהם מוכרים פחות מעשרה דולר ליחידה!
והנה, מסתבר שנתח הרווחים הגדול עבר מעולם החומרה לעולם התוכנה. חוקי זכויות היוצרים מבטיחים מונופול אפקטיבי על כל תוכנה שאתם קונים. בפרט, כיום מערכת הפעלה הינה מונופול, דבר שמעלה את המחירים, ואת הרווחים של אותם יצרני תוכנה ש”הצליחו”. כמובן שבכל מקום שמישהו מרוויח, מישהו אחר משלם, ולתוכנה יש הרבה יותר לקוחות מאשר ספקים.
וכאן נכנסים המרווחים הגדולים מפיתוח תוכנה חופשית. כיום אני רואה שני סוגים של מפתחי תוכנה חופשית, כאשר בעתיד אני מקווה לראות שלישי, אולי על חשבון הראשון.
הסוג הראשון – ייצרני תוכנה שהם גם צרכנים. הרבה תוכנות קניניות מתבססות על תוכנות קניניות אחרות. למשל – מסד הנתונים אורקל, תוכנה קנינית ידועה, צריך מערכת הפעלה כדי לעבוד. במילים אחרות, אתם רציתם לקנות אורקל, אבל אתם גם צריכים להשקיע כסף בקניית מערכת הפעלה, אם זה חלונות ואם יוניקס. זהו כסף שאתם הוצאתם, אבל אורקל לא קיבלה. ביחס לקוח ספק שבינכם לבין אורקל, שניכם הפסדתם. כמה טוב היה אילו היתה מערכת הפעלה שהיתה מסוגלת להריץ אורקל, ולא היתה עולה לכם כסף. המוצר האפקטיבי שאורקל מוכרים נהיה יותר זול, בלי שאורקל מרוויחים פחות. כולם מרוויחים. עכשיו, מה קורה אם המוצר הזה (לינוקס) קיים, אבל יש בו דברים שכדאי לשפר? מכיוון שקיום לינוקס מאפשר לאורקל למכור יותר מסדי נתונים בלי להרוויח פחות על כל אחד, יש פה כסף עודף. משתלם לחברה להפנות חלק מהכסף הזה לשיפור לינוקס, כדי שהיא תוכל למכור אפילו עוד יותר מסדי נתונים. אין לחברה שום ייתרון בלהשאיר את הפיתוח הזה אצלה (אפילו אם הרשיון של לינוקס היה מאפשר), מכיוון שאין זה ה-business של אורקל למכור מערכות הפעלה – הם מוכרים מסדי נתונים.
דבר אחד שחברות שנמצאות בקטגוריה הזו חייבות לדעת זה שהתוכנה יכולה להתחרות בהן. כל שיפור שאורקל מכניסה בלינוקס כדי שיעזור למסד נתונים שלה לעבוד יותר טוב, משפר גם את הביצועים של mysql ושל PostgreSQL במקרה של אורקל, הם מתמודדים עם זה ע”י זה שהם מפתחים את המוצר כדי שיהיה טוב מהמתחרים הפתוחים שלו (וכולנו מרוויחים שוק שלא קופא על שמריו).
הסוג השני – ספקי חומרה ושירותים. אילו חברות שלא מוכרות תוכנה. אם הן מוכרות תוכנה, זוהי תוכנה שמישהו אחר כתב. במצב כזה, החברה נמצאת במצב תמידי של תחרות (זוכרים? רוב הכסף מגיע מתוכנה היום), ולכן כל דבר שמוזיל את העלויות תורם למתח הרווחים שלהם. אם אני מוכר פתרון מבוסס לינוקס, ומישהו אחר מוכר פתרון מאוד דומה מבוסס חלונות, העלויות שלי נמוכות בכמה מאות דולרים, וזה מאפשר לי להתחרות יותר טוב. מאותו שיקול, ייתכן וכדאי לי להפנות חלק מההפרש לשיפור הפיתרון החופשי. אני לא מפחד מתחרות, מכיוון שאני תמיד בתחרות. גם אם אני אשתמש בפתרון קיניני, אני עדיין אהיה בתחרות עם המפיצים האחרים של אותו הפתרון (אלא אם יש לי הסכם בלעדיות, אבל זה כבר סיפור אחר. אתם מבינים את העקרון).
הסוג השלישי הוא המעניין ביותר, מכיוון שהוא עוד לא גורם משמעותי. אילו הלקוחות עצמם. אם אתם חוסכים כסף בשימוש בפתרון חופשי, הרי שאתם יכולים, ע”י הפניית חלק מהכסף הזה לפיתוח הפיתרון, לקנות השפעה. למשל, אתם יכולים לקדם פונקציות שמענינות אתכם ע”י כך שאתם משקיעים חלק מהכסף שחסכתם בפיתוח של אותם הפונקציות. יש מצב שאתם כאילו יוצאים “פריירים” ע”י כך שאתם, נגיד, פותרים באג שעכשיו אחרים נהנים מפתרונו. מכיוון שאחרים עושים זאת גם, אבל, אתם בס”כ מקבלים הרבה יותר מאשר אתם משקיעים.
אני מקווה שזה נותן תמונה על למה 60% מהמפתחים מקבלים משכורת על פיתוח תוכנה חופשית. ה- 40% הנותרים הינם סיפור יותר מורכב.
לוחם חופש או פעיל פרגמטי?
אז הנה, חברים הציעו, ובסוף נכנעתי ופתחתי בלוג.
רציתי לספר קצת על עצמי בהקשר שבו אנחנו דנים. אני מאמין בתוכנה חופשית. על כן ניתן להגיד שאני אידיאולוג. מצד שני, אני מאמין בתוכנה חופשית כאמצעי למטרה. אני לא חושב שהאמצעי מקדש כל דבר. חלק מהקוראים פה (אני מקווה) הינם משתמשי חלונות מרוצים. אין לי בעיה עם זה. בניגוד לאחרים, אני לא חושב שיש בעיה מוסרית עם זה זה שאנשים ישתמשו בתוכנות קניניות. אם טוב לכם עם מה שאתם, יופי.
מצד שני, אני כן חושב, רואה ומאמין שתוכנה חופשית נותנת למשתמש יותר מאשר תוכנה קנינית, וכדי להנות מזה, אני מוכן גם להשקיע מזמני בכתיבת קוד. בגלל זה אני פעיל.
ואז נכנס העניין המסחרי. לפני כשנה יצאתי לעולם העצמאות כיועץ לנושאי תוכנה חופשית ולינוקס, ומאז בזה אני עוסק, ומזה אני חי. בתור בעל עסק, חשוב לי להרוויח ולגדול. אני לא חושב שיש כאן סתירה. אני מאמין שאני מסוגל לעשות את זה בלי “לדפוק” את הלקוחות שלי, ותוך שימוש ותרומה לתוכנות חופשיות. הזמן יעיד אם עמדתי במשימה.
מקווה שתהנו ממחשבותי,
שחר