ארכיון תגיות: archy

כמה מחשבות קצרות על Ubiquity

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

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

מוזילה שחררו גרסה ראשונה של התוסף Ubiquity שפותח בראשות אזא רסקין, ממשק טקסטואלי לרשת שהוא שכלול קיצוני למדי של רעיונות מהטרמינל בלינוקס ובסביבות דומות, YubNub, ה-AwesomeBar, וכמובן פרוייקט Archy של ג'ף רסקין, אביו של אזא. Ubiquity מבין פקודות כמו map או email או add-to-calendar, הוא יודע לקחת קלט מעמודים ברשת, משירותים מקוונים או ישירות מהמשתמש, והוא יכול לעשות מהכל סלט מאוד שימושי שחוסך הרבה לחיצות ונסיעות עם העכבר. אם ניסיתם כלים דומים סביר להניח שהתמכרתם כבר ממילא, ואם לא אז אין ממש דרך קלה להסביר את זה בפסקה אחת של טקסט. צפו בסרטון ההדגמה או פשוט הורידו גרסת אלפא של התוסף ונסו אותו בעצמכם.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(השתמשתי בפוסט בהגדרה "שפה טבעית" בצורה חופשית מאוד. לפי מיטב הבנתי, השפה של Ubiquity למשל לא עונה על הדרישות של שפה טבעית.)