פרוייקט הקוד פתוח הראשון שלי

11 אוק׳ 2020 | 5 דק' קריאה

קוד פתוח. מדור: @lucidistortephotoקוד פתוח. מדור: @lucidistortephoto

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

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

00. מה זה קוד פתוח?

קוד פתוח - “Open Source”, הכוונה היא לקוד, לרוב של תוכנה, אתר וכיוצ”ב, שהמהות שלו היא שהקוד מקור חשוף לעולם, ויתן לראות בדיוק איך פיתחו את אותה התוכנית. לרוב מגיע עם רשיון שימוש מתאים, כגון MIT, Apache (שהם המוכרים מבין הרשיונות קוד פתוח) ואלה מאפשרים את השימוש בקוד פתוח.

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

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

רשיון קוד פתוח, GitHub. מקור: צילום מסךרשיון קוד פתוח, GitHub. מקור: צילום מסך

01. למה לי לתרום לקוד פתוח?

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

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

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

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

02. התרומה שלי לקוד פתוח

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

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

הפרוייקט העצמאי הראשון שלי

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

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

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

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

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

למשל, ה7 שורות הנ”ל, מספיקות על מנת ליצור את פאנל הניהול, על סמך קוד קיים -

SchemaUI - פאנל ניהולSchemaUI - פאנל ניהול

והתוצאה היא, פשוט ממשק ניהול של מסד הנתונים הקיים -

SchemaUI - ממשק ניהולSchemaUI - ממשק ניהול

ספציפית, המערכת הזו נוצרה מצורך אישי, ובעיה אמיתית וקונקרטית.

03. איך מתחילים לתרום לקוד פתוח?

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

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

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

שיהיה המון בהצלחה 🤞


קוד פתוח, Open Source, פיתוח