ניהול גרסאות עם Subversion

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

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

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

לצורך הדוגמא – rsyncrypto התחיל את דרכו עם קבצים בסיומת “cc”, שהיא הדרך המקובלת לציין קבצי C++‎ ביוניקס. בגרסה 0.14 של הפרוייקט עלה הצורך לייצר לו גרסת חלונות. בחלונות מקובל לסמן קבצי C++‎ באמצעות הסיומת cpp. מכיוון שיוניקס (ולינוקס) מסתדרים הרבה יותר טוב עם הסיומת cpp לקבצי C++‎ מאשר חלונות עם הסיומת cc, הייתי צריך לשנות את שמם של על קבצי קוד המקור של הפרוייקט. מי שמסתכל היום על קובץ בפרוייקט (למשל, main.cpp) יכול לקבל את הרושם שהקובץ לא היה קיים לפני גרסה 0.14. זוהי הגרסה הראשונה שמופיעה במערכת ניהול הגרסאות. רק מי שמבקש חתכים של כל הפרוייקט יגלה שלפני גרסה זו היה קובץ בשם main.cc, שהיא בעצם אותו הקובץ תחת שם אחר. ההיסטוריה (אותה אפשר לראות אם לוחצים על הקישורים שנתתי) לא עברה מהקובץ הישן לקובץ החדש. מי שרוצה לדעת מה קרה לקובץ טרם היותו בשם האחרון שלו עלול לא למצוא את הקובץ הקודם, ולא לדעת מה ההיסטוריה.

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

מכיוון שבעיותיו של CVS ידועות, אנשים בקהילת התוכנה החופשית עובדים על חלופות. כמובן שיש גם פתרונות בתחום התוכנה הקניינית. הידוע ביותר מבניהם הוא כלי של IBM (לשעבר rational) בשם “ClearCase”. אני חייב להודות שנסיוני עם המוצר מועט הוא אבל כואב. יש לו יכולות מאוד מפותחות בתחום של התפצלויות ואיחודים של העבודה, אבל הוא סובל מבעיות מבעיות שונות. הבעיה החמורה ביותר, מבחינתי, היא שגרסאות שורת הפקודה שלו לא חזקות כמו הגרסאות הגרפיות. במילים אחרות, יש דברים שאם רוצים לעשות עם ClearCase, חייבים להשתמש בכלים הגרפיים. במקום שבו אני נתקלתי בו היו לו גם בעיות ביצועים די קשות, אבל בהחלט ייתכן ששם אלו היו חבלי לידה. כמו כן, גם במקום אחר שבו רצו שאשתמש בו היו לו בעיות שנבעו באופן ישיר מהעובדה שצריך רשיונות. אנשים רבים שם על הרשיונות הצפים. באותו המקרה, נתתי רשימה של דרישות ממערכת ניהול תוכן, וכאשר אנשי ה-ClearCase של החברה אמרו שהם לא יכולים לעמוד בדרישות, הסברתי להם בתקיפות אך בנימוס שאני מתכוון להשתמש ב-CVS, תודה. זה שאני הייתי איש הפיתוח על לינוקס היחידי בחברה שמפתחת כולה בחלונות גם עזר קצת.

אבל עכשיו התחלנו לעבוד פנימית בלינגנו עם מערכת שנקראת SubVersion. מכל המערכות החופשיות שמחליפות את CVS, זו המערכת הבשלה והסטנדרטית ביותר. אני חייב להגיד שאני לא עובד איתו הרבה מידי זמן, וכבר מאוד מאוד מרוצה. מעבר לתמיכה בדברים שחסרים ב-CVS, הדבר המרכזי שטוב הוא זה – הוא לא מדבר עם השרת אלא אם צריך מידע מעודכן. CVS נהג לדבר עם השרת על כל פעולה – בדיקת מה השתנה אצלך, השוואות עם המקור, גרסאות – הכל. Subversion כמעט ולא מדבר אף פעם. כל הנ”ל הן שאילתות שאפשר לעשות על לאפטופ שמנותק מהרשת (או, במקרה שלי, מחובר לרשת, אבל מופרד מהשרת בפיירוול שבו ה-VPN עוד לא עובד :-). הכל קורה מהר ובצורה טובה.

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

שחר

תוכנה חופשית – אסור למכור אותה!

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

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

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

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

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

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

ולא שאני חושב שיש בזה משהו רע.

שחר

סקר שביעות רצון של קופת חולים

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

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

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

שחר

מחקר אנטרופולוגי על תגובות

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

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

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

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

שחר

ACLים לא בטוחים

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

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

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

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

שחר

נ.ב.
כמה קל להגיד “אמרתי לכם”?

גרסה חדשה ל-rsyncrypto

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

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

בעודי עובד על שיחרור הגרסה, מישהו פתח באג במנגנון הבאגים של sourceforge! כן, יש משתמשים! מרגע שהבאג דווח ועד שהיתה גרסה בחוץ שפתרה אותו – 24 שעות. אני חושב שזה לא רע.

שחר

התנהלות עמותת, וחברי קהילת, "המקור"

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

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

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

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

הקבוצה הראשונה, וכנראה שהגדולה ביותר, היתה חברי רשימת התפוצה “Linux-IL”, עם פעילויות ומפגשים פיזיים (בעיקר חייפוקס). לשם גם אני “השתייכתי”. תכונה מאפיינת – דיונים באנגלית וחוסר סבלנות ל-Newbies. הקבוצה השניה היתה של הקהילה שהתאספה סביב האתר “whatsup. השלישית היא מפעילי אתר הפינגווין.

אני לא יודע להגיד אם היו מאפיינים בולטים לחברי שתי הקבוצות האחרות. אני יכול להגיד לכם שאופי הפעילות המאוד שונה של הקהילות, כמו גם התנהגות קצת סנובית של אנשי Linux-IL (התבטאה במיוחד במלחמות על האם שפת הדיבור ברשימות התפוצה של המקור תהיה באנגלית או לא, והאם זה בכלל לגיטימי שיהיו מיילים באנגלית/בעברית) לא עזרה לדברים.

במהלך אותה השנה נאלצנו להתייחס בהמון חשדנות לכל יוזמה חדשה. זו היתה השנה שבה קרה כנס Go-Linux הגדול, וזכינו להרבה התעניינות מחברות מסחריות (אנשים ומחשבים, IBM, Sun, CA ועוד הרבה). היתה דרושה הרבה זהירות כדי להבין את הדרך הנכונה לעבוד מול החברות האלו בצורה שבה אנחנו לא מוותרים על העקרונות שלנו מחד, כן מפיקים משיתוף הפעולה עם החברות תועלת, וגם נותנים להם ערך חזרה (כדי שגם הם יהיו מעוניינים בהמשך שיתוף הפעולה). אני אפילו לא יודע להגיד אם מצאנו את הדרך האופטימלית.

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

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

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

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

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

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

הפוסט הזה כבר יצא ארוך, אז אני אפילו לא אתייחס בו לנושא שבגללו התחלתי לכתוב אותו. אני כן אצא בהכרזה הבאה.

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

שחר

Bear