10 שלב אינטגרציה

GitHub לקוד פתוח — קהילה ותרומה

בפרק הזה תלמדו לבנות נוכחות מקצועית בעולם הקוד הפתוח. תכינו פרויקט שמזמין תרומות מהקהילה, תבחרו רישיון מתאים, תגדירו templates ו-guidelines, תפעילו Discussions ו-Sponsors, ותלמדו לתרום לפרויקטים של אחרים. זה הפרק שבו כל מה שלמדתם בקורס — Actions, Security, API, ארגונים — מתחבר לתמונה שלמה.

מה יהיה לך בסוף הפרק הזה
מה תוכלו לעשות בסוף הפרק הזה
דרישות קדם
חוט הפרויקט

מאיפה באנו: בפרק 9 למדתם לנהל ארגונים, צוותות, CODEOWNERS ו-rulesets — כלים שמגדירים מי יכול לעשות מה בקוד. עכשיו אנחנו לוקחים את הכלים האלה ופותחים את הדלת לקהילה הרחבה.

מה נבנה בפרק הזה: ריפוזיטורי מוכן לקבלת תרומות מקהילת קוד פתוח — עם כל הקבצים, ה-templates, הרישיון והתשתית הקהילתית. בנוסף, תבנו README profile אישי שמשקף את הנוכחות המקצועית שלכם.

לאן ממשיכים: בפרק 11 (מה חינמי ומה בתשלום) נמפה את כל הפיצ'רים — כולל OSS features — ונבנה אסטרטגיית שימוש שממקסמת ערך.

מילון מונחים
OSS / Open Source Software
תוכנה שהקוד שלה פתוח לציבור — כל אחד יכול לקרוא, להשתמש, לשנות ולהפיץ (בכפוף לרישיון)
LICENSE
קובץ שמגדיר את התנאים לשימוש בקוד — ללא רישיון, הקוד הוא all rights reserved כברירת מחדל
Fork
עותק של ריפוזיטורי תחת החשבון שלך — בסיס לתרומה דרך Pull Request
Upstream
הריפוזיטורי המקורי שממנו עשיתם fork — ממנו אתם מושכים עדכונים
CONTRIBUTING.md
מסמך שמסביר לתורמים איך לתרום — סגנון קוד, תהליך PR, כללי commit messages
Code of Conduct
כללי התנהגות שמגדירים את הנורמות בקהילה — מחייבים כבוד, מונעים הטרדה
Issue Template
טופס מובנה שמנחה את מי שפותח issue — bug report, feature request, וכו'
PR Template
תבנית שמנחה את מי שפותח Pull Request — מה השתנה, איך לבדוק, וכו'
GitHub Discussions
פורום מובנה בריפוזיטורי — שאלות, הכרזות, רעיונות, polls
GitHub Sponsors
מנגנון מימון מובנה — משתמשים יכולים לתמוך כספית ב-maintainers
OSSF Scorecard
כלי של Open Source Security Foundation שמדרג בריאות ואבטחה של פרויקטים (0-10)
Community Health Files
קבצים ברמת .github/ שמגדירים את מדיניות הקהילה — LICENSE, CONTRIBUTING, CODE_OF_CONDUCT, SECURITY.md
Good First Issue
תווית (label) ש-GitHub מקדם — מסמנת issues קלים שמתאימים לתורמים חדשים
Maintainer
מי שאחראי על הפרויקט — מאשר PRs, מנהל issues, קובע כיוון
Semantic Versioning
מוסכמה לניהול גרסאות: MAJOR.MINOR.PATCH — למשל 2.1.0

10.1 למה קוד פתוח חשוב — ומה זה נותן לך

קוד פתוח (Open Source Software / OSS) הוא לא רק פילוסופיה — זו תשתית של תעשיית התוכנה כולה. כמעט כל אפליקציה שאתם משתמשים בה מורכבת מעשרות עד אלפי packages של קוד פתוח. React, Node.js, Linux, Kubernetes, VS Code, Git עצמו — כל אלה קוד פתוח.

אבל למה אתם צריכים להתעניין בזה? שלוש סיבות מעשיות:

  1. קריירה. פרופיל GitHub עם תרומות לפרויקטים מוכרים שווה יותר מעשרה שורות ב-CV. מנהלי גיוס מסתכלים על contribution graph, על PRs שהתקבלו, על פרויקטים שבניתם. זה proof of work שאי אפשר לזייף.
  2. מיומנות. לתרום לפרויקט אמיתי — עם code review, CI pipeline, coding standards — מלמד אתכם יותר מעשרה צוותים פנימיים. אתם נחשפים לארכיטקטורות שונות, סגנונות קוד שונים, ותהליכי עבודה מקצועיים.
  3. השפעה. תיקון באג ב-library שמשרתת מיליון מפתחים? זו השפעה אמיתית. בניית כלי שפותר בעיה שלכם? סביר שעוד אלפים צריכים אותו.

ועוד נקודה שרבים מפספסים: GitHub נותן יתרונות משמעותיים לפרויקטי קוד פתוח. ריפוזיטורים ציבוריים מקבלים Actions minutes ללא הגבלה, Packages storage בחינם, ו-GitHub Advanced Security (GHAS) — כולל CodeQL — ללא עלות. פרויקט פתוח ב-GitHub הוא סביבת פיתוח מלאה, בחינם.

הנוף של קוד פתוח ב-GitHub

כמה מספרים שמראים את הסקאלה:

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

מה GitHub נותן בחינם לפרויקטי קוד פתוח

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

פיצ'רריפו פרטי (Free)ריפו ציבורי
Actions minutes2,000 דקות/חודשללא הגבלה
Packages storage500 MBללא הגבלה
Codespaces60 core-hours/חודש60 core-hours/חודש
Code scanning (CodeQL)בתשלום (GHAS)חינם
Secret scanningבתשלום (GHAS)חינם
Dependency reviewבתשלום (GHAS)חינם
GitHub Pagesכןכן
Discussionsכןכן
Sponsorsלא רלוונטיכן

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

דוגמאות מייצגות: מפתחים שבנו קריירה מקוד פתוח

קוד פתוח יכול להיות מנוע קריירה חזק. הנה כמה דפוסים נפוצים:

בישראל הדפוס הזה חזק במיוחד — חברות כמו Wix, Monday.com ו-Snyk משחררות כלים פנימיים כקוד פתוח, ומפתחים ישראלים מובילים פרויקטים בינלאומיים רבים.

עשו עכשיו

פתחו את github.com/explore ובדקו את Trending Repositories. סננו לפי השפה שאתם עובדים בה. בחרו פרויקט אחד עם יותר מ-100 stars, כנסו לטאב Issues, וחפשו label בשם good first issue. קראו 2-3 issues — זה ייתן לכם תחושה של מה קהילת OSS מחפשת.

10.2 לתרום לפרויקט קוד פתוח — מאפס לתורם מוכר

הרבה מפתחים רוצים לתרום לקוד פתוח אבל לא יודעים מאיפה להתחיל. התהליך נראה מפחיד — פרויקטים גדולים, קוד לא מוכר, code review מ-strangers. אבל בפועל, התהליך מובנה ומוגדר היטב. בואו נפרק אותו לשלבים.

שלב 1: מצאו פרויקט מתאים

לא כל פרויקט מתאים לתרומה ראשונה. חפשו את הסימנים האלה:

מקומות לחפש:

שלב 2: Fork ו-Clone

לא עובדים ישירות על הריפוזיטורי המקורי. עושים fork — עותק אישי שלכם — ועובדים עליו:

# Fork דרך gh cli (המהיר ביותר)
gh repo fork owner/project --clone

# או ידנית:
# 1. לחצו Fork בדף הריפוזיטורי
# 2. Clone של ה-fork שלכם:
git clone https://github.com/YOUR-USERNAME/project.git
cd project

# הגדירו את ה-upstream (הריפו המקורי)
git remote add upstream https://github.com/owner/project.git
git fetch upstream

שלב 3: צרו branch עם שם ברור

# תמיד עבדו מ-branch חדש, לא מ-main
git checkout -b fix/typo-in-readme
# או
git checkout -b feat/add-hebrew-translation
# או
git checkout -b docs/update-installation-guide

מוסכמה נפוצה: type/short-description — כש-type הוא fix, feat, docs, refactor, test.

שלב 4: עבדו, commit, push

# עשו את השינויים שלכם
# ודאו שאתם עוקבים אחרי ה-CONTRIBUTING.md של הפרויקט

# Commit עם הודעה ברורה
git add .
git commit -m "fix: correct typo in installation section of README"

# Push ל-fork שלכם
git push origin fix/typo-in-readme

שלב 5: פתחו Pull Request

# דרך gh cli
gh pr create --title "fix: correct typo in installation section" \
  --body "Fixes a small typo in the README installation instructions.

## Changes
- Fixed 'instll' → 'install' in line 42

## Testing
- Verified the README renders correctly on GitHub"

# או דרך GitHub UI — GitHub יציע אוטומטית ליצור PR אחרי ה-push

כמה כללים ל-PR טוב:

שלב 6: Code Review והתאמות

אחרי שפתחתם PR, ה-maintainers יעשו code review. מה לצפות:

סוגי תרומות — זה לא רק קוד

הרבה מפתחים חושבים שתרומה = כתיבת קוד. אבל פרויקטי קוד פתוח צריכים הרבה יותר:

סוג תרומהדוגמאותקושיהשפעה
תיעודתיקון typos, שיפור README, הוספת דוגמאותקלגבוה — תיעוד טוב = adoption
בדיקותהוספת unit tests, שיפור coverageבינוניגבוה — מונע באגים
תרגוםתרגום ממשק, תיעוד, הודעות שגיאהקלבינוני — מרחיב קהילה
דיווח באגיםפתיחת issue מפורט עם reproduction stepsבינוניגבוה — מזהה בעיות
Code reviewסקירת PRs של אחריםבינוני-גבוהגבוה — מקל על maintainers
תיקון באגיםfix של bug מתועדבינוניגבוה — תיקון ישיר
פיצ'רים חדשיםמימוש feature requestגבוהגבוה — מרחיב יכולות
Design / UXשיפור ממשק, icons, CSSבינוניבינוני — נראות טובה יותר
Triageסיווג issues, שכפול באגים, סגירת duplicatesקל-בינוניגבוה — מפנה זמן ל-maintainers

הנקודה החשובה: תרומות תיעוד ו-triage הן לעתים קרובות מבוקשות יותר מקוד. Maintainers תמיד מחפשים עזרה בדברים ש"אף אחד לא רוצה לעשות". אם אתם מתחילים — תיעוד וניהול issues הם הדרך הטובה ביותר להיכנס לפרויקט.

סנכרון Fork עם Upstream — שלב שרבים מפספסים

אחרי שעשיתם fork, הריפוזיטורי המקורי (upstream) ממשיך להתקדם. אם לא תסנכרנו, תיתקלו ב-merge conflicts. הנה איך לשמור על ה-fork מעודכן:

# סנכרון ה-fork עם ה-upstream
git fetch upstream
git checkout main
git merge upstream/main
git push origin main

# או דרך gh cli (פשוט יותר):
gh repo sync

# או דרך GitHub UI:
# בדף ה-fork שלכם, לחצו "Sync fork" ← "Update branch"

מתי לסנכרן: לפני שמתחילים עבודה על branch חדש. תמיד. אם ה-fork שלכם 50 commits מאחור ב-upstream, כל PR שתפתחו יהיה בעייתי.

עשו עכשיו

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

טעות נפוצה: לפתוח PR ענק כתרומה ראשונה

אל תפתחו PR שמשנה 500 שורות כתרומה ראשונה. ה-maintainers לא מכירים אתכם עדיין. התחילו קטן — typo fix, תיעוד, test שחסר — ובנו אמון. אחרי 2-3 תרומות קטנות שהתקבלו, תוכלו להציע שינויים גדולים יותר.

תהליך תרומה לפרויקט קוד פתוח מצא פרויקט good first issue Fork + Clone gh repo fork Branch fix/description Commit + Push to your fork Pull Request gh pr create Review Merge! git fetch upstream & sync אחרי merge, סנכרנו את ה-fork עם ה-upstream והתחילו תרומה חדשה
עשו עכשיו

עשו fork לפרויקט first-contributions — פרויקט שנבנה בדיוק לתרגול תרומות ראשונות. עקבו אחרי ההוראות שלו: fork, clone, branch, הוסיפו את השם שלכם, commit, push ופתחו PR. כל התהליך לוקח 5 דקות ונותן לכם ניסיון אמיתי.

10.3 רישיונות — MIT, Apache, GPL ומה שביניהם

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

זה אחד הדברים שמפתחים רבים מפספסים: ציבורי (public) לא אומר חופשי (free to use). ריפוזיטורי ציבורי בלי LICENSE = אפשר לקרוא את הקוד, אבל אסור לעשות איתו שום דבר אחר.

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

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

שלושת הרישיונות הנפוצים

קריטריוןMITApache 2.0GPL 3.0
חופש שימושמלא — עשו מה שרוציםמלא — עשו מה שרוציםמלא — אבל עם תנאי
שימוש מסחרימותרמותרמותר
הגנת פטנטיםלאכן — מעניק רישיון פטנטיםכן
Copyleftלא — אפשר לסגור קוד נגזרלא — אפשר לסגור קוד נגזרכן — קוד נגזר חייב להיות GPL
חובת ייחוסכן — צריך לשמור noticeכן — צריך לשמור notice + NOTICE fileכן — וצריך לשתף קוד מקור
אורך הטקסט~20 שורות~200 שורות~600 שורות
פרויקטים מפורסמיםReact, Express, jQueryKubernetes, Android, SwiftLinux kernel, WordPress, Bash
מתאים ל-כלים, ספריות, פרויקטים קטניםפרויקטים גדולים עם סיכון פטנטיםכשרוצים שקוד נגזר ישאר פתוח

עוד רישיונות שתפגשו

ספקטרום הרישיונות — מחופשי ביותר למגביל ביותר Unlicense Public Domain MIT / BSD Permissive Apache 2.0 Permissive + Patents GPL 3.0 Copyleft AGPL 3.0 Network Copyleft חופשי ביותר מגביל ביותר
מסגרת החלטה: בחירת רישיון
מצברישיון מומלץלמה
ספרייה / utility קטן — רוצים adoption מקסימליMITהפשוט ביותר. אף אחד לא מפחד מ-MIT. שימוש מסחרי מותר ללא תנאים.
פרויקט ארגוני / Enterprise — חשש מפטנטיםApache 2.0הגנת פטנטים מובנית. חברות גדולות מעדיפות אותו.
רוצים שנגזרות ישארו פתוחותGPL 3.0Copyleft מבטיח שכל שינוי יישאר קוד פתוח.
SaaS / Web service — רוצים למנוע ניצול ללא תרומה חזרהAGPL 3.0סוגר את ה-"SaaS loophole" — גם שירות ענן חייב לשתף קוד.
לא אכפת לי בכלל — public domainUnlicense / CC0ויתור מלא. שימו לב: בחלק מהמדינות אי אפשר "לוותר" על copyright, אז CC0 מוסיף fallback.

הכלל: אם אתם לא בטוחים — MIT. זה הרישיון הנפוץ ביותר ב-GitHub, הכי מובן, הכי קל לחברות לאמץ. תעברו ל-Apache 2.0 אם פטנטים רלוונטיים, ול-GPL רק אם Copyleft חשוב לכם.

איך מוסיפים רישיון

# הדרך הקלה ביותר — דרך GitHub UI:
# 1. Repository ← Add file ← Create new file
# 2. כתבו "LICENSE" בשם הקובץ
# 3. GitHub יציע לכם לבחור רישיון מתוך template
# 4. בחרו, מלאו פרטים, commit

# דרך gh cli (אם הריפו כבר קיים):
# הוסיפו LICENSE מתוך template
gh repo edit --default-branch main
# ואז ב-GitHub UI: Settings ← "Add a LICENSE"

# או פשוט צרו קובץ LICENSE בשורש הריפו
# והדביקו את הטקסט מ-https://choosealicense.com/

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

תאימות בין רישיונות — מתי יש בעיה

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

כלל אצבע: אם אתם לא בטוחים, השתמשו ב-license-checker (npm) או pip-licenses (Python) לסרוק את התלויות שלכם ולבדוק תאימות:

# Node.js — בדיקת רישיונות של כל התלויות
npx license-checker --summary

# Python
pip install pip-licenses
pip-licenses --format=table

רישיון לתוכן (לא קוד)

אם הפרויקט שלכם כולל תיעוד, תמונות, או תוכן לא-קודי — שקלו רישיון Creative Commons. CC BY 4.0 הוא הנפוץ ביותר: מאפשר כל שימוש בתנאי ייחוס. הפרדה נפוצה: MIT לקוד, CC BY 4.0 לתיעוד.

עשו עכשיו

לכו ל-choosealicense.com ותענו על השאלות. ראו מה הכלי ממליץ. אחר כך, בדקו 3 פרויקטים שאתם משתמשים בהם — מה הרישיון שלהם? האם הוא מתאים לאיך שאתם משתמשים בהם? לבסוף, הריצו npx license-checker --summary (אם זה פרויקט Node.js) ובדקו שאין תלויות עם רישיונות בעייתיים.

10.4 README Profile — הפרופיל האישי שלך

GitHub מאפשר ליצור README שמופיע ישירות בעמוד הפרופיל שלכם. הטריק: צרו ריפוזיטורי עם בדיוק אותו שם כמו ה-username שלכם. GitHub מזהה את זה כ-"profile repository" ומציג את ה-README.md שלו בראש הפרופיל.

איך מתחילים

# צרו ריפוזיטורי חדש עם השם של ה-username שלכם
# אם ה-username שלכם הוא "dana-dev":
gh repo create dana-dev --public --description "My GitHub profile" --clone
cd dana-dev

# צרו README.md
touch README.md

GitHub יציג הודעה מיוחדת: "dana-dev/dana-dev is a special repository. Its README.md will appear on your public profile."

מבנה מומלץ ל-README profile

אין מבנה חובה, אבל הנה template שעובד היטב:

# Hi, I'm Dana 👋

## About Me
- 🔭 Currently working on [project-name](link)
- 🌱 Learning TypeScript and Kubernetes
- 💬 Ask me about React, Node.js, CI/CD
- 📫 Reach me: dana@example.com

## Tech Stack
![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?logo=typescript&logoColor=white)
![React](https://img.shields.io/badge/-React-61DAFB?logo=react&logoColor=black)
![Node.js](https://img.shields.io/badge/-Node.js-339933?logo=node.js&logoColor=white)
![GitHub Actions](https://img.shields.io/badge/-GitHub_Actions-2088FF?logo=github-actions&logoColor=white)

## GitHub Stats
![GitHub Stats](https://github-readme-stats.vercel.app/api?username=dana-dev&show_icons=true&theme=tokyonight)

## Recent Projects
- [awesome-tool](link) - CLI tool for X
- [cool-lib](link) - Library that does Y

שירותים שימושיים ל-profile:

Pinned Repositories — מה שאנשים רואים ראשון

בנוסף ל-README, תוכלו לנעוץ (pin) עד 6 ריפוזיטורים שמופיעים בולט בפרופיל. לכו ל-Profile ← "Customize your pins". בחרו את הפרויקטים שהכי מייצגים את היכולות שלכם — לא בהכרח הגדולים ביותר, אלא אלו שמראים את הטוב ביותר שלכם.

עשו עכשיו

צרו README profile עכשיו. השתמשו ב-template שלמעלה כבסיס, התאימו אותו לעצמכם, והוסיפו לפחות 3 badges של טכנולוגיות שאתם עובדים בהן. דחפו ל-GitHub ובדקו איך זה נראה ב-github.com/YOUR-USERNAME.

10.5 README מקצועי לפרויקט — הדלת הראשית

ה-README של פרויקט הוא הדבר הראשון שכל מבקר רואה. README טוב הוא ההבדל בין "מעניין, בוא נבדוק" ל-"מה זה? הלאה". זה לא רק תיעוד — זה שיווק.

README מקצועי חייב לענות על 5 שאלות בתוך 30 שניות:

  1. מה זה? — תיאור קצר וברור
  2. למה שאשתמש בזה? — מה הבעיה שזה פותר
  3. איך מתקינים? — הוראות התקנה מדויקות
  4. איך משתמשים? — דוגמת קוד מינימלית
  5. האם זה maintained? — badges, activity, license

מבנה מומלץ

# Project Name

[![CI](https://github.com/user/repo/actions/workflows/ci.yml/badge.svg)](link)
[![npm version](https://img.shields.io/npm/v/package)](link)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](link)

> One-line description of what this does.

## Features
- ✅ Feature one
- ✅ Feature two
- ✅ Feature three

## Quick Start

```bash
npm install my-package
```

```javascript
const myPackage = require('my-package');
myPackage.doSomething();
```

## Installation
Detailed installation instructions...

## Usage
Detailed usage examples...

## API Reference
If applicable...

## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)

## License
[MIT](LICENSE)

טיפים:

Badges — אותות ויזואליים

Badges (תגיות) בראש ה-README משדרים מידע בהצצה אחת. הנפוצים ביותר:

סוג Badgeמה מראהאיפה ליצור
CI Statusהאם ה-build עוברGitHub Actions — הכפתור "Create status badge" בטאב Actions
npm versionגרסה אחרונה שפורסמהshields.io/npm/v/PACKAGE
Licenseסוג הרישיוןshields.io/github/license/USER/REPO
Downloadsכמות הורדותshields.io/npm/dm/PACKAGE
Coverageאחוז test coverageCodecov / Coveralls
Scorecardציון OSSFsecurityscorecards.dev

[![CI](https://github.com/USER/REPO/actions/workflows/ci.yml/badge.svg)](https://github.com/USER/REPO/actions)
[![npm](https://img.shields.io/npm/v/PACKAGE)](https://www.npmjs.com/package/PACKAGE)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Downloads](https://img.shields.io/npm/dm/PACKAGE)](https://www.npmjs.com/package/PACKAGE)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/USER/REPO/badge)](https://securityscorecards.dev/viewer/?uri=github.com/USER/REPO)

כלל אצבע: אל תוסיפו יותר מ-6-7 badges. יותר מזה נראה עמוס ומפחית את ההשפעה. הציגו רק badges שנותנים ערך — CI status, version, license. אל תוסיפו badges שרק "נראים יפה" בלי מידע אמיתי.

עשו עכשיו

קחו ריפוזיטורי שלכם (או צרו חדש) ועדכנו את ה-README לפי המבנה שלמעלה. וודאו שיש: תיאור, דוגמת קוד, הוראות התקנה, ו-badge אחד לפחות (CI status). לא חייב להיות מושלם — אבל חייב לענות על 5 השאלות.

10.6 קבצי קהילה — CONTRIBUTING, Code of Conduct ו-Templates

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

CONTRIBUTING.md — חוקת התורם

קובץ שמסביר בדיוק איך לתרום. מה צריך לכלול:

# Contributing to Project Name

## How to Contribute

1. Fork the repository
2. Create a feature branch (`git checkout -b feat/amazing-feature`)
3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
4. Push to the branch (`git push origin feat/amazing-feature`)
5. Open a Pull Request

## Development Setup

```bash
git clone https://github.com/your-fork/project.git
cd project
npm install
npm test  # Make sure everything works
```

## Commit Convention

We use [Conventional Commits](https://conventionalcommits.org/):
- `feat:` — new feature
- `fix:` — bug fix
- `docs:` — documentation change
- `refactor:` — code change that neither fixes a bug nor adds a feature
- `test:` — adding or updating tests

## Code Style
- ESLint + Prettier (run `npm run lint` before committing)
- All functions must have JSDoc comments
- Tests are required for new features

## Pull Request Guidelines
- Keep PRs small and focused
- Include tests for new functionality
- Update documentation if needed
- Reference the issue number in the PR description

CODE_OF_CONDUCT.md — כללי התנהגות

מגדיר את הנורמות החברתיות בקהילה. הסטנדרט הנפוץ ביותר הוא Contributor Covenant, שמאומץ על ידי אלפי פרויקטים כולל Kubernetes, Rails, ו-Swift.

דרך GitHub UI אפשר להוסיף Code of Conduct ב-click אחד: Repository → Insights → Community Standards → "Add" ליד Code of Conduct.

למה זה חשוב? קהילה בלי כללי התנהגות ברורים מרתיעה תורמים, במיוחד אנשים מקבוצות שנמצאות underrepresented ב-tech. Code of Conduct שולח מסר: "פה יש סביבה מכבדת".

Issue Templates — טפסים מובנים

בלי templates, אתם מקבלים issues בסגנון "It doesn't work" בלי שום מידע שימושי. עם templates, כל issue מגיע עם מבנה:

# .github/ISSUE_TEMPLATE/bug_report.yml
name: Bug Report
description: Report a bug to help us improve
title: "[Bug]: "
labels: ["bug", "triage"]
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to report a bug!

  - type: textarea
    id: description
    attributes:
      label: Describe the bug
      description: A clear description of what the bug is
    validations:
      required: true

  - type: textarea
    id: reproduction
    attributes:
      label: Steps to reproduce
      description: Steps to reproduce the behavior
      value: |
        1. Go to '...'
        2. Click on '...'
        3. See error
    validations:
      required: true

  - type: textarea
    id: expected
    attributes:
      label: Expected behavior
      description: What you expected to happen

  - type: dropdown
    id: os
    attributes:
      label: Operating System
      options:
        - macOS
        - Windows
        - Linux
    validations:
      required: true

  - type: textarea
    id: version
    attributes:
      label: Version
      description: What version are you using?
    validations:
      required: true

וגם template ל-Feature Request:

# .github/ISSUE_TEMPLATE/feature_request.yml
name: Feature Request
description: Suggest an idea for this project
title: "[Feature]: "
labels: ["enhancement"]
body:
  - type: textarea
    id: problem
    attributes:
      label: Is your feature request related to a problem?
      description: A clear description of the problem
    validations:
      required: true

  - type: textarea
    id: solution
    attributes:
      label: Describe the solution you'd like
    validations:
      required: true

  - type: textarea
    id: alternatives
    attributes:
      label: Describe alternatives you've considered

PR Template

קובץ .github/PULL_REQUEST_TEMPLATE.md שמוסיף תבנית אוטומטית לכל PR חדש:

## Description


## Related Issue


## Changes Made
- [ ] Change 1
- [ ] Change 2

## How to Test

1.
2.

## Checklist
- [ ] Tests pass locally
- [ ] Code follows project style
- [ ] Documentation updated (if needed)
- [ ] Changelog updated (if needed)

config.yml — הגדרת "issue chooser"

בנוסף ל-templates עצמם, אפשר ליצור .github/ISSUE_TEMPLATE/config.yml שמגדיר את דף הבחירה כשמישהו פותח issue חדש:

# .github/ISSUE_TEMPLATE/config.yml
blank_issues_enabled: false  # חוסם issues ללא template
contact_links:
  - name: Question / Help
    url: https://github.com/USER/REPO/discussions/categories/q-a
    about: For questions, please use Discussions instead of Issues
  - name: Security vulnerability
    url: https://github.com/USER/REPO/security/advisories/new
    about: Report security vulnerabilities privately

blank_issues_enabled: false — מונע מאנשים לפתוח issue ריק (בלי template). זה מבטיח שכל issue יגיע עם המידע שאתם צריכים. contact_links — מפנה אנשים למקומות אחרים (Discussions לשאלות, Security Advisories לפגיעויות).

Community Health Files ברמת ארגון

אם יש לכם ארגון GitHub עם כמה ריפוזיטורים, אפשר להגדיר ברירת מחדל לכל הריפוזיטורים מריפו מרכזי בשם .github:

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

SECURITY.md — מדיניות אבטחה

קובץ שמסביר איך לדווח על פגיעויות אבטחה באופן פרטי (לא דרך issue ציבורי). GitHub תומך ב-Private Vulnerability Reporting — אפשר להפעיל ב-Settings → Security → "Enable private vulnerability reporting".

# Security Policy

## Reporting a Vulnerability

Please **DO NOT** open a public issue for security vulnerabilities.

Instead, use GitHub's private vulnerability reporting:
1. Go to the Security tab
2. Click "Report a vulnerability"
3. Describe the issue in detail

We will respond within 48 hours.

## Supported Versions

| Version | Supported          |
| ------- | ------------------ |
| 2.x     | ✅ Yes             |
| 1.x     | ❌ No (end of life)|
עשו עכשיו

בריפוזיטורי שלכם, צרו תיקיית .github/ISSUE_TEMPLATE/ והוסיפו קובץ bug_report.yml לפי הדוגמה למעלה. פתחו issue חדש בריפוזיטורי — אתם תראו את ה-template מופיע כאפשרות. מלאו אותו ובדקו שהטופס עובד.

טעות נפוצה: לא להגדיר issue templates — "אנשים ידעו מה לכתוב"

לא ידעו. בלי template, כ-70% מה-bug reports יהיו חסרי מידע. תצטרכו לשאול follow-up questions, מה שמאט את הטיפול ומתסכל את שני הצדדים. Template פותר את זה מהצעד הראשון.

10.7 Discussions ו-Sponsors — בניית קהילה ומימון

GitHub Discussions — פורום מובנה בריפוזיטורי

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

איך מפעילים: Repository → Settings → Features → Discussions → Enable.

קטגוריות שמגיעות כברירת מחדל:

אפשר ליצור קטגוריות מותאמות. למשל, פרויקטים רבים מוסיפים "RFC" (Request for Comments) לדיון על שינויים גדולים לפני implementation.

טיפ: Issues vs Discussions — מתי מה?

סוגIssuesDiscussions
באגכןלא
Feature request מוגדרכןלא
שאלה על שימושלאכן (Q&A)
רעיון ראשונילאכן (Ideas)
הכרזהלאכן (Announcements)
RFC על שינוי גדוללאכן (RFC / General)

טיפ חשוב: אפשר להמיר Discussion ל-Issue (ולהפך). אם מישהו פותח שאלה ומתברר שזה באג — המירו ל-Issue בלחיצה.

ניהול Discussions בפועל

Discussions הם כלי חזק, אבל בלי ניהול הם הופכים ל-"מזבלה" של שאלות ללא תשובה. כמה טיפים:

GitHub Sponsors — מימון מהקהילה

GitHub Sponsors מאפשר לאנשים לתמוך כספית ב-maintainers ובפרויקטים. אם אתם מתחזקים פרויקט קוד פתוח שאנשים משתמשים בו — זו דרך לגיטימית להרוויח ממנו.

איך מתחילים:

  1. לכו ל-github.com/sponsors ולחצו "Get sponsored"
  2. מלאו פרטי תשלום (Stripe — חשבון בנק או PayPal)
  3. הגדירו tiers — רמות תמיכה עם הטבות:
    • $5/חודש — "שם ב-README"
    • $25/חודש — "שם + logo ב-README"
    • $100/חודש — "priority issue handling"
  4. צרו קובץ .github/FUNDING.yml שמציג כפתור "Sponsor" בריפוזיטורי:
# .github/FUNDING.yml
github: [your-username]
# אפשר גם:
# open_collective: project-name
# patreon: your-patreon
# ko_fi: your-kofi
# custom: ["https://your-website.com/donate"]

שתי עובדות חשובות:

אלטרנטיבות ומשלימים ל-Sponsors

Sponsors הוא לא הדרך היחידה למימון קוד פתוח. הנה אופציות נוספות שאפשר לשלב:

מסגרת החלטה: מודל מימון לפרויקט OSS
סיטואציהמודל מומלץלמה
ספרייה קטנה, maintainer יחידGitHub Sponsorsהכי פשוט. לינק ב-README ו-FUNDING.yml ומתחילים.
פרויקט עם כמה maintainersOpen Collectiveשקיפות בהוצאות. כל maintainer מקבל חלק.
כלי שחברות Enterprise משתמשות בוDual licensing + paid supportחברות ישלמו על certainty משפטית ותמיכה.
פרויקט צדדי, לא ב-full timeSponsors + Ko-fiהודאה לתורמים, ללא commitment של support.

הכלל: התחילו עם GitHub Sponsors — זה אפס מאמץ. אם הפרויקט גדל ויש demand ל-support, הוסיפו שכבות. אל תסבכו את עצמכם עם 5 פלטפורמות מימון בהתחלה.

עשו עכשיו

הפעילו Discussions בריפוזיטורי שלכם (Settings → Features → Discussions → Enable). כתבו Discussion ראשון בקטגוריית Announcements שמברך את הקהילה ומסביר מה הפרויקט. הוסיפו קובץ .github/FUNDING.yml — גם אם עדיין לא הגדרתם Sponsors, זה מכין את התשתית.

10.8 בריאות הקהילה — OSSF Scorecard, Dependencies ו-Social Proof

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

Community Standards Dashboard

GitHub מספק dashboard שמראה כמה "בריא" הפרויקט שלכם מבחינה קהילתית. מצאו אותו ב: Repository → Insights → Community Standards.

הוא בודק האם יש לכם:

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

OSSF Scorecard — ציון אבטחה לפרויקט

ה-OpenSSF Scorecard (Open Source Security Foundation) הוא כלי אוטומטי שמדרג את האבטחה ואת הפרקטיקות של פרויקט קוד פתוח בסקאלה של 0-10. הוא בודק 18+ בדיקות (checks) כמו:

בדיקהמה בודקאיך לשפר
Branch-Protectionהאם branch protection / rulesets מוגדריםהפעילו rulesets מפרק 9
CI-Testsהאם יש CI שרץ על PRsActions workflow מפרק 1
Code-Reviewהאם PRs עוברים review לפני mergeדרשו review ב-rulesets
Dependencies-Pinnedהאם Actions pinned ל-SHAהשתמשו ב-SHA במקום tag
Dependency-Update-Toolהאם יש Dependabot / Renovatedependabot.yml מפרק 7
Licenseהאם יש רישיוןהוסיפו LICENSE מסעיף 10.3
Security-Policyהאם יש SECURITY.mdהוסיפו מסעיף 10.6
Token-Permissionsהאם GITHUB_TOKEN מוגבלהוסיפו permissions: ל-workflows
Vulnerabilitiesהאם יש פגיעויות פתוחותטפלו ב-Dependabot alerts

איך להריץ Scorecard:

# דרך GitHub Actions — הדרך המומלצת
# הוסיפו workflow שמריץ scorecard אוטומטית:
# .github/workflows/scorecard.yml
name: Scorecard
on:
  schedule:
    - cron: '0 6 * * 1'  # כל יום שני ב-6 בבוקר
  push:
    branches: [main]

permissions: read-all

jobs:
  analysis:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ossf/scorecard-action@v2
        with:
          results_file: results.sarif
          results_format: sarif
      - uses: actions/upload-artifact@v4
        with:
          name: scorecard-results
          path: results.sarif

בדיקה מהירה דרך CLI:

# התקנה
brew install scorecard  # macOS
# או
go install github.com/ossf/scorecard/v5/cmd/scorecard@latest

# הרצה
scorecard --repo=github.com/YOUR-USERNAME/YOUR-REPO

Dependency Management — ניהול תלויות

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

# .github/dependabot.yml — הגדרה מומלצת לפרויקט OSS
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 10
    labels:
      - "dependencies"
    commit-message:
      prefix: "deps:"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
    labels:
      - "ci"
    commit-message:
      prefix: "ci:"

Social Proof — אותות אמון

Stars, forks, contributors — כל אלה אותות שמשפיעים על ההחלטה של אנשים להשתמש בפרויקט. הנה איך לבנות אותם לאורך זמן:

Stars — המטבע של קוד פתוח:

Good First Issues — דלת כניסה לתורמים:

עוד אותות חשובים:

טעות נפוצה: לקנות או לזייף Stars

יש שירותים שמוכרים GitHub stars. אל תעשו את זה. GitHub מזהה star manipulation ויכול להסיר stars, להוריד את הריפו מ-Explore, ובמקרים קיצוניים — לסגור את החשבון. Stars צריכים לבוא מאנשים אמיתיים שבאמת מצאו את הפרויקט שימושי.

עשו עכשיו

לכו ל-Insights → Community Standards בריפוזיטורי שלכם. כמה "ירוקים" יש לכם? תקנו כל שורה אדומה — GitHub נותן לינקים ישירים. המטרה: 100% community health score.

10.9 לבנות פרויקט קוד פתוח משלך — מדריך מלא

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

הכנת פרויקט לקוד פתוח — שלושה שלבים שלב 1: תשתית LICENSE README.md CONTRIBUTING.md CODE_OF_CONDUCT.md SECURITY.md .gitignore שלב 2: אוטומציה CI workflow (Actions) Issue templates (YAML) PR template dependabot.yml Rulesets (branch protection) FUNDING.yml שלב 3: קהילה Enable Discussions Good First Issues (3+) First Release (v0.1.0) Share & promote Scorecard workflow Semantic Versioning השלימו כל שלב לפני שעוברים לבא — תשתית → אוטומציה → קהילה

Releases — ניהול גרסאות

כשפרויקט מוכן לשימוש, פרסמו release ראשון. Releases ב-GitHub מבוססים על Git tags:

# יצירת tag וגרסה
git tag -a v0.1.0 -m "First public release"
git push origin v0.1.0

# או דרך gh cli — יוצר גם tag וגם release
gh release create v0.1.0 --title "v0.1.0 - First Public Release" \
  --notes "## What's New
- Initial public release
- Core functionality: X, Y, Z
- Full documentation and examples

## Installation
\`\`\`
npm install my-package
\`\`\`"

Semantic Versioning (SemVer) — הסטנדרט לניהול גרסאות שכמעט כל פרויקט OSS עוקב אחריו:

חשוב: כל עוד הגרסה היא 0.x.y (לפני 1.0.0), אין התחייבות ליציבות — שינויים שוברים יכולים לקרות בכל עדכון MINOR. זו הסיבה שפרויקטים רבים נשארים ב-0.x לזמן ארוך — זה מאפשר גמישות. ברגע שעוברים ל-1.0.0, אתם מתחייבים ל-backwards compatibility.

אפשר גם להגדיר Actions workflow שיוצר release אוטומטית על כל tag push:

# .github/workflows/release.yml
name: Release
on:
  push:
    tags: ['v*']

permissions:
  contents: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: softprops/action-gh-release@v2
        with:
          generate_release_notes: true

generate_release_notes: true — GitHub מייצר changelogs אוטומטית מ-PR titles שבין ה-release הקודם לנוכחי. זה עובד מצוין אם ה-PR titles שלכם ברורים ומבוססים על Conventional Commits.

שימו לב: אפשר להגדיר .github/release.yml כדי לקסטם את ה-generated notes — לקבץ PRs לפי labels, להסתיר שינויי CI, ולהדגיש breaking changes:

# .github/release.yml
changelog:
  exclude:
    labels:
      - "ci"
      - "chore"
  categories:
    - title: "Breaking Changes"
      labels:
        - "breaking"
    - title: "New Features"
      labels:
        - "enhancement"
    - title: "Bug Fixes"
      labels:
        - "bug"
    - title: "Documentation"
      labels:
        - "documentation"
מסגרת החלטה: מתי לשחרר release חדש
סיטואציהסוג Releaseדוגמה
תיקון באג קריטיPATCH — מיידיv1.2.3 → v1.2.4
תכונה חדשה מוכנהMINOR — בסוף ספרינט/שבועv1.2.4 → v1.3.0
שינוי שובר (breaking)MAJOR — מתוכנן מראשv1.3.0 → v2.0.0
טיפול ב-security vulnerabilityPATCH — מיידי + advisoryv1.2.3 → v1.2.4-security
הצטברות של PRs קטניםMINOR — כל 2-4 שבועותbatch release

הכלל: אל תחכו יותר מדי. Releases תכופים יותר = עדכונים קטנים יותר = פחות breakage = יותר אמון מהקהילה.

Changelog — מה השתנה בכל גרסה

כל release צריך changelog — תיעוד של מה השתנה. שני דפוסים נפוצים:

דפוס 1: Auto-generated release notes — GitHub מייצר חזרה אוטומטית מ-PR titles (מה שראינו עם generate_release_notes: true). זה עובד טוב אם ה-PR titles שלכם ברורים ומובנים (Conventional Commits).

דפוס 2: CHANGELOG.md ידני — קובץ שנוהל ידנית (או עם כלי כמו standard-version או release-please). פורמט סטנדרטי:

# Changelog

## [2.1.0] - 2026-03-15
### Added
- Hebrew translation for error messages (#123)
- Support for custom themes (#125)

### Fixed
- Memory leak in connection pool (#130)
- Typo in installation docs (#128)

### Changed
- Minimum Node.js version is now 20 (was 18)

## [2.0.0] - 2026-02-01
### Breaking Changes
- Removed deprecated `init()` method — use `create()` instead
- Config format changed from YAML to JSON

כלי אוטומציה: release-please (GitHub Action) מייצר CHANGELOG אוטומטית מ-Conventional Commits ופותח PR עם release draft. זה אולי הכלי הטוב ביותר לניהול releases אוטומטי בפרויקטי OSS.

# .github/workflows/release-please.yml
name: Release Please
on:
  push:
    branches: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: googleapis/release-please-action@v4
        with:
          release-type: node

release-please מזהה commits מסוג feat: ו-fix:, מעדכן את ה-CHANGELOG, מעלה את הגרסה ב-package.json, ופותח PR שכשהוא מתמזג — יוצר release אוטומטית. פשוט עובד.

"Good First Issue" — איך למשוך תורמים חדשים

אחד הדברים שהכי משפיעים על בניית קהילת תורמים: תווית good first issue. GitHub מקדם issues עם התווית הזו ב-Explore ובחיפוש.

מה עושה good first issue טוב:

למה maintainers צריכים להשקיע ב-good first issues? כי זו הדרך העיקרית שפרויקטים מגדלים את מאגר התורמים. תורם שמתחיל מ-good first issue ומקבל חוויה חיובית — merge מהיר, feedback בונה, תודה — הופך לתורם חוזר. תורם חוזר הופך ל-maintainer. זו מערכת שנותנת בטווח הארוך הרבה יותר ממה שהיא עולה בטווח הקצר.

דוגמה טובה:

Title: Add Hebrew translation for error messages
Labels: good first issue, documentation, hacktoberfest

## Description
Our error messages are currently English-only. We want to add
Hebrew translations.

## What needs to happen
1. Open `src/messages/en.json`
2. Copy it to `src/messages/he.json`
3. Translate each message to Hebrew
4. Add Hebrew to the supported languages in `src/config.ts` (line 12)

## How to test
Run `npm test` — the new language should pass validation.

## Helpful context
- See the [translation guide](link) for style guidelines
- If unsure about a translation, leave a comment and we'll help
עשו עכשיו

צרו 3 issues בריפוזיטורי שלכם עם label good first issue. חשבו על דברים קטנים: תרגום, תיעוד חסר, test שחסר, refactoring קטן. כתבו כל issue לפי הפורמט שלמעלה — תיאור ברור, שלבים, איך לבדוק.

תרגיל 1: הכנת ריפוזיטורי מלא לקוד פתוח

מטרה: להפוך ריפוזיטורי קיים (או חדש) לפרויקט קוד פתוח מוכן לקבלת תרומות.

שלב 1: צרו ריפוזיטורי חדש (או השתמשו בקיים):

gh repo create my-oss-project --public --description "My first OSS project" --clone
cd my-oss-project

שלב 2: הוסיפו את כל קבצי התשתית:

  1. LICENSE — MIT (דרך GitHub UI או מ-choosealicense.com)
  2. README.md — לפי המבנה מסעיף 10.5
  3. CONTRIBUTING.md — לפי הדוגמה מסעיף 10.6
  4. CODE_OF_CONDUCT.md — Contributor Covenant (דרך GitHub UI)
  5. SECURITY.md — לפי הדוגמה מסעיף 10.6
  6. .github/ISSUE_TEMPLATE/bug_report.yml
  7. .github/ISSUE_TEMPLATE/feature_request.yml
  8. .github/PULL_REQUEST_TEMPLATE.md
  9. .github/dependabot.yml
  10. .github/FUNDING.yml

שלב 3: הגדירו CI workflow ו-rulesets:

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
permissions:
  contents: read
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: 'npm'
      - run: npm ci
      - run: npm test

שלב 4: הפעילו Discussions, צרו release v0.1.0, ובדקו Community Standards ב-Insights.

תוצאה צפויה: Community Standards 100%, CI ירוק, release אחד, Discussions מופעל.

תרגיל 2: תרומה ראשונה לפרויקט אמיתי

מטרה: לעבור את תהליך התרומה המלא — fork, branch, commit, PR.

שלב 1: Fork את first-contributions:

gh repo fork firstcontributions/first-contributions --clone
cd first-contributions

שלב 2: צרו branch:

git checkout -b add-YOUR-NAME

שלב 3: הוסיפו את השם שלכם ל-Contributors.md:

# הוסיפו שורה עם השם שלכם (בסדר אלפביתי)
echo "- [Your Name](https://github.com/YOUR-USERNAME)" >> Contributors.md

שלב 4: Commit, push, ו-PR:

git add Contributors.md
git commit -m "feat: add YOUR-NAME to contributors list"
git push origin add-YOUR-NAME
gh pr create --title "Add YOUR-NAME to contributors" --body "My first contribution!"

תוצאה צפויה: PR פתוח בפרויקט first-contributions. תוך שעות עד ימים — merge.

תרגיל 3: README Profile אישי

מטרה: ליצור פרופיל GitHub מקצועי שמשדר יכולת.

שלב 1: צרו ריפו עם שם ה-username שלכם:

gh repo create YOUR-USERNAME --public --description "My GitHub Profile" --clone
cd YOUR-USERNAME

שלב 2: צרו README.md מרשים:

  1. Header — שם, תפקיד, משפט על מה מעניין אתכם
  2. Tech Stack — badges מ-shields.io (לפחות 5 טכנולוגיות)
  3. Featured Projects — 2-3 פרויקטים מובילים עם תיאור קצר
  4. GitHub Stats — השתמשו ב-github-readme-stats
  5. Contact — דרכי יצירת קשר (LinkedIn, אימייל, Twitter)

שלב 3: Pin 6 ריפוזיטורים שמייצגים את היכולות שלכם.

תוצאה צפויה: כניסה ל-github.com/YOUR-USERNAME מציגה פרופיל מקצועי עם badges, stats ופרויקטים.

תרגיל 4: הרצת OSSF Scorecard ושיפור הציון

מטרה: למדוד את בריאות הפרויקט ולשפר את הציון.

שלב 1: הוסיפו Scorecard workflow לריפוזיטורי מתרגיל 1:

# .github/workflows/scorecard.yml
name: Scorecard
on:
  schedule:
    - cron: '0 6 * * 1'
  push:
    branches: [main]
permissions: read-all
jobs:
  analysis:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ossf/scorecard-action@v2
        with:
          results_file: results.sarif
          results_format: sarif
      - uses: actions/upload-artifact@v4
        with:
          name: scorecard-results
          path: results.sarif

שלב 2: הריצו ובדקו את ה-artifact. לכל בדיקה עם ציון נמוך, תקנו:

שלב 3: הריצו שוב ובדקו שהציון השתפר.

תוצאה צפויה: ציון Scorecard מעל 7/10, עם שיפור מוכח בין ההרצה הראשונה לשנייה.

10.10 סיכום ומבט קדימה

סיכום הפרק
  • קוד פתוח הוא תשתית התעשייה. תרומה ויצירת פרויקטים OSS בונה קריירה, מיומנות והשפעה.
  • תהליך תרומה: מצאו פרויקט ← Fork ← Branch ← Code ← PR ← Review ← Merge. התחילו מ-good first issue.
  • רישיונות: MIT = חופשי ביותר, Apache 2.0 = הגנת פטנטים, GPL = copyleft. בלי LICENSE = all rights reserved.
  • README Profile — ריפו עם שם ה-username שלכם מציג README בעמוד הפרופיל. Badges, stats, pinned repos.
  • README לפרויקט — חייב לענות על 5 שאלות: מה, למה, איך מתקינים, איך משתמשים, האם maintained.
  • קבצי קהילה: CONTRIBUTING.md, Code of Conduct, Issue Templates, PR Template, SECURITY.md — כל אחד פותר בעיה ספציפית.
  • Discussions — פורום מובנה. Issues = עבודה, Discussions = שיחה. אפשר להמיר ביניהם.
  • Sponsors — מימון מהקהילה. GitHub לא גובה עמלה. tiers עם הטבות.
  • OSSF Scorecard — ציון 0-10 לבריאות ואבטחה. 18+ בדיקות. רוב ההמלצות מיושמות עם כלים שלמדתם בקורס.
  • Releases — Semantic Versioning (MAJOR.MINOR.PATCH). Actions workflow שיוצר release אוטומטית על tag push.
אם אתם זוכרים רק דבר אחד

הוסיפו LICENSE לכל ריפוזיטורי ציבורי. בלעדיו, הקוד שלכם לא באמת "פתוח" — הוא גלוי אבל אסור לשימוש. MIT הוא 20 שורות שהופכות קוד מ-"אסור לגעת" ל-"חופשי לכולם". זה השינוי עם ההשפעה הגדולה ביותר ביחס למאמץ.

בדקו את עצמכם
  1. מה ההבדל בין MIT ל-GPL מבחינת copyleft? (רמז: מה קורה לקוד נגזר?)
  2. למה ריפוזיטורי ציבורי בלי LICENSE הוא לא באמת קוד פתוח? (רמז: חשבו על ברירת מחדל של copyright)
  3. מה ההבדל בין Issues ל-Discussions? מתי תשתמשו בכל אחד? (רמז: עבודה vs שיחה)
  4. מה Scorecard בודק ב-"Token-Permissions"? (רמז: GITHUB_TOKEN ב-workflows)
  5. למה כדאי להתחיל מתרומה קטנה ולא מ-PR גדול? (רמז: חשבו על trust building)
שגרת עבודה מומלצת
  • יומית: בדקו notifications של הפרויקטים שלכם — issues חדשים, PRs שמחכים ל-review, discussions. הגיבו תוך 24 שעות גם אם עוד לא פתרתם — "Thanks, I'll look into it" עדיף על שתיקה. אם אתם תורמים לפרויקט אחר — בדקו אם ה-PR שלכם קיבל review.
  • שבועית: סקרו Dependabot PRs ומרג'ו את אלה שעוברים CI. בדקו אם יש issues חדשים שאפשר לסמן כ-good first issue. עדכנו README אם משהו השתנה. בדקו Community Standards — האם משהו חסר?
  • חודשית: הריצו OSSF Scorecard ובדקו שהציון לא ירד. שקלו release חדש אם יש PRs שהצטברו. בדקו אם יש contributors חדשים שכדאי להודות להם ב-README. סקרו את ה-Insights — traffic, clones, stars. אם הפרויקט גדל — שקלו להוסיף maintainers.
צ'קליסט — מה עשינו בפרק הזה
  • ☐ הבנתי למה קוד פתוח חשוב ומה הוא נותן לי מקצועית
  • ☐ מכיר/ה את תהליך התרומה: fork → branch → commit → PR → review
  • ☐ יודע/ת להבדיל בין MIT, Apache 2.0 ו-GPL ולבחור רישיון מתאים
  • ☐ מבין/ה למה ריפו ציבורי בלי LICENSE הוא לא באמת קוד פתוח
  • ☐ יצרתי README Profile אישי עם badges ו-stats
  • ☐ כתבתי README מקצועי לפרויקט שעונה על 5 השאלות
  • ☐ הוספתי CONTRIBUTING.md עם כללי תרומה ברורים
  • ☐ הוספתי Code of Conduct (Contributor Covenant)
  • ☐ הגדרתי Issue Templates (bug report + feature request)
  • ☐ הגדרתי PR Template
  • ☐ הפעלתי Discussions ויצרתי discussion ראשון
  • ☐ הגדרתי FUNDING.yml
  • ☐ הרצתי OSSF Scorecard ושיפרתי ציון
  • ☐ הגדרתי dependabot.yml לעדכון תלויות אוטומטי
  • ☐ יצרתי release ראשון עם Semantic Versioning

מבט קדימה

בפרק הבא והאחרון: נמפה את כל מה שחינמי ומה שבתשלום ב-GitHub. תלמדו לחשב עלויות של Actions, Codespaces, Packages ו-LFS, להשוות בין Pro, Team ו-Enterprise, ולבנות אסטרטגיית שימוש שממקסמת את ה-free tier. כל מה שלמדתם ב-10 פרקים — תדעו בדיוק כמה זה עולה ומה שווה לשדרג.

הנה מה שכבר יש לכם:

בפרק 11 נחבר את כל החלקים למפה אחת שלמה. →