איך פרוייקט קוד פתוח קורם עור וגידים ואיך נראה שיתוף פעולה אקדמי-מסחרי וחינמי (לא למתכנתים בלבד).
קוד-פתוח הוא לא כוס התה שלי. כלומר, כמו כולם, אני משתמש בפיירפוקס, בלינוקס, ב-cygwin, בוורדפרס. ניסיתי גם את סונגבירד כתחליף (עדיין לא בשל) לאייטיונס ואני עובד עם eclipse ועם WEKA, אבל אני סתם צרכן/נצלן ולא ממש תורם קוד משלי. אני לא תורם כי אין לי זמן אבל בעיקר כי אין לי ביטחון – נראה לי שכדי לשנות משהו בבילד של הלינוקס צריך להיות מחוייב לנושא, להכיר את הקוד לפני ולפנים ובעצם להיות גוּרוּ לינוקס. אני לא מתכנת רע, אבל גורו אני לא, ואובי-וואן-דֶב-סלאש זה לא שמי השני.
כל ההקדמה הזו באה בשביל לספר על האימייל שהופץ לפני שבוע ברשת פסקל ובו הודעה על התחלה של פרוייקט קוד פתוח שיאגד מגוון של אלגוריתמים ללמידה חישובית (machine learning).
ולמה אני בכלל מספר לכם את זה?
קודם-כל, לאימייל מצורף מסמך מקיף ומרתק שמראה איך רעיון שכזה קורם עור וגידים. המסמך פרי שיתוף פעולה של חברות מסחריות (גוגל, NEC) ושל אוניברסיטאות שונות (upenn, NYU, קיימרידג', טובינגן ועוד) מנתח את המצב כרגע, מסביר את הצורך, מתייחס גם לבעיות של פיתוח וגם לבעיות של "פוליטיקה" ודינמיקה של פיתוח מבוזר. נראה לי שחלקים מהמסמך הזה יעניינו את כל מי שמתעניין בקוד-פתוח כקונספט וכבאז-וורד ולא רק את המתכנתים טרוטי העיניים, האוונגליסטים חסידי הקוד או אנשי הלמידה. חוץ מזה – אני גם רוצה להפיץ את הבשורה – אולי ימצאו כאן כמה מתנדבים.
[בסוגריים: במקרה שאהמ… יש כאן דור אשר לא ידע את הקתדרלה והבזאר הקלאסי – מאמר ישן, אומנם, אבל קריאת חובה בסיסית לכל מי שמתעניין קצת בקונספט של הקוד הפתוח – מה זה, איך זה עובד ולמה. (הלינק מפנה לגרסה העברית של המאמר. לא נדרשת יותר מהבנה מינימלית בתהליכי פיתוח בשביל לקרוא). ]
ועכשיו לחלק האמנותי של הערב – הנה האבסטרקט של המסמך:
Open source tools have recently reached a level of maturity which makes them suitable for building large-scale real-world systems. At the same time, the field of machine learning has developed a large body of powerful learning algorithms for diverse applications. However, the true potential of these methods is not used, since existing implementations are not openly shared, resulting in software with low usability, and weak interoperability. We argue that this situation can be significantly improved by increasing incentives for researchers to publish their software under an open source model. Additionally, we outline the problems authors are faced with when trying to publish algorithmic implementations of machine learning methods. We believe that a resource of peer reviewed software accompanied by short articles would be highly valuable to both the machine learning and the general scientific community.
והנה הלינק לפדפ (המסמך פורסם בJMLR – Journal for Machine Learning Research). כאמור, יוזמה מבורכת והמסמך מספק גם רקע מקצועי וגם חלון הצצה מרתק לדינמיקה של פרוייקטים שכאלו. נשאר רק לחכות למבחן התוצאה.

אני מצטער לומר, אבל לפרוייקט כזה צפוי כשלון בלי ניהול מרכזי.
מישהו (כמו לינוס בלינוקס) או ועדה מרכזת (עם לא יותר מ- 3 אנשים) שיגדיר את הממשקים הבסיסיים של אלגוריתמים והדרך בה הם יעבירו וישמרו מידע.
החדשנות והביזור יש להם מקום ותרומה ממשית ברגע שהם יכולים להשתבץ בתום איזה framework יפה (כמו של השואש או eclipse, כמו הרבה דברים בלינוקס).
לכן חברות מסחריות טובות לדעתי בלקדם פרוייקטי קוד פתוח (על ידי הקצאת המסטרים שלהם לנושא) וגופים אקדמים לא (שם אין מבנה היררכי ואחראיות ברורה).
לעניות דעתי, כמובן.
אורי כהן
נובמבר 12th, 2007
אורי זו נקודה נכונה ואני מניח שכאשר יגיעו תגובות ואנשים יענו לאתגר אז אולי יגדירו ניהול מרכזי.
הסקפטיות שלי דווקא נובעת מאופי התכנות האקדמי (של חוקרים) שהוא יותר סקריפטי ופאצ'ים ופחות בצורה של פרוייקט מסודר. בן אדם שרוצה לגתוב תזה לא תמיד משקיע בתכנות נכון או ברי-יוזביליטי. מהניסיון שלי זו טעות כמובן. בכל אופן,אין באקדמיה את המשאבים לעשות קוד-ריוויו מסודר וכך גדלים מתכנתים שבכלל לא רגילים לעבוד בצורה שמתאימה לפרוייקט קוד פתוח גדול.
אורן
נובמבר 13th, 2007
המאמר הזה קצת סכיזופרני. הוא מתחיל ב"צריך פלטפורמת קוד פתוח שיש בה ממשקים אחידים ומימוש אחיד של אלגוריתמי למידה חישובית", אך מהר מאד עובר ל"בחייאת תפרסמו את הקוד שלכם כדי שאחרים יוכלו להשתמש בו וגם לבדוק אם הוא עובד".
וזה מובן מאד — הדרישה הראשונה לא תקרה לעולם (כלומר, היא כבר חצי קיימת עם WEKA וכמה פרוייקטים נוספים, אבל בהיקף מאד מוגבל), והדרישה השניה גם היא מאד מאד חשובה.
לגבי הדרישה השניה, הסיבה העיקרית לאי האימוץ שלה היא, כפי שאורן כתב, שכחקורים רובנו מתכנתים גרועים, וגם אם לא אז אנחנו כמעט בהכרח מתכנתים גרוע בקוד מחקרי [זה פשוט הרבה הרבה יותר מהיר, וחלק גדול מהקוד נזרק לפח בכל מקרה, אז למה להשקיע?].
אבל זה עדיין לא אומר שהנקודה השניה לא חשובה. אני אעדיף מאד לקבל קוד נוראי מלא לקבל קוד בכלל.
והנקודה השלישית, ואולי החשובה ביותר של המאמר בעיני, היא הקריאה להכיר בפרסומי תוכנת לימוד מכונה כפרסומים מוכרים אקדמית. זה גם יתן תמריץ לאנשים לפרסם תוכנות טובות, גם יתן קצת יותר מידע על המימוש של התכונה, וגם יחסוך לי את הצורך לבחור איזה מאמר לצטט כשאני משתמש בתוכנה של מישהו..
יואב
נובמבר 14th, 2007
תחליף אייטיונס - נסה את AMAROK.
ואגב, ריוזאביליטי - האם יהיה נכון לקבוע בעברית "שישמוש"?
עירא
דצמבר 3rd, 2007