אנטומיה של באג ב-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 שנים!

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

שחר

Bear