כיצד לבנות מוצר מבוסס קוד פתוח בצורה אחראית ובטוחה

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

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

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

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

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

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

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

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