אי הוודאות בפרוייקט קוד פתוח
15 ביוני, 2008 | מאת doron |
בשבוע שעבר כתבתי על ערב הרצאות שנערך ב GarageGeeks בחולון, ובין השאר התייחסתי להרצאות שונות שנערכו שם.
אני לא אכנס לכל הביקורות שקיבלתי על פוסט זה, חלקן מופיעות כתגובות לפוסט עצמו.
אבל מכוון שאותו פאנל עסק בנושא של sustainability של קוד פתוח או של פרוייקט קוד פתוח, הרי שלהבנתי מדובר בשרידות של פרוייקט קוד פתוח, וכיצד שומרים שהוא ישרוד (כך גם הכותרת העברית של הערב היתה "קוד פתוח זה אחלה. אבל איך דואגים שהפרוייקט ישרוד?” ) .
בעצם השאלה, טמונה ספקנות מסויימת בכל הנוגע ליכולת השרידה של פרוייקט קוד פתוח – ספקנות שהיא בהחלט במקומה.
מכוון שהקהל האופייני , להבנתי, של ערבים שכאלו הינם אנשי פיתוח או אנשים שעוסקים בחברות הזנק , נראה על פניו כאשר השאלה מגיעה מאנשים שאינם עובדים ביום יום בקוד פתוח, שהם מבינים את סוגי ה sustainability של פיתוח תוכנה רגילה (קיניינית) לעומת חוסר הכרות עם פיתוח תוכנת קוד פתוח.
מה גם שחלק מהתגובות שקיבלתי ממש נגעו בשאלה זו.
למעשה, טענתי שגלעד וניר התייחסו בהרצאות שלהם ל Flow של הפיתוח באמצעות סכמות ובאמצעות חלוקה לשלבים הגיוניים בפיתוח של קוד פתוח (ושאני בהחלט מסכים לחלוקה זו) ושבצורה שאולי היא מעט לא מודעת , הם "פרקו" את הקהילה או את הרכיב הקהילתי בפרוייקט קוד פתוח למספר גורמים על פי השימושיות שאותם קבוצות עושות בתוכנה המפותחת במסגרת הפרוייקט – כך לדוגמה "מפתחים" הם הראשונים להצטרף לפרוייקט כי הם אולי מבינים את הפוטנציאל שלו .. לעומת "משתמשים" שמצטרפים מאוחר יותר כאשר הם מבינים את את השימושיות שבו.
כל זה טוב ונכון , ואני בהחלט מסכים לזה.
מצד שני, היתה לי ההרגשה שגלעד וניר , בגלל נסיונם (שאני מאד מעריך) חמקו בצורה לא מודעת מהשאלה המרכזית – האם "קהילה" מספקת יותר sustainability לפרוייקט או שלא .
הדרך לחמוק משאלה כבדה זו (שאגב אני כרגע לא מסוגל גם כן לתת עליה את התשובה) היא דרך העלמת מושג ה"קהילה" והחלפתו בקבוצות שנקראות על פי השימוש שהן עושות בתוכנה.
(ואנא .. לא לקפוץ עכשיו ולומר ש"קהילה זה טוב" כי ישנם מצבים שייתכן ויקרו שבהם "קהילה זה רע" )
מצד שני , מאד הערכתי את דבריו של מאיר , שבמקום מסויים אמר "אני סומך בעיקר על עצמי" .
גם מאיר, בדרכו שלו , שהיתה מאד אמיתית לא התעמת עם השאלה ופתר אותה בכך שהוא סומך בעיקר על עצמו והוא כמפתח זה שמספק את ה sustainability לפרוייקט.
אני , ואולי לא הצלחתי לעשות את זה טוב באותו פוסט , בוחר לנסות ולהתעמת עם אותה שאלה – גם אם לא תהיה לי תשובה החלטית בסוף וגם אם עצם הדיון יוליד סט של שאלות חדשות .
למה ?
-
כי ככה אני רוצה.
-
כי זו בהחלט שאלה מאתגרת .
-
כי זו שאלה שבין חצי לשליש ממשתמשי הלינוקס יהיו חייבים להוכיח לי שאני טועה.
-
ובעיקר כי זו שאלה שמאד ראוי לשאול.
אם אני אנסה לשים את השאלה בצורה הכי תמציתית על השולחן השאלה היא בעצם :
האם היותה של תוכנית קוד פתוח – תורם לשרידות של אותה תוכנית לאורך זמן.
ואפילו אם התשובה היא לא .. אז האם יש ייתרונות מהותיים ביחס להיותה של תוכנה , תוכנת קוד פתוח (או "יותר עדיף" , תוכנה חופשית).
בתוך השאלה הזו יש לא מעט רכיבים שצריך להתייחס אליהם – אבל הרכיב הכי מהותי לצורך העיניין או הרכיב הכי בעייתי , הוא הרכיב שהכי קשה לענות עליו והוא למעשה הרכיב שנוהגים לקרוא לו "קהילה" בתמהיל של פיתוח תוכנית בקוד פתוח.
אז נכון, רבים ממשתמשי הלינוקס והקוד הפתוח , יטענו לייתרונות שיש לקהילה שמצטרפת, הסיבה לכך היא שגם אריק ריימונד (במסה "הקתדרלה והבזאר") וגם ריצ'רד סטולמן, כתבו בעבר על הייתרונות שיש בפיתוח קהילתי, כתיבה שבלי ספק השאירה חותם עמוק על משתמשי תוכנה חופשית , חותם שהיום אנו לעיתים רואים אותו בתשובות שאותה קהילה מספקת.
אך האם באמת יש ייתרונות לשיתוף של "קהילה" בתהליך היצירה של תוכנה חדשה ?
דוגמאות לא מעטות, ימחישו שיש ייתרון, לינוקס כמערכת הפעלה או אפצ'י כשרת הם בהחלט ספינות הדגל בבואנו לבחון ייתרונות שיש לפיתוח הקהילתי .
אבל הרבה מאד פרוייקטים (אלפים) שנמוגו, בחלל הווירטואלי הם דווקא דוגמאות שאולי ממחישות (בחלקן) את החסרונות שיש לפיתוח קהילתי – את הפרוייקטים האלו, במקרים רבים הקהילה מעדיפה שלא לזכור.
תמצית הבעיה הינה אי הוודאות שמכניסה מעורבות של אנשים שונים – להלן הקהילה, אל תוך פרוייקט פיתוח.
ברמה הראשונית ראוי לשאול האם צריך בכלל וודאות בתהליך של פיתוח – והתשובה לכך היא כן.
בין אם הפיתוח הוא "חופשי" (קוד פתוח) ובין אם לאו (כלומר קינייני) , המפתחים, המשתמשים , הצרכנים העסקיים – כולנו בעצם מחפשים וודאות שהתוכנה תצליח לספק את מה שהיא מתיימרת לספק.
ברור לי שמפתח קוד פתוח לא יצטרף לפרוייקט כאשר הוא יודע שאחרי פרק זמן הפרויקט ייעלם , אותו מפתח הולך להשקיע לא מעט שעות ומאמץ והוא לא רוצה שזה יירד לטמיון. אם הוא יידע מראש שזה יירד לטמיון הוא מן הסתם יעדיף לבזבז את זמנו על שפת הים ולא מול המסך.
כנ"ל לגביי תוכנה קיניינית – חברות לא משקיעות בתוכנה או בפיתוח אם יש להן את הידיעה שאותו פרוייקט יירד לטמיון . אם יש להן את הידיעה הזו – הם יעדיפו לבזבז את כספם על דברים אחרים.
מתוך כך, נגזרות התנהגויות שלנו כאנשים, ושל חברות, ביחס להשקעות שיש להם. דבר ידוע שחברות הזנק נהנות לנפנף בכמות הכסף או המשקיעים שהצטרפו אליהם – הסיבה לכך היא בין השאר להנמיך את אי הוודאות הקיימת אצל משקיעים פוטנציאלים אחרים , ו/ או אצל משתמשים , כאילו שאם לחברה יש גב כלכלי חזק , כנראה שמישהו חושב שהם מאד מוצלחים.
למעשה, נרצה בכך או לא קיימת אי וודאות מסויימת בכל הנוגע לפיתוח בקוד פתוח, ואותה אי וודאות מתקיימת גם או בעיקר בגלל המעורבות של "גורמים עלומים" דהיינו הקהילה בתהליך הפיתוח.
אותה אי וודאות, קיימת בעיקר אצל אנשים שהינם חיצוניים לעולם הקוד הפתוח.
אבל עוד לפני הכל, אצל אותם אנשים קיימת אכסיומה שחברה שמפתחת מוצר מסחרי חסינה יותר בנושא של אי וודאויות שכאלה (אכסיומה שאני אישית לא יכול להסכים לה מכוון שהיישות הזו שקרויה "חברה בע"מ" הינה יישות שבאה להגן קודם כל על הבעלים שלה .. זו אגב ירושה היסטורית מ"החברה לסחר הודו המזרחית" שהיתה החברה המוגנת הראשונה).
כמובן, שעל פניו, אפשר לנסות ולהבין למה אותה אי וודאות נוצרה, הרי לכאורה אני מכניס אל תוך הליך הפיתוח גורם שיכולת השליטה שלי בו היא נמוכה, ואני נותן לו את היכולת לשלוט לכאורה בהליך הפיתוח.
חסידי הקוד הפתוח, גם בישראל, ניסו בשנים האחרונות להוכיח כי הליך הפיתוח בקוד פתוח הוא בטוח יותר, מעניין יותר, אבל כעובדה הם לא הצליחו להגיע עדיין לקהלים רחבים מספיק.
התחושה שלי, היא שבהינתן מצב שבו אנשי הקוד הפתוח יבינו את אותם מניעים היוצרים את אותו חסם ניתן יהיה להילחם בצורה מושכלת יותר בחסם זה.
אין לי כוונה לחזור על הוכחות בלתי ניתנות להפרכה כאלו ואחרות שנאמרו בשנים האחרונות בשיח הציבורי או בשיח הפנימי אצל אנשי הקוד הפתוח (או כמו שאמר פעם מישהו "אין לי מה להוכיח והוכחתי את זה היום על המגרש" ).
מצד שני, אני כן חושב שצריך לדבר או להעלות לשיח בנושא הזה מספר נקודות שאולי הוזנחו מעט בעבר.
בראש ובראשונה, כדאי לומר שגם מי שעוסקים בקוד פתוח אינם יכולים לנבא את ההתנהגות הקהילתית בצורה מוחלטת, כמו שלא ניתן לנבא בצורה מוחלטת התנהגויות אנושיות אחרות.
ואכן, כמו שהקהילה יכולה להיות גורם מקדם לפרוייקט, ניתן לחשוב על מצבים בהם קהילה יכולה להוות גם גורם שיזיק לפרוייקט (גם אם אין בכוונתה להזיק לפרוייקט).
למעשה, עולם הקוד הפתוח יכול להתבסס והוא אכן מתבסס על מילוי הצרכים האינטרסנטיים של כל הגורמים הלוקחים חלק בפיתוח, בהפצה ובשימוש בקוד פתוח.
אם נצליח לספק את כל הצרכים האינטרסנטיים של כל הגורמים השותפים לפרוייקט הרי שהצלחנו לבנות פרוייקט קוד פתוח שכנראה יצליח….
אמר פעם מר סבר פלוצקר ש"אין ארוחות חינם" , הוא אמר את זה בהקשר לאינטרנט .. ולדעתי יש צדק בדברים שלו, גם בעולם הקוד הפתוח אין ארוחות חינם.
חברות, או גורמי פיתוח אחרים (בין שהם קהילתיים ובין שהם לא) צריכים להבין את הצרכים של כל הגופים שותפים לפרוייקט קוד פתוח ולהצליח להכליל בתוך המסגרת של הפרוייקט את המילוי של אותם צרכים .
כלומר , אם נענה על הצרכים האינטרסנטיים של הרכיבים השונים (אנשים) השייכים לפרוייקט קוד פתוח, הרי שנצליח ליצור פרוייקט ש"מזין את עצמו" .
אבל על זה – בפעם אחרת ..

3 תגובות עבור “אי הוודאות בפרוייקט קוד פתוח”
מאת ik_5 בתאריך 15 ביוני, 2008 | תגובה
בוא אני אתמצת את מה שכתבת
המפתח של vim אמר פעם שהסיבה היחידה שvim כיום הוא עורך vi המוביל ביותר, בגלל שהאו המשיך לפתח אותו כאשר השאר הפסיקו. זו הסיבה היחידה.
הרבה אנשים אומרים לי "פסקל מתה, תפסיק לתכנת בה", אבל בו בזמן יש לך כל חודש כמה אלפי הורדות מהאתר של FPC. אני שומע על פרוייקטים בעולם שהחליטו לקחת את FPC במקום דלפי, או אפילו C/++ כי הם מצאו את השפה להרבה יותר "פשוטה" לתחזק מאשר אותם שפות.
אם אני רוצה שמשהו יעשה, אני צריך לסמוך רק על עצמי, ואם הרבה אנשים יסמכו רק על עצמם, אז אפשר ליצור מזה קהילה, שתשתף פעולה. זה העיקרון הפשוט.
כאשר הרבה אנשים מושכים לכיוונים שונים, אז אין קהילה והמהלך הזה רק מפריע לפיתוח התוכנה.
מאת doron בתאריך 15 ביוני, 2008 | תגובה
לא זה לא התמצית של מה שכתבתי ..
אתה בהחלט יכול להגיע למסקנה שאתה תתחזק לבדך את הפרוייקט שלך וזהו – אבל אז , אתה לא נהנה מהיכולות של שיתוף של קהילה שלמה .
כלומר וויתרת על משאב אדיר בכל הנוגע לפרוייקט שלך.
ה"קסם" הוא בעצם לדעת לרקוד ..
יש לא מעט אנשים שלא מבינים "איך זה עובד בדיוק" .. והשאלות שעולות הן יותר מליגיטימיות בעיניין זה.
- דורון
מאת אופיר בתאריך 15 ביוני, 2008 | תגובה
בוא אני אתמצת את מה שכתבת

קוד פתוח זה לא רכיב קסם שמבטיח את הצלחת הפרוייקט… עולה השאלה מה עוזר להצלחה ואיך זה קשור לקוד פתוח…
אני מאוד מסכים שבין המפתחים למשתמשי קצה פאסיביים, יש חלל גדול שנקרא קהילה – כל מי שתורם להצלחת הפרוייקט. לדעתי כמה מהמרכיבים של פרוייקטים מוצלחים:
- פותרים בעיה אמיתית בצורה מוצלחת לעומת החלופות, לפחות לנישה מסויימת (זה הבסיס)
לתוכנה חופשית יכול להיות כאן יתרון, כי במהותה יש לדעתי ערך מוסף לעומת קוד סגור.
- מפתחים קשובים המגיבים לצרכי המשתמשים.
זה לא חייב להיות תוכנה חופשית – זה מזכיר לי את עידן ה-shareware/freeware של סוף שנות השמונים\תחילת שנות התשעים שמאחוריהם הרבה פעמים היה מפתח אחד נלהב עם תכנה קניינית. עדיין, ההתלהבות והתשוקה נראית לי קצת יותר נפוצה בעולם הפתוח (כי בלעדיה לרוב הפרוייקטים לא היו נוצרים).
- קהילה של תורמים – ממשתמשים שנותנים משוב, דרך בודקים, מעצבים, מנהלי פורומים ועד מפתחים ופרוייקטים נגזרים (כמו plugins)
גם כאן לא תמיד ההבדל גדול. אמנם בקוד פתוח לרוב ניהול הקריאות והבאגים הוא משותף עם העולם, ואפשר לקבל תרומות קוד, אך גם בעולם הקייניי יש קהילות מאוד פעילות ותוססות. סתם דוגמא, כמות עצומה של אנשים מורידה את גרסאות הביטא של מיקרוסופט ותורמת חזרה משוב רב.
לדעתי, לרוב היתרונות של העולם הפתוח מתאזנות עם מצוקת המשאבים הטבעית שלו – בעולם הקנייני יש בעלי תפקידים מובנים שמטפלים בעיצוב, QA, יח"צ, ניהול פורומים, כתיבת תיעוד וכו', כך שהמחיר אומנם הוא יותר לחברה המפתחת, אבל אין סיבה שהתפקידים הנ"ל לא יאויישו ויתבצעו לאורך חיי הפרוייקט. בפרוייקט פתוח לרוב המשאבים מאוד מוגבלים (דורשים התנדבות או ספונסר), כך שברוב הפרוייקטיים הם לא מאויישים, או מאויישים לא על ידי בעלי מקצוע.
אילו היו שתי הלירות שלי….
אופיר
נ.ב. גם אני נתקלתי בסטראפים שהניחו שיש קהילות עצומות "בחוץ" שרק מחכות לתרום להם תכנים, קוד, ניהול פורומים, QA ומה לא… מה לעשות, זה מה שקורה שיש יותר תאוות בצע משכל