לתרום לקוד פתוח - מדריך למתחילים

Alonisser ,25/04/2013

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

acquiabeer

למצוא פרוייקט

רוצים לתרום! אבל לא בטוחים לאיזה פרוייקט? האם הכישורים שלכם מתאימים? תשמחו לשמוע שיש כמה מקומות שישמחו לעזור לכם להתחיל:

code triage לקבל כל יום במייל עדכון של נושא פתוח אחד (one issue) מפרוייקט קוד פתוח חביב עליכם

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

ContribHub לא בדקתי ונראה לא גמור עד הסוף, אבל באותה הרוח.

וכמובן: 24 pull requests שפעל בדצמבר (ואמור לפעול גם שנה הבאה) וכרגע סגור וכבר כתבנו עליו בעבר.

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

בפרוייקטים גדולים אחרים אפילו אתרים יעודים לנושא כמו שעשו במלכ"ר התוכנה המפורסם: Mozilla. (פיירפוקס ועוד חברים) ואפילו אתרים שמדריכים תורמים ומתנדבים פוטנציאליים ברכישת הכלים שנדרשים לתרומה לפרוייקט כמו שעושים בOpenOffice

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

אוקי, אבל מה עושים?

תרגום ולוקאליזציה

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

איך מתחילים? מתקינים למשל Poedit. מורידים את קוד המקור של הפרוייקט (הסבר בהמשך) ומחפשים תיקייה שכוללת הרבה תיקיות עם קיצורים לשמות שפות למשל: He, Es ובתוכה בדרך כלל Lc_messages וכדומה. בדרך כלל מתחת לתיקיית Locale/. מחפשים בתיקייה הזו קובץ Pot או po, פותחים אותו מהpoedit והופ. יפתחו מחרוזות לתרגום. django

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

הערה: גם לתרגום יש כללים, יש תווים שלא צריכים לתרגם כי הם מקבלים תוכן אחר מהתוכנה שמשתמשת. אבל אני מניח שתצליחו להסתדר. הנה גם הוראות ראשוניות לדוגמא מהמדריך לתרגום של וורדפרס. אבל הבסיס הוא פשוט: לפתוח קובץ POt לעשות save as כ po ובסוף לעשות save כmo. קובץ הMo הזה הוא בדיוק מה שאתם צריכים להעלות חזרה לפרוייקט שאתם תורמים לו. (איך? בדרך כלל בקבוצת גוגל של הפרוייקט או בדף הפרוייקט תהיה הפניה למי לשלוח או איך להעלות. לפעמים זה בסנכרון של מערכת קוד מבוזר (Git כדוגמא מובילה), העלאה לאתר הבאגים של הפרוייקט או ..) .

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

תיעוד ובדיקות

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

להחזיר ידע לקהילה

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

לתרום קוד.

open-source-software1

בסופו של דבר, התרומה המרכזית לפרוייקט תוכנה היא תרומת קוד. אז אחרי שמצאתם פרוייקט קוד פתוח. תעיינו ברשימת המשימות הפתוחות בIssue tracker שבדרך כלל יש, או את הTODO בקוד, או בקובץ. תחפשו מה שברמה שלכם. תעשו fork לקוד ותתחילו לכתוב.
זה שמדובר בקוד פתוח/תוכנה חופשית לא אומר שאין כאן היררכיה של קבלת החלטות. כך למשל אם מדובר בפרוייקט קוד פתוח פעיל סביר שיהיה לו Maintainers וcore developers. היררכיה פנימית של מי שיכולים לקבל או לא לקבל תרומות קוד (commits) לפרוייקט, עדיף לשאול לפני בפורומי המפתחים הרלוונטיים של הפרוייקט (בדרך כלל בgoogle group בוIRC בפרוייקטים מפותחים, וסתם באיזה ויקי/Issue tracker באחד מאתרי שיתוף הקוד בפחות מפותחים) מה הסטנדרטים המצופים לתרומת הקוד,האם יש מבנה רצוי לתרומה וסטנדרטים של כתיבת קוד (זה מגיע גם לרמת השימוש בspace vs tabs) ואפילו האם התוכנית התכנותית שלכם לבאג/פיצ'ר שאתם רוצים לפתח היא רצויה ומבטיחה. זורמים איתכם? רוצו. שהקוד מוכן, שלחו את הפאצ' וחכו לתגובה. בסופו של דבר תוכלו להוסיף את עצמכם לרשימת התורמים (contributors) של הפרוייקט.

כדאי להדגיש: לתרום קוד זה לא רק לכתוב פיצ'ר או לתקן באג בפרוייקט. לתרום קוד יכול להיות להוסיף script התקנה או בנייה, Installer אוטומטי. יכול להיות גם לכתוב מבחן תוכנה לחלק שלא נבדק מספיק בקוד או אפילו להקים שרת בדיקות (כמו החינמי לפרוייקטים של קוד פתוח בTravic Ci). כל אלו הם חלק מה"קוד" של הפרוייקט ושווה לתרום גם להם. דווקא שם, במקום שהוא פחות הפוקוס המרכזי של מפתחי הליבה יש הרבה פעמים קצוות גסים שעוד דורשים טיפול.

חשבון בGItHub או באתר שיתוף קוד רלוונטי אחר

אם אתם רוצים לתרום קוד לפרוייקט שמתארח באחד מאתרי שיתוף הקוד הגדולים. בראשם כמובן Github וBitbucket אבל גם Google Code עוד פעיל כמו גם Sourceforge וטוענים חדשים כמו Gitorious. כדאי שתפתחו חשבון שם. אתם לא יודעים לעבוד עם Git או Hg? זה הזמן להתחיל. Try Git הוא קורסון מבוא נחמד לזה. והנה בסגנון אחר לHg (מרקוריאל בעצם) . מיועד לחנך מחדש מפתחים שבאים ממערכות מפגרות יותר כמו svn.

ואחרון חביב: משאבים.

"Free like free speech, not like free beer"

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

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

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

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

לסיכום

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

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

תגובה אחת

תגובה