אנטומיה של באג ב-Word, ולמה לנו זה לא היה קורה.

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

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

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

The fundamental cause is a basic design decision that you made more than a decade ago, and the only way to really fix it for certain is to rewrite the entire application from the ground up. Since that’s simply not an option for a product that you’ve shipped several times, you’re left with trying to make the problem difficult for most users to run into while trying to also minimize the negative effects if the user should ever run into the problem.


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

ההדגשה שלי.

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

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

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

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

שחר

מאת

שחר שמש

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

6 תגובות בנושא “אנטומיה של באג ב-Word, ולמה לנו זה לא היה קורה.”

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

  2. תמונה=טמונה, ויש עוד, תשתדל לשים לב.
    לא ממש הבנתי, למה זה לא היה יכול לקרות בOO לדוג’? האם נראה לך שמשהו הולך לשכתב את OO עכשיו?

    1. לגבי שגיאות הכתיב – תודה. תיקנתי מה שמצאתי.

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

      בעיקרון, אבל, אילו Word היתה Open Source, תגלית של בעיה עם כל הצורה שבה התוכנה מבצעת Undo היה מביא לדיונים ארוכים (בד"כ מלווים ב-Flame Wars 🙂 לגבי מקור הבעיה. מישהו היה מציג הצעה לפתרון מהסוג שבוצע בפועל, והפתרון היה נדחה. עוד דיונים, עוד Flame Wars וקריאת שמות, מישהו היה מוציא גרסה נטולת Undo ומראה שהבעיה לא קוראת שם בכלל, וכן הלאה וכן הלאה. בסך הכל, אבל, התהליך היה מתכנס הרבה הרבה יותר מהר מאשר בתוכנה קניינית.

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

      שחר

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

        1. אם אנחנו כבר מתקנים אחד לשני שגיאות כתיב, כותבים "עם תאמות לאחור"

          הסיבה ש-OO לא מקבלת תרומות מהקהילה אינה הסיבוכיות שלה. הסיבה היא ש-Sun לא מוכנה לוותר על האחיזה המוחלטת בה. פרוייקטים כמו מוזילה או הקרנל של לינוקס אינם באמת יותר מסובכים. על מוזילה גם אמרו שנטסקייפ ו-AOL הם היחידים שמתחזקים אותו. והנה, הפלא ופלא, כש-AOL הפסיקו לתחזק את מוזילה, הקהילה המשיכה והפרוייקט חי ובועט.

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

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

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

          שחר

          1. יש כן עניין של תאימות לאחור כי כמדומני WORD שומר את הUNDO STACK בקובץ.
            חוץ מזה שלא נראה לי שיש מתחזקים חדשים למוזילה שלא תחזקו אותה פעם. שים לב שהדומיין של האימייל של הרבה מהם הוא netscape

כתיבת תגובה

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

Bear