מבוא למה לכתוב את הספר הזה? במסיבות, אינני מקבל עוד את אותם מבטים ריקים כאשר אני מספר לאנשים שאני כותב תוכנה חופשית. "הו, כן, קוד פתוח—כמו לינוקס?" הם עונים. אני מניד בראשי בהתלהבות להסכמה. "כן, בדיוק! זה מה שאני עושה." זה נחמד לא להיות יותר בשוליים. בעבר, השאלה הבאה היתה בדרך-כלל צפויה יחסית: "כיצד אתה עושה מזה כסף?" בתשובה, הייתי מסכם את הכלכלה של הקוד הפתוח: ישנם ארגונים אשר מעוניינם שתוכנה מסויימת תתקיים, אך הם אינם צריכים למכור עותקים שלה, אלא רק לדאוג לכך שתהיה זמינה ומתוחזקת, ככלי ולא כמצרך. עם זאת, לאחרונה, השאלה הבאה איננה תמיד נוגעת לכסף. הפן העיסקי של תוכנה בקוד פתוחהמונחים "קוד פתוח" ו"חופשי" זהים עקרונית בהקשר זה; דיון נרחב בהם נמצא תחת בפרק . כבר איננו מסתורי כל-כך, ורבים שאינם תכנתים כבר מבינים—או לפחות אינם מופתעים—שישנם אנשים המועסקים בזה במשרה מלאה. במקום זאת, יותר ויותר עולה השאלה "תגיד, איך בדיוק זה עובד?" לא היתה לי תשובה משביעת רצון מוכנה, וככל שהתאמצתי למצוא אחת, הבנתי עד כמה הנושא הזה באמת מורכב. ניהול פרוייקט תוכנה חופשית אינו בדיוק כמו ניהול עסק (נסו לדמיין צורך בדיון מתמיד על אופי הפרוייקט שלכם עם קבוצת מתנדבים, אשר את רובם מעולם לא פגשתם!). כמו-כן, ממגוון טעמים, אין זה דומה לניהול ארגון ללא כוונת רווח מסורתי, או ממשלה. לכל אלה ישנן נקודות דמיון לניהול פרוייקט תוכנה חופשית, אך אט אט הגעתי למסקנה שתוכנה חופשית היא יחידה במינה. קיים מגוון רחב של דברים מולם ניתן להשוות ניהול פרוייקט של תוכנה חופשית, אך לא אחד מהם יהווה התאמה מדוייקת. למעשה, אפילו ההנחה שניתן "לנהל" פרוייקטים של תוכנה חופשית הינה בעייתית. פרוייקט תוכנה חופשית ניתן ליזום, וכמו-כן, בעלי עניין יכולים להשפיע עליו, לעיתים בצורה מאד משמעותית. עם זאת, לעולם לא יהיה ניתן לייחס את נכסיו לבעלים אחד ויחיד, וכל עוד ישנם אנשים בעולם—בכל מקום—המעוניינים בהמשכת הפרוייקט, יישות אחת אינה יכולה לסגור אותו לחלוטין. לכולם יש כח אין-סופי; ולכולם אין כח כלל. מצב זה יוצר דינאמיקה מעניינת ביותר. זאת הסיבה שרציתי לכתוב את הספר הזה. פרוייקטי תוכנה חופשית פיתחו תרבות ייחודית, אתוס לפיו החופש ליצור את התוכנה בכדי שתעשה כל מה שאתה רוצה הוא עיקרון מרכזי, ועם זאת התוצאה של החופש הזה היא שיתוף פעולה נלהב בין אנשים, במקום התפזרותם איש איש וכיוונו הוא. אכן, היכולת לשיתוף פעולה בעצמה היא אחת מהתכונות המוערכות ביותר בתוכנה חופשית. ניהול פרוייקטים כאלו, פירושו לקחת חלק בשיתוף פעולה מתעצם, בו יכולתו של אדם לא רק לעבוד במשותף עם אנשים אחרים, אלא גם למצוא דרכים חדשות לעבוד במשותף, יכולה להסתכם בייתרונות מוחשיים לתוכנה עצמה. ספר זה מנסה לתאר את השיטות לפיהן ניתן לבצע זאת. ללא כל ספק, אינו שלם, אך הוא לפחות התחלה. תוכנה חופשית טובה היא מטרה ראויה לכשעצמה, ואני תקווה שקוראים אשר מחפשים דרכים להשיג אותה יהיה שבעי רצון ממה שימצאו כאן. אך מעבר לכך אני מקווה גם להעביר דבר מה מהעונג המתקבל מעבודה עם קבוצה חדורת מוטיבציה של מפתחי קוד פתוח, ומההתקשרות עם משתמשים בצורה הישירה הכה נפלאה שקוד פתוח מעודד. השתתפות בפרוייקט תוכנה חופשית מצליח זה כיף, ובסופו של דבר, זה מה שמניע את כל המערכת. למי מיועד ספר זה? ספר זה מיועד למפתחי תוכנה ומנהלים אשר שוקלים להתחיל פרוייקט קוד פתוח, או שהתחילו אחד ותוהים מה לעשות כעת. כמו-כן, ספר זה יהיה שימושי גם עבור אנשים אשר פשוט מעוניינים להשתתף בפרוייקט קוד פתוח אך מעולם לא עשו זאת בעבר. אין הקורא צריך להיות מתכנת, אך כדאי שיכיר מספר מונחים בסיסיים בהנדסת תוכנה כגון, קוד מקור, מהדרים, ומהם טלאים. אין כל צורך בנסיון קודם עם קוד פתוח, הן כמשתמש או כמפתח. אלה אשר עבדו בעבר בפרוייקים של תוכנה חופשית סביר כי ימצאו לפחות חלקים מהספר ברורים מאליהם, ואולי אף ירצו לדלג על חלקים אלה. מאחר ונסיונו של קהל היעד הפוטנציאלי כה מגוון ורחב, הקדשתי תשומת לב רבה לבהירות הכותרות שנתתי לחלקיו השונים של הספר, וכן לציון האם קוראים המכירים את החומר יכולים לדלג על נושא זה או אחר. מקורות מרבית חומר הגלם עבור ספר זה נבע מחמש שנות עבודה עם פרוייקט Subversion.(). Subversion היא מערכת ניהול גרסאות בקוד פתוח, אשר פותחה מאפס, ומיועדת להחליף את CVS כבחירה דה פקטו למערכת ניהול גרסאות של קהילת הקוד הפתוח. הפרוייקט נוצר על-ידי המעסיקים שלי, CollabNet ( ), בתחילת שנת 2000 ותודה לאל ש CollabNet הבינו כבר מתחילתו כיצד לנהל אותו כמאמץ שיתופי מבוזר אמיתי. מוקדם מאד זכינו להתעניינות רבה בקר מפתחים מתנדבים; כיום ישנם כ - 50 ומשהו מפתחים בפרוייקט, מהם רק מעטים מועסקים על-ידי CollabNet. מהרבה היבטים, Subversion הוא דוגמא קלאסית לפרוייקט קוד פתוח, ובסופו של דבר משכתי מנסיוני בפרוייקט הרבה מעבר ממה שתכננתי במקור. במידה מסויימת היה זה עניין של נוחות: כל אימת שנזקקתי לדוגמא לתופעה מסויימת, בדרך-כלל מצאתי אחת ללא כל מאמץ ב Subversion. אך עם זאת גם עניין אימות המידע שיחק תפקיד. למרות שאני לוקח חלק בפרוייקטי תוכנה חופשית אחרים במידה זו או אחרת, ומשוחח עם חברים ומכרים המעורבים ברבים נוספים, כשאתה כותב לדפוס, אתה מבין במהרה שיש לבדוק את העובדות מאחורי כל טענה שלך. לא רציתי להצהיר הצהרות בנוגע לאירועים בפרוייקטים אחרים בהתבסס רק על מה שקראתי ברשימות הדיוור הציבוריות שלהם. אם מישהו היה מנסה זאת עם Subversion, ידעתי שהוא היה צודק במחצית מהמקרים וטועה בחצי השני. לכן, כאשר שאלתי דוגמאות מפרוייקטים בהם לא היתה לי מעורבות ישירה, ניסיתי קודם לשוחח עם מישהו בפרוייקט, עליו יכולתי לסמוך שיסביר בדיוק מה קורה שם. אמנם Subversion היה העבודה שלי במשך 5 השנים האחרונות, אך אני מעורב בתוכנה חופשית כבר 12 שנה. פרוייקטים אחרים אשר השפיעו על ספר זה: עורך המלל Emacs של GNU תחת קרן התוכנה החופשית, אשר בו אני מתחזק מספר חבילות קטנות. מערכת גרסאות מקבילית (CVS), אשר עבדתי עליה במהלך 1994–1995 יחד עם ג'ים בלנדי, ואשר מאז הייתי מעורב בה לפרקים בלבד. אסופת פרוייקטי הקוד הפתוח הידוע בשם קרן התוכנה של אפאצ'י (Apache), בייחוד ב - Apache Portable Runtime (APR) ובשרת ה - HTTP של אפאצ'י. פרוייקט OpenOffice.org, מסד הנתונים של ברקלי מ - Sleepycat, ומסד הנתונים MySQL; לא לקחתי חלק בפרוייקטים אלה באופן אישי, אך צפיתי בהם ובמקרים מסויימים, שוחחתי עם אנשים בהם. מנפה הבאגים (GDB) של GNU (כנ"ל). פרוייקט דביאן (כנ"ל) כמובן, אין זו רשימה מלאה. כמו רוב תכנתי הקוד הפתוח, אני בקשר רופף עם מספר רב של פרוייקטים שונים, ולו בשביל לקבל תחושה של המצב הכללי של הדברים בפרוייקטים. לא אנקוב בשמות כולם כאן, אך הם מצויינים במלל, היכן שצריך. תודות כתיבת הספר נמשכה פי ארבע ממה שהערכתי שהיא תמשך, ולאורך רב הזמן הזה הרגשתי כאילו פסנתר כנף מרחף לי מעל הראש בכל מקום אליו הלכתי. ללא עזרה מאנשים רבים, לא הייתי מסיים את הספר בעודי שפוי. אנדי אורם, העורך שלי ב O'Reilly, היה חלומו של כל כותב. מעבר לידיעתו את השטח באופן אינטימי (הוא הציע רבים מהנושאים), הוא ניחן בכשרון הנדיר של הבנת מה שהתכוונת לומר וסיוע במציאת הדרך הנכונה לומר זאת. היה זה כבוד לעבוד איתו. תודה גם לצ'אק טופורק על העברת ההצעה הזו לאנדי, באופן מיידי. בראין פיצפטריק עבר על כמעט כל החומר בזמן שכתבתי אותו, מה שלא רק הסתכם בלגרום לספר להיות טוב יותר, אלא גם גרם לי להמשיך לכתוב כאשר רציתי להיות בכל מקום בעולם, רק לא מול המחשב. בן קולינס-סוסמן ומייק פילאטו גם כן עקבו אחר ההתקדמות, ותמיד שמחו לדון—לעיתים ארוכות—בנושא אותו ניסיתי לכסות באותו שבוע. גם הם הבחינו מתי שהאטתי, ונתנו דחיפה עדינה כשהיה צורך. תודה חבר'ה. ביילה קולמן כתבה את התזה שלה באותה עת שכתבתי את הספר. היא יודעת מה המשמעות של לשבת ולכתוב כל יום, וסיפקה דוגמא מעוררת השראה כמו גם אוזן קשבת. כמו-כן היא יש לה השקפה אנתרופולוגית מרתקת על תנועת התוכנה החופשית, אשר סיפקה הן רעיונות והן התייחסויות שיכלתי לעשות בהם שימוש בספר. אלכס גולוב—אנתרופולוג נוסף עם רגל אחת בתוך עולם התוכנה החופשית, אשר גם סיים את התזה שלו באותה עת—תמך בי בצורה יוצאת דופן בשלבים המוקדמים, מה שסייע בעדי מאד. מיכה אנדרסון מעולם לא נראה עמוס מדי על-ידי הכתיבה של עצמו, אשר נתנה לי השראה בצורה חולנית, מעוררת-קנאה, תמיד היה שם כידיד, כאיש-שיחה וכן (לפחות בפעם אחת) כתומך טכני. תודה מיכה! ג'ון טרוברידג' וסנדר סטרייקר נתנו גם עידוד וגם עזרה ממוקדת—נסיונם הרחב בתוכנה חופשית תרם חומרים שלא הייתי משיג בשום דרך אחרת. תודה לגרג שטיין לא רק על הידידות והעידוד המתוזמן היטב, אלא גם על שהראה לפרוייקט Subversion עד כמה חשוב תהליך בחינת קוד קבוע לבניית קהילת תכנות. תודה גם לבראין בהלנדורף, אשר בטקט רב טיפטף לראשים שלנו את החשיבות של קיום דיונים בפומבי; אני מקווה שעקרון זה משתקף לאורך הספר. תודה לבנג'מין "מאקו" היל וסת' שון, עבור מספר שיחות אודות תוכנה חופשית והפוליטיקה שלה; לזאק אורלוקר ולואיס סוארז-פוטס על הזמן שהקדישו לי לראיונות במסגרת לוח הזמנים העמוס שלהם; לשיין ברשימת התפוצה של Slashcode על שאישר לי לצטט את הודעתו שם; ולהאגן סו עבור השוואתו המועילה ביותר בין אתרי אירוח זמינים. תודה לאלה דקטייר, פולינה וסוניה על העידוד הסבלני והבלתי נלאה. אני מאד שמח שלא אצטרך עוד לסיים (או לנסות לסיים ללא הצלחה) את הערבים שלנו מוקדם בכדי לחזור הביתה ולעבוד על "הספר". תודה לג'ק רפנינג על הידידות, השיחות והסירוב העיקש לקבל ניתוח קל ומוטעה, בזמן שאחד מסובך אך נכון קיים בנמצא. אני מקווה שחלק מנסיונו הרב, הן בפיתוח תוכנה והן בתעשיית התוכנה, השתלשל לתוך הספר הזה. CollabNet היו נדיבים ביותר כשאיפשרו לי לוח זמנים גמיש בכדי לכתוב, ולא התלוננו כאשר זה נמשך הרבה יותר ממה שתוכנן בתחילה. אינני בקיא בכל הדקויות אשר מביאות הנהלה להחלטות כאלו, אך אני חושד שלסנדיה קלוט ומאוחר יותר למאהש מורת'י, היתה יד בדבר—תודי לשניהם. כל צוות הפיתוח של Subversion היווה מקור השראה במהלך חמש השנים האחרונות, ורבות ממה שמופיע בספר זה למדתי מעבודתי עימם. לא אודה לכולם בשמותיהם כאן, מאחר והם רבים מידי, אך אני מבקש מכל קורא אשר נפגש עם אחד מהתורמים ל Subversion להזמין את אותו תורם מיידית למשקה לפי בחירתו—אני בהחלט מתכוון לעשות כך. פעמים רבות התרעמתי לרייצ'ל סקולון על מצב הספר; היא תמיד האזינה לי, ואיכשהו הצליחה לגרום לבעיות להראות קטנות משנראו לפני ששוחחנו. זה עזר המון—תודה. תודה (פעם נוספת) לנואל טיילור, שלבטח תהה מדוע רציתי לכתוב ספר נוסף בהתחשב בכמות התלונות שהיו לי בפעם הקודמת, אך שחברותו והנחייתו חסרת הפשרות עזרה לשמור על המוזיקה והאחווה בחיי גם בזמנים העמוסים ביותר. תודה גם למת'יו דין ודורותיאה סאמלבן, חברים ושותפים מוזיקליים למודי-סבל, אשר גילו הבנה רבה בעוד שהתירוצים שלי שלא להתאמן נערמו. מייגן ג'נינגס תמכה בקביעות, ובאמת התעניינה בנושא הספר למרות שכלל לא היה מוכר לה—חיזוק מעולה לכותב חסר ביטחון. תודה חברה! ארבעה אנשים ברי-ידע רב וסבלנות קראו את הספר וביצעו הגהה: יואב שפירא, אנדרו סטלמן, דאוונום סריניווס ובן הייד. אילו יכלתי לשלב את כל עצותייהם המעולות, היה הספר טוב יותר. בסופו של דבר, אילוצי זמן הכריחו אותי לברור ולבחור מהן, אך השיפורים עודם משמעותיים. כל השגיאות שנשארו הינן שלי בלבד. הוריי, פרנסיס והנרי, שהיו תומכים בצורה מופלאה כתמיד, והיות שספר זה פחות טכני מהקודם, אני מקווה שימצאו אותו קריא עבורם. ולבסוף, ברצוני להודות לאלה עבורם הספר מוקדש, קארן אנדרהיל וג'ים בלאנדי. החברות של קארן והבנתה היוו עבורי הכל, לא רק במשך כתיבת ספר זה, כי אם במשך שבע השנים האחרונות. פשוט לא הייתי מסיים ללא עזרתה. כמו-כן עם ג'ים, חבר אמת וההאקר של ההאקרים, אשר לימד אותי לראשונה אודות תוכנה חופשעת, כמו שציפור עשויה ללמד מטוס כיצד לעוף. הסרת אחריות המחשבות והדעות המובעות בספר זה הן שלי בלבד. אין הן מייצגות בהכרח את השקפת CollabNet או זו של פרוייקט Subversion.