סיפור לקוח

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

למען האמת, לאור העובדה ש-Flash, בדומה ל-Java, הוא לא תלוי פלטפורמה, לא צפיתי שיהיו להם יותר מידי בעיות. עדיין, הם צריכים לוודא את זה.

הם ביקשו לשכור מחשב שמריץ לינוקס למשך שבוע.

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

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

סך הכל – 4 שעות של עבודה. הלקוח מקבל פתרון שיהיה לו טוב להרבה יותר משבוע, הרבה יותר בזול מאשר לשכור מחשב, ואין כאבי ראש.

שחר

עוד דוגמא להצלחה של שיחרור תוכנה חופשית

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

מיקרוסופט לפעמים מציינת שהיחס בין כמות המתכנתים ב-Source Forge לבין כמות הפרוייקטים הוא 10:1. “כמה טוב אפשר לעשות פרוייקט אם יש רק עשרה אנשים שעובדים עליו?” הם שואלים.

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

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

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

שחר

ניהול גרסאות עם Subversion

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

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

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

לצורך הדוגמא – rsyncrypto התחיל את דרכו עם קבצים בסיומת “cc”, שהיא הדרך המקובלת לציין קבצי C++‎ ביוניקס. בגרסה 0.14 של הפרוייקט עלה הצורך לייצר לו גרסת חלונות. בחלונות מקובל לסמן קבצי C++‎ באמצעות הסיומת cpp. מכיוון שיוניקס (ולינוקס) מסתדרים הרבה יותר טוב עם הסיומת cpp לקבצי C++‎ מאשר חלונות עם הסיומת cc, הייתי צריך לשנות את שמם של על קבצי קוד המקור של הפרוייקט. מי שמסתכל היום על קובץ בפרוייקט (למשל, main.cpp) יכול לקבל את הרושם שהקובץ לא היה קיים לפני גרסה 0.14. זוהי הגרסה הראשונה שמופיעה במערכת ניהול הגרסאות. רק מי שמבקש חתכים של כל הפרוייקט יגלה שלפני גרסה זו היה קובץ בשם main.cc, שהיא בעצם אותו הקובץ תחת שם אחר. ההיסטוריה (אותה אפשר לראות אם לוחצים על הקישורים שנתתי) לא עברה מהקובץ הישן לקובץ החדש. מי שרוצה לדעת מה קרה לקובץ טרם היותו בשם האחרון שלו עלול לא למצוא את הקובץ הקודם, ולא לדעת מה ההיסטוריה.

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

מכיוון שבעיותיו של CVS ידועות, אנשים בקהילת התוכנה החופשית עובדים על חלופות. כמובן שיש גם פתרונות בתחום התוכנה הקניינית. הידוע ביותר מבניהם הוא כלי של IBM (לשעבר rational) בשם “ClearCase”. אני חייב להודות שנסיוני עם המוצר מועט הוא אבל כואב. יש לו יכולות מאוד מפותחות בתחום של התפצלויות ואיחודים של העבודה, אבל הוא סובל מבעיות מבעיות שונות. הבעיה החמורה ביותר, מבחינתי, היא שגרסאות שורת הפקודה שלו לא חזקות כמו הגרסאות הגרפיות. במילים אחרות, יש דברים שאם רוצים לעשות עם ClearCase, חייבים להשתמש בכלים הגרפיים. במקום שבו אני נתקלתי בו היו לו גם בעיות ביצועים די קשות, אבל בהחלט ייתכן ששם אלו היו חבלי לידה. כמו כן, גם במקום אחר שבו רצו שאשתמש בו היו לו בעיות שנבעו באופן ישיר מהעובדה שצריך רשיונות. אנשים רבים שם על הרשיונות הצפים. באותו המקרה, נתתי רשימה של דרישות ממערכת ניהול תוכן, וכאשר אנשי ה-ClearCase של החברה אמרו שהם לא יכולים לעמוד בדרישות, הסברתי להם בתקיפות אך בנימוס שאני מתכוון להשתמש ב-CVS, תודה. זה שאני הייתי איש הפיתוח על לינוקס היחידי בחברה שמפתחת כולה בחלונות גם עזר קצת.

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

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

שחר

ראיון איתי ב"חיים ברשת" של נענע

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

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

כמו כן, רציתי להגיד תודה לאדר, ששילחה בי את ניצן.

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

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

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

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

לכל מי שמכיר את לקוחות לינגנו, חברת המדיה לא קיימת במציאות. העורכים של הכתבה עשו הלחם של שני סיפורי לקוח שונים. אחד הוא חברת NetMask, שמימנה התאמה של Digital Image Pro של מיקרוסופט ל-Wine. הלקוח השני ביקש להשאר בעילום שם, והוא הממן מאחורי PgOleDb. הדוגמא השניה היא המעניינת יותר. Wine הינה LGPL, ועל כן ל-NetMask לא היתה ברירה אלא לשחרר את התיקונים שבוצעו ב-Wine. מצד שני, PgOleDb נכתבה מאפס, ועל כן ניתן היה לשחרר אותה תחת כל רשיון שהוא.

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

לגבי השימושיות. לפני כשבוע דיברתי עם לקוח לשעבר שנותר חבר. הוא עזב את החברה שהיתה הלקוח שלי, ועכשיו התחיל לעבוד בחברה חדשה. כאשר אני התחלתי לעבוד איתו, הבאתי איתי מדרך הטבע את הרגלי העבודה שלי. באותה תקופה (לפני כשנתיים) וכמו כל משתמש חלונות אחר, הוא התלונן על הממשק הטקסטואלי, על הסביבה וכו’. התלונה שלו אלי השבוע היתה על העובדה שהחברה החדשה בה הוא עובד עובדת רק על מיקרוסופט, ושהסביבה של Visual Studio וה-Wizards של התקנת IIS פשוט לא נוחים. היתה לו מספיק הגינות כדי לציין שהוא מופתע מעצמו מהתלונות האלו. הבעיה עם לינוקס אינה שהיא אינה נוחה. הבעיה עם לינוקס היא שלוקח יותר זמן להתרגל אליה. זה אומר שכל מי שלא השקיע בלהתרגל, ימצא את הסביבה לא נוחה. מצד שני, מי שכן השקיע טיפה זמן בלהתרגל, לא מוצא שום סיבה בעולם “לשפר” את סביבת העבודה כדי שתהיה נוחה יותר למשתמשי חלונות, מכיוון שסביבה כזו תהיה פחות נוחה לו. אני מניח שזה מילכוד שרק ייצרני הלינוקס המסחריים יכולים לפתור.

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

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

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

אבל, כמאמר המשפט הנודע, “חופשי זה יותר מחינם”.

שחר

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

אם הביקורת רלוונטית (גם אם אני לא מסכים איתה), אני אשמח אפילו לפרסם אותה פה בבלוג.

ש.

Bear