את הדברים הבאים אני לא הולך לכתוב מתוך שמחה, אלא מתוך כאב. חברים שמכירים אותי יודעים שאני חובב לינוקס מושבע עוד מ-94, אך לפעמים דברים צריכים להיאמר.
אחת מנקודות התורפה בלינוקס היתה בעיית הסאונד. אני לא מדבר על סאונד מקצועי (שהיום מקבלת בהחלט התייחסות בדמות תוכנות שונות ותוספות בליבת הקרנל ב-Linux), אלא יותר על שמיעת מוסיקה ודברים אחרים הקשורים לאודיו. דרייברים צצו יחסית תוך זמן לא כל כך ארוך (תלוי באיזה כרטיס מדובר) עבור לינוקס, כך שהיתה תמיכה בסאונד, אבל הבעיה המהותית בסאונד היתה בעיה אחרת: אם תוכנה אחת מנגנת מוסיקה, תוכנה שניה לא יכולה להשמיע שום צליל, כך שאם לדוגמא אתה שומע לך את הלהקה האהובה עליך, לא תוכל לקבל צליל התראה על הודעה שקיבלת דרך ה-IM החביב עליך. מה שקורה היה שהתוכנה הראשונה “תופסת” את הציוד, והתוכנה השניה לא היתה מקבלת כלום.
המגבלה הזו היתה ידועה וצצו לה פתרונות. אחד הראשונים היה ESD שנכתב עבור הסביבה הגרפית Enlightment (ולא כמו שרבים חושבים – עבור GNOME). שהיה מתחרה ב-NAS שפותח בשנות ה-90 אחרי זה הגיע aRts שהיה כחלק מ- KDE וכן ALSA שהוא פרוייקט שהחליף את הכל, החל מדרייברים ועד ספריות להשמעת צליל ולמיקסים, ולאחר מכן הגיע JACK שמיועד עבור תוכנות מקצועיות וכלי סאונד מקצועיים והכלי האחרון בסידרה הוא כמובן PulseAudio.
כמה ספרנו עד עכשיו? 5 תוכנות, שלמעט האחרון, לכולם יש 3 בעיות מהותיות:
- הם עובדים עם חלק מהתוכנות, ולא עובדים עם חלק אחר מהתוכנות (אלא אם “עוטפים” את התוכנה הסוררת עם כל מיני Wrappers למיניהם, בין אם באמצעות תוכנת עטיפה או סקריפט)
- הם מסובכים לתפארת להגדרות ע”י האדם הפשוט
- הם נותנים פתרון השווה להרוג זבוב עם תותח.
מכיוון שגם החבר’ה ב-Ubuntu וגם החבר’ה ב-Fedora החליטו לאמץ את PulseAudio כשרת סאונד, הרי ש-PulseAudio מעכשיו יותקן כברירת מחדל, וגם PulseAudio סובל מהמחלה הכי ידועה בלינוקס: נכתב ע”י מפתחים שאין להם שום הבנה במשתמשי קצה. להגדיר את PulseAudio, זו חתיכת עבודה, ושוב יש לנו כאן את סעיף 3 מלמעלה: פתרון שהוא OverKill לבעיה האמיתית: אנשים רוצים לשמוע צליל ממס’ תוכנות במקביל ע”י ציוד האודיו שלהם, לא יותר מזה, ו-PulseAudio הוא הרבה הרבה יותר מזה: הוא יאפשר לך “לשדר” את הצליל למכונה אחרת ולשמוע אותו שם, אתה יכול לשנות את הסימפול לאיכות יותר גבוהה או יותר נמוכה, ועוד ימבה פיצ’רים שמתאימים לנישה קטנה של משתמשים מקצועיים, לא מעבר לכך.
רבים מאיתנו, אנשי הלינוקס, אוהבים לצחוק על השכנים מרדמונד, שזה נחמד, אבל מצד שני, בקטע הזה דווקא לקהילת המפתחים בלינוקס יש מה ללמוד מהם. ב-Windows יש לך מס’ דוגמאות לנגן צליל, הנה דוגמא ישנה ב-++C. אם אתה מפתח משחק, יש לך את DirectX שדואג עבורך לכל העבודה של השמעת הצליל דרך ציוד האודיו של המשתמש. אם אתה כותב דרייבר עבור ציוד אודיו חדש, כל מה שעליך לעשות הוא לכתוב דרייבר שיעמוד בטסטים מסויימים ובסצנות מסויימות. התוצאה הסופית? למשתמש הכל שקוף, יש לו אייקון של רמקול למטה מימין וכשהוא לוחץ עליו לחיצה כפולה, הוא יכול לכוון את עוצמת הצליל לערוצים השונים. Windows כבר ידאג עבורו לכך שאם מס’ תוכנות ינגנו צליל במקביל, הוא ישמע את כולם, בין אם זה משחק במסך מלא בזמן שהוא מקבל הודעה מה-IM שלו ובין אם זה ניגון סרט ב-Flash מאתר Youtube ותוך כדי הוא ישמע התראת קבלת דואר לדוגמא.
גם במק בטוחני שיש פתרון שקוף לחלוטין לעניין, ומעבודה קצרה שיצא לי לעבוד על מק (אין לי מק), לא ראיתי שום בעיות בנידון.
בלינוקס לעומת זאת, ראיתי גם ראיתי את הבעיות ש-PulseAudio עושה על מכונות חלשות ובמיוחד בסביבות וירטואליזציה כמו VMWare כשכל חטאי הוא היה לבדוק מס’ קבצי MP3. עם PulseAudio כל מה ששמעתי במגוון תוכנות (בין אם זה xine, mplayer, vlc) היה ערבול מרעיש ותו לא. לאחר שהעפתי לכל הרוחות את PulseAudio והשתמשתי ב-ALSA, פתאום המוסיקה נשמעה מצוין במכונה הוירטואלית ובמכונות החלשות.
“שרת” סאונד שאמור לעשות מיקס מאודיו שיוצא ממגוון אפליקציות ומוציא אותו דרך כרטיס הקול המותקן במחשב, אמור להיות שקוף לחלוטין למשתמש, ללא צורך בשום הגדרות. הוא לא אמור להיראות כך, במיוחד אם מנסים לקרב אנשים חדשים ללינוקס. מה אמור לעשות משתמש חדש אם אפליקציה שהוא התקין לא משמיעה צליל ותוכנה אחרת כן משמיעה? להתחיל לערוך קבצי קונפיגורציה ולקרוא כל מיני מסמכים ומושגים מקצועיים בשביל להתחיל להבין מה לשנות? הרי נסיונו ב-Windows הוא פשוט: אם הוא התקין דרייברים לכרטיס הקול שלו וה-Windows שלו מסוגל להשמיע צליל login, אז הוא ישמע בכל התוכנות את הצלילים, גם אם הם פועלים יחד בלי שום הגדרות מיוחדות, וזה מה שבדיוק צריך ב-Linux: פתרון פשוט, ללא כל שאר הפונקציות להעברות צלילים למחשבים אחרים, לסימפול שונה, ל-Pre Amp ושאר מרעין בישין!
ואגב, אם מישהו חושב שהפתרון הוא “הקוד פתוח, שנה אותו בעצמך”, הרי הוא לא יותר מאשר זורה חול. כן, הקוד פתוח, אבל אז אתה צריך כמה שעות טובות להבין בקוד מי נגד מי, כמה, למה ואיך, ולעקוב אחרי הקוד, להסתכל במסמוך (שחסר חלקים לעיתים), להבין מושגים מקצועיים שלא קשורים לתכנות, ואם אותו אדם לא יתייאש ויתמזל מזלו והוא ימצא את אחד המפתחים של PulseAudio ב-IRC, אולי, אולי תהיה לו אפשרות לעשות משהו בנידון. שוב, אולי.
לסיכום: אם רוצים לחדור לשוק משתמשי ה-Windows, חייבים פתרונות יותר קלים להגדרות, עדיף שיהיו שקופות למשתמש ואם הוא בכל זאת צריך לעשות הגדרות, עדיף שיהיה מסך הגדרות קליל שיעשה את הדברים כמה שיותר אוטומטיים מאשר לצפות מהמשתמש שידע מינוחים מקצועיים והגדרות מקצועיות. אגב, למעוניינים, הנה כמה “קל” להתקין את PulseAudio מכלום במחשב שלך, אם ההפצה שאתה משתמש ישנה או שאין לה חבילות התקנה מוגדרות מראש.