אוטומציה וקוד פתוח לבלוג

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

קוד פתוח

הבלוג הזה נבנה על מערכת WordPress. השתמשתי בתוסף שמסנכרן את הפוסטים עם Github, לשני הכיוונים. כלומר, כשמעדכנים פוסט באתר, הוא מתעדכן אוטומטית בGithub, וכשמעדכנים פוסט בGithub הוא מעדכן מיד את הבלוג. לכן מעכשיו נגמרו התירוצים. כל הבלוג זמין פה- https://github.com/baruchiro/BcsStudent. בנוסף, בכל פוסט יש קישור לעריכת הפוסט. בכך שהעתקתי את כל הפוסטים לGithub, אנחנו יכולים יותר בקלות, במקום הנוח המוכר, לעבוד עליהם ביחד. (אם Github הוא לא מקום נוח ומוכר לכם, כדאי לכם להכיר אותו. יש פוסטים- git וקוד פתוח, ואני פה כדי לעזור.)

אוטומציה

רציתי אפשרות לסמן מושגים בכל פוסט, ולהציג רשימה שלהם בתחתית הפוסט, וגם לרכז רשימה בדף נפרד. מערכת WordPress כתובה בשפת php, שהיא שפה שאני לא ממש מכיר, ובנוסף, מכיוון שמדובר בFramework, יש צורך ללמוד איך הFramework מתנהג, בנוסף ללימוד השפה. אז נכון, בתור מפתחים אנחנו לא מפחדים משפות וframeworkים חדשים, במיוחד שמדובר במערכת שנמצאת בשליש מאתרי האינטרנט בעולם. אבל מה שכן היה חסר לי, זה זמן. לכן, כשראיתי שאני לא מספיק ללמוד איך לבצע את מה שאני רוצה בעזרת WordPress & PHP, ניצלתי את העובדה שכל הפוסטים נמצאים גם כטקסט בgithub, ואני יכול לבצע עליהם מניפולציה בדרכים שאני כבר מכיר. אז זהו, יש קוד בPython שאוסף את כל המושגים ומציג אותם פה בתחתית, וגם בדף הנפרד. הקוד כתוב לא בצורה הכי נקייה, אז אתם מוזמנים להציע עריכות משלכם, או ללכת לפי הIssues שפתוחים בgithub.

מושגים

  • wordpress– עדיין אין פירוט למושג הזה.
  • GitHub– גִיטהָאבּ הוא אתר לשיתוף קוד שמתבסס על תוכנת גיט.
  • framework– עדיין אין פירוט למושג הזה.

מה כדאי לסטודנט לדעת- קוד פתוח

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

ויקיפדיה:

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

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

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

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

מה

אז מה זה קוד פתוח?

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

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

הקהילה

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

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

אז איך החברה מרוויחה כסף?

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

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

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

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

אני חושב על ארבעה סיבות עיקריותף מוזמנים לשתף אותנו בעוד סיבות:

  • חשיפה לקוד מקצועי
  • עבודה בצוות
  • השתלבות בקהילה
  • קורות חיים

חשיפה לקוד מקצועי

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

עבודה בצוות

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

השתלבות בקהילה

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

קורות חיים

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

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

איך

אז עשיתי חשק? מעולה! איך מתחילים?

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

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

  • מודעות
  • השתתפות
  • יוזמה

מודעות

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

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

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

השתתפות

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

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

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

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

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

יוזמה

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

יש הרבה פרויקטים זמינים, ואפשר לחפש באינטרנט, לקבל המלצות, להשתמש בקישורים פה למטה ועוד. יש פרויקטים שממש משקיעים בקבלת תורמים חדשים (למשל NodeJS אם אני לא טועה), יש פרויקטים שמסמנים דיונים מסוימים כמתאימים למתחילים (up-for-grabs), ויש פרויקטים שאף אחד כבר לא נוגע בהם (נסו לראות מתי מישהו שינה שם משהו בפעם האחרונה).

קישורים

  • Github הוא האתר הנפוץ ביותר לאחסון, שיתוף ועבודה על פרויקטים בקוד פתוח.
  • רשיונות– אמנם הקוד הוא פתוח, אבל יש רמות שונות של פתיחות. אחרי הכל, אני אשמח לשתף את הקוד שלי, אבל לא כדי שמתחרה שלי ינצל את זה כדי למכור את המוצר שלי בזול יותר. Github מציעים דף נחמד שעוזר לנו לבחור את הרשיון המתאים לנו.
  • up-for-grabs היא תגית נפוצה לדיונים, באגים ופיצ'רים שמתאימים למפתחים שרוצים להיכנס לקוד.
  • המקור היא עמותה ישראלית לקידום קוד פתוח. הם מקיימים מפגשים (Meetup) לקהילה ועוזרים לסטודנטים כמונו (ולא רק) להיכנס לעולם הקוד הפתוח.
  • למה לי קוד פתוח עכשיו– פרק של הפודקאסט המומלץ מפתחים חסרי תרבות על קוד פתוח.
  • איך להתחיל בעולם הקוד הפתוח– פרק של הפודקאסט עושים תוכנה על כניסה לקוד פתוח.