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

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

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

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

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

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

שחר

מאת

שחר שמש

מייסד–שותף וחבר ועד בתנועה לזכויות דיגיטליות מייסד שותף בעמותת „המקור”. פעיל קוד פתוח. מפתח שפת התכנות Practical

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

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

    כלומר יחס של 5:5 בין המתכנתים לניהול וקבלת החלטות טכנולוגיות ( אם ניקח ר"צ בתור חצי מתכנת אז 4:6)

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

  2. משום מה נזכרתי ב"לשחרר את ווילי" ודימיינתי לי תוכנה עליזה שמקפצת לה באושר בשדות הביטים הירוקים…

    המממ… באמת נראה לי שאני קוראת יותר מדי.

    1. מילא קוראת יותר מידי – אני מזהה בתגובה שלך אלוזיות מטריקסיות בעליל. נראה לי הרבה יותר חמור.

      שחר

  3. הטיעון של ’מיקרסופט’ אכן חלש.
    אולי רק 10 מתכנתים עובדים על פרויקט, אבל ברמת התאוריה, מדובר על מיליוני בוחנים פוטנציאלים.
    הרגע הוכחת את זה.
    ועוף טופיק:
    הקוד שלך מתועד בבהירות.
    ממש הבנתי מה עושות שורות מסוימות בלי לשבור את הראש:)
    יוצא לי לפעמים לקרוא קוד שמתועד בצורה שברורה עוד פחות מהקוד עצמו.
    קבל ח"ח:)
    ועוף טופיק 2:
    בעקבות היוזר ניים שלך.
    ידעת שלנאס"א יש שרת שנקרא "Shemesh"?
    http://shemesh.larc.nasa.gov/">לינק

    1. Microsfot probably haven’t read "The Mythical Man-Month".

      As for code clearance – indeed this code is clear to read, but I prefer self-documenting code rather than comments which sooner or later, especially with multiple contributors, become out of date and misleading. (see the comment at the beginning of "match" – it doesn’t mention the correction talked about in the ChangeLog, or what is the comment at the beginning of handleoutput supposed to say?

      For instance, I’d prefer to stick the entire content of "if (childpid == 0)" into a separate function called, e.g., "child_process" and the entire code under "else if (childpid > 0") under "parent_process()". That way the name of the method reflects exactly what it does.

      I’d also prefer to define enum’s (or "constant" in C++ parlance) to the direct use of -1/-2/-3 return values from parse_options, as well as use of inline functions

      1. נדמה לי ששמעתי את Joel Spolski באיזה פודקאסט מתאר את ימיו העליזים במייקרוסופט, ואחת ההתרשמויות הראשונות שלו כשהוא הגיע למקום דוקא היתה שלכולם יש את The Mythical Man Month על המדפים. אולי הם שכחו בינתיים 😉

    2. To find what server you are talking about I typed "inurl:shemesh" in google search and found
      shemesh.larc.nasa.gov

      Now I try to find what it has to do with "Shemesh"

      1. איזה קשר יש לשמש או איזה קשר יש לשחר שמש?:)
        בקשר לאחרון, סביר להניח שאין קשר.
        כשנכנסתי לעמוד של הפרויקט ששחר שמש מדבר עליו בפוסט, ראיתי ששם המשתמש שלו בסורס פורג’ הוא "The Sun", וזה פשוט הזכיר לי שנאס"א עשו את ההפך ובמקום המילה Sun הם משתמשים במילה העברית.

  4. BTW – I don’t see handling of fork failure in the code (childpid==-1) or error printing in case of execvp() failure.
    I can understand that maybe the child doesn’t have any tty to write to after the execvp failure but maybe the parent can catch the exit status and print it?

    1. הממ.

      לבן אין tty, אבל stderr יש לו גם יש. הוספתי קוד לטיפול בשגיאה ב-fork, ואני אוסיף גם להדפסת הודעה במקרה שיש בעיה ב-exec.

      שחר

סגור לתגובות.