Jak przygotować repozytorium pod kontrybutorów: README, CONTRIBUTING i szablony zgłoszeń

0
168
2.7/5 - (6 votes)

Nawigacja:

Dlaczego warto przygotować repozytorium pod kontrybutorów

Projekt prywatny vs projekt społecznościowy

Repozytorium można traktować jak notes z własnymi eksperymentami albo jak produkt, z którego korzystają inni. W pierwszym przypadku wystarczy kilka commitów i ogólny opis. W drugim – brak struktury natychmiast zemści się na czasie i nerwach wszystkich zaangażowanych.

Projekt społecznościowy to taki, do którego potencjalnie może dorzucić się każdy: kodem, tłumaczeniami, dokumentacją czy feedbackiem. Osoby z zewnątrz nie znają historii decyzji, nie wiedzą, gdzie leży „prawda” o projekcie, jakie są standardy, ani jak „tu się rzeczy robi”. Dlatego repozytorium musi im to jasno pokazać.

Różnica w praktyce jest prosta:

  • „Mój projekt na GitHubie” – ja wiem, jak to uruchomić, ja wiem, co jest ważne, zgłoszenia prawie nie przychodzą.
  • Projekt społecznościowy – dokumentacja prowadzi za rękę, kontrybutorzy potrafią sami rozwiązać większość wątpliwości, a maintainer nie jest wąskim gardłem.

Bez tej mentalnej zmiany każdy nowy kontrybutor będzie zadawał te same pytania, a Ty będziesz je w kółko odpisywać zamiast rozwijać projekt.

Co się dzieje, gdy brakuje jasnych zasad

Brak README, CONTRIBUTING i szablonów zgłoszeń nie oznacza „mniej biurokracji”. Oznacza chaos w komunikacji. Typowe skutki są bardzo przewidywalne:

  • Duplikaty issue – po kilku miesiącach masz kilka zgłoszeń tego samego błędu, każde opisane inaczej, bez wspólnego numeru referencyjnego.
  • Konflikty i nieporozumienia – ktoś przygotował duży Pull Request, który nie pasuje do wizji projektu, bo nigdzie nie opisałeś roadmapy ani zakresu.
  • Porzucone PR-y – autor nie wie, co poprawić, recenzja ciągnie się tygodniami, nikt nie czuje się odpowiedzialny.
  • Poczucie niesprawiedliwości – jedna osoba dostała szczegółowy code review, inna lakoniczne „nie przejdzie”, bez wyjaśnienia.

Brak zasad nie oznacza braku reguł – oznacza, że reguły powstają ad hoc, w głowach maintainerów, często niespójnie. Dokumenty repozytorium po prostu je ujawniają i porządkują, zanim dojdzie do pierwszego konfliktu.

Koszt kontrybucji dla nowych i dla maintainerów

Każda kontrybucja ma swój koszt. Z perspektywy nowej osoby:

  • musi zrozumieć, czym jest projekt i czy w ogóle potrzebuje jej wkładu,
  • musi uruchomić środowisko, przebrnąć przez zależności,
  • musi dowiedzieć się, jak wysłać zmianę tak, żeby nie przeszkadzać.

Z perspektywy maintainerów koszt jest jeszcze większy, jeśli repo nie jest przygotowane:

  • ciągłe odpowiadanie na te same pytania („jak odpalić testy?”, „jaką wersję Node używacie?”),
  • gaszenie pożarów – błędy wprowadzane przez osoby, które nie znały procesu,
  • emocjonalne zmęczenie ciągłym odrzucaniem PR-ów, które od początku nie miały szans przejść.

Dobre README, CONTRIBUTING i szablony issue/PR drastycznie obniżają ten koszt. Nowy kontrybutor może przejść onboarding samodzielnie. Maintainer wchodzi w proces dopiero wtedy, gdy wkład ma sens i jest dobrze przygotowany.

Wpływ dobrego przygotowania repozytorium na tempo rozwoju

Uporządkowane repozytorium działa jak filtr i akcelerator. Filtr – bo zniechęca osoby, które chciałyby „wrzucić byle co”, ale nie chce im się przejść przez minimum formalności. Akcelerator – bo pomaga tym, którzy na serio chcą pomóc, szybko dotrzeć do jakościowego wkładu.

Praktyczne efekty:

  • Lepsza jakość zgłoszeń – jedno dopracowane issue zamiast pięciu ogólnikowych.
  • Szybsze review – PR ma opis, checklistę, informację o testach, więc recenzent nie spędza połowy czasu na dopytywaniu.
  • Mniej błędów po wdrożeniu – jasne wymagania (testy, lint, styl commitów) redukują „przepchane” zmiany.

Repozytorium przyjazne społeczności staje się atrakcyjne dla kontrybutorów. Nowi chętniej wracają, bo wiedzą, czego się spodziewać. To przekłada się na stabilny, przewidywalny rozwój, zamiast jednorazowych „zrywów” i długich okresów stagnacji.

Minimalny zestaw plików dla projektu społecznościowego

Kluczowe pliki i ich rola

W większości projektów społecznościowych przewijają się te same podstawowe pliki. Każdy ma konkretne zadanie:

  • README.md – pierwszy kontakt z projektem, mapa i „landing page” repozytorium.
  • CONTRIBUTING.md – instrukcja, jak w praktyce kontrybuować (kod, dokumentacja, zgłoszenia).
  • CODE_OF_CONDUCT.md – kodeks postępowania, zasady komunikacji i konsekwencje naruszeń.
  • LICENSE – licencja, która jasno mówi, co wolno robić z kodem.
  • SECURITY.md – sposób zgłaszania luk bezpieczeństwa (tajny kanał zamiast publicznego issue).
  • FUNDING.yml / FUNDING.md – informacje o wsparciu finansowym projektu (GitHub Sponsors, Open Collective itd.).

Ten zestaw nie jest „dla dużych graczy”. Nawet małe narzędzie CLI używane przez kilka osób z zewnątrz zyskuje na takim porządku. Użytkownik wie, gdzie szukać odpowiedzi na konkretne typy pytań.

Gdzie umieścić pliki i jak są wyświetlane

Najważniejsze pliki zawsze leżą w katalogu głównym repozytorium (root):

  • README.md – GitHub/GitLab pokazuje go automatycznie na stronie głównej repo.
  • CONTRIBUTING.md – GitHub linkuje go przy tworzeniu issue/PR („Please read the contribution guidelines”).
  • CODE_OF_CONDUCT.md, LICENSE – często rozpoznawane przez platformę i prezentowane w interfejsie.
  • SECURITY.md – GitHub ma dedykowaną sekcję „Security” z odnośnikiem do tego pliku.

Szablony zgłoszeń i dodatkowe konfiguracje zwykle trafiają do katalogów takich jak .github/ (GitHub) czy .gitlab/ (GitLab). O tym szerzej w osobnej sekcji, ale ogólny schemat jest prosty: główne zasady na wierzchu, szablony w katalogu konfiguracyjnym.

Absolutne minimum vs elementy do dodania później

Dla całkiem małego projektu, który dopiero otwiera się na świat, da się wskazać absolutne minimum:

  • README.md z opisem, szybkim startem i informacją, jak zgłaszać błędy.
  • LICENSE – bez licencji wiele osób w ogóle nie zechce kontrybuować.
  • Prosty CONTRIBUTING.md z 1–2 stronami konkretnych instrukcji.

Pozostałe pliki można dodać stopniowo, gdy rośnie liczba użytkowników i zgłoszeń:

  • CODE_OF_CONDUCT – warto dodać, gdy pojawiają się pierwsze interakcje w issues/PR-ach.
  • SECURITY.md – gdy projekt jest używany w środowiskach produkcyjnych lub dotyka bezpieczeństwa.
  • FUNDING – gdy ktoś pyta, jak może wesprzeć projekt.

Strategia „najpierw porządne core pliki, potem dodatki” pomaga nie ugrzęznąć w dopieszczaniu dokumentacji przy projekcie, który jeszcze nie ma użytkowników.

Mały projekt a większa organizacja – inne podejście

W jednoosobowym repozytorium możesz sobie pozwolić na bardziej osobisty ton, prostsze procesy i mniejszą formalizację. W większej organizacji lub przy wielu maintainerach spójność i standaryzacja stają się ważniejsze.

Dla małego projektu:

  • krótszy CONTRIBUTING, bardziej elastyczne zasady,
  • mniej formalne opisy („Napisz do mnie na…”, „Zobaczymy, czy to pasuje do roadmapy”).

Dla większej organizacji:

  • szablony współdzielone w repozytorium organizacji,
  • jasne role (maintainer, reviewer, triager),
  • formalny kodeks postępowania i procedury eskalacji.

W obu przypadkach kluczowe jest jedno: zapisz realne praktyki. Nie twórz dokumentów na pokaz. Jeżeli w projekcie naprawdę wymagasz review dwóch maintainerów – wpisz to. Jeśli nie – nie udawaj, że tak jest.

Kobieta pracująca przy laptopie z naklejkami w nowoczesnym biurze
Źródło: Pexels | Autor: Christina Morillo

README jako mapa projektu – kluczowe elementy

Krótki, konkretny opis celu projektu

Dobry README zaczyna się od odpowiedzi na trzy pytania: co to jest, po co to jest i dla kogo. Najlepiej zamknąć to w jednym–dwóch akapitach, bez marketingowego nadęcia.

Przykład prostego wstępu:

„Narzędzie CLI do zarządzania konfiguracją wielu środowisk Node.js w jednym repozytorium. Ułatwia przełączanie się między konfiguracjami dev/stage/prod i generuje pliki .env na podstawie szablonów.”

Taki opis pozwala nowej osobie szybko ocenić, czy projekt jej dotyczy. Unika się sytuacji, w której ktoś czyta kilkanaście akapitów, zanim zrozumie, że to w ogóle nie jest narzędzie dla niego.

Sekcja „Szybki start” – od zera do działającego przykładu

Najbardziej praktyczny element README to „Quick start” (albo „Szybki start”). Dobrze przygotowana sekcja odpowiada na pytanie: „Co muszę wklepać w terminal, aby to w ogóle ruszyło?”.

Typowy schemat:

  • wymagania wstępne (np. „wymagany Python >=3.10, pip, Git”),
  • komendy instalacji (np. git clone, npm install, pip install),
  • komenda uruchomienia (np. npm start, docker compose up),
  • najprostszy przykład użycia (request, komenda, wywołanie biblioteki).

Dobrze, gdy „Szybki start” jest możliwie krótki, bez zbędnych opcji i zastrzeżeń. Zaawansowane scenariusze można opisać w osobnej dokumentacji, a w README zostawić tylko ścieżkę „happy path”.

Informacja dla kogo jest projekt i jakie ma ograniczenia

README często milczy na temat ograniczeń, przez co rodzi się sporo nieporozumień. Warto jasno napisać:

  • dla jakiego typu użytkowników/projektów to rozwiązanie jest sensowne,
  • czego nie wspiera (np. „brak wsparcia dla Windows”, „obsługujemy wyłącznie PostgreSQL”).

Taka sekcja może się nazywać np. „Zakres i ograniczenia” albo „Dla kogo to jest / dla kogo nie jest”. Pozwala to uniknąć issue typu „dlaczego to nie działa na Windows 7?” przy projekcie, który od początku nie planował takiego wsparcia.

Linki do dalszych materiałów i zasad współpracy

README powinien działać jak rozdzielacz. Po wstępnym zapoznaniu użytkownik powinien mieć jasne ścieżki:

  • „Chcę używać” – link do pełnej dokumentacji / wiki.
  • „Chcę zgłosić błąd” – link do zasad zgłaszania issue i ewentualnie SECURITY.md.
  • „Chcę kontrybuować” – link do CONTRIBUTING.md.
  • „Chcę wesprzeć” – link do sekcji wsparcia / FUNDING.

Zamiast wrzucać wszystko do jednego dokumentu, lepiej podzielić informacje na wyspecjalizowane pliki i w README podlinkować je w sekcji „Dalsze kroki” lub „Przydatne linki”.

Odznaki w README – jak używać ich z głową

Odznaki (badges) potrafią uprościć życie: pokazują status builda, pokrycie testami, wersję na npm/PyPI, licencję itd. Problem zaczyna się, gdy README zamienia się w ścianę kolorowych etykietek zajmujących pół ekranu.

Rozsądne zasady:

  • umieszczaj odznaki na samej górze, ale ogranicz ich liczbę do kilku kluczowych,
  • stawiaj na informację praktyczną: build status, licencja, ostatnie wydanie,
  • odrzucaj „ego badges” typu „made with ❤️” – to przeszkadza w skanowaniu treści.

Odznaki są szczególnie przydatne dla kontrybutorów – status CI mówi im, czy repo jest w dobrym stanie, a wersja języka/platformy pozwala ocenić, czy ich środowisko lokalne będzie kompatybilne.

Jak napisać CONTRIBUTING, który prowadzi za rękę

Po co osobny plik CONTRIBUTING, skoro jest README

Różne poziomy szczegółowości dla różnych typów kontrybucji

Jedna z pułapek CONTRIBUTING.md to wrzucenie wszystkiego do jednego, długiego dokumentu. Lepsze podejście to podział na ścieżki, które odpowiadają realnym typom wkładu:

  • „Jak zgłosić błąd” – dla osób, które nie zamierzają pisać kodu.
  • „Jak dodać lub poprawić funkcję” – dla programistów.
  • „Jak poprawić dokumentację” – dla osób nietechnicznych.
  • „Jak pomóc w triage” – dla bardziej zaangażowanych.

Można to zorganizować jako krótką tabelkę lub wypunktowaną listę na początku CONTRIBUTING, gdzie każdy punkt linkuje do osobnej sekcji lub nawet osobnego pliku w katalogu docs/ czy .github/. Kontrybutor nie musi czytać całego „regulaminu”, tylko przechodzi do fragmentu, który go dotyczy.

Minimalna struktura CONTRIBUTING.md

Dokument może być prosty, ale powinien mieć kilka stałych bloków. Przykładowa struktura, która sprawdza się w większości projektów:

  1. Jak zgłaszać błędy i propozycje funkcji
  2. Jak przygotować środowisko developerskie
  3. Jak pisać i uruchamiać testy
  4. Styl kodu i konwencje commitów
  5. Workflow Pull Requestów
  6. Kontakt i kanały komunikacji

Jeżeli projekt rośnie, te sekcje można wydzielić do osobnych plików (np. docs/testing.md, docs/dev-setup.md), a w CONTRIBUTING zostawić krótkie streszczenia z linkami. Dzięki temu dokument pozostaje czytelny, a osoby szukające szczegółów mają gdzie kliknąć.

Instrukcja zgłaszania błędów i pomysłów – krok po kroku

Większość osób zaczyna od zgłoszenia bugów lub pomysłów. Dobrze opisany proces potrafi radykalnie obniżyć hałas w issue trackerze. Przydatna jest prosta sekwencja kroków:

  • link do wyszukiwarki issue z zachętą, by najpierw sprawdzić duplikaty,
  • podlinkowanie szablonu (o nich dalej) z krótkim komentarzem „wypełnij możliwie dokładnie”,
  • prośba o minimalny przykład reprodukcji + konkretne środowisko (system, wersje bibliotek),
  • wskazanie, jak oznaczać typ zgłoszenia (np. etykiety „bug”, „feature request” są ustawiane przez maintainerów, więc nie trzeba się tym przejmować).

Na końcu tej sekcji można dodać jedno zdanie, które ustawia oczekiwania czasowe, np.: „Zwykle odpowiadamy w ciągu 7 dni, ale projekt jest rozwijany po godzinach – prosimy o cierpliwość.”. To oszczędza zniecierpliwionych komentarzy po 24 godzinach ciszy.

Setup środowiska developerskiego bez domysłów

Druga krytyczna część CONTRIBUTING to instrukcja „zbuduj i odpal projekt lokalnie”. Im mniej zgadywania, tym mniejsza bariera wejścia. Pomocny schemat:

  • lista wspieranych wersji języka / runtime (np. „Node 20 LTS, Yarn 4”),
  • kroki instalacji zależności systemowych (bazy danych, narzędzia CLI),
  • komendy do uruchomienia projektu w trybie developerskim,
  • wzmianka o typowych problemach (np. „jeśli na macOS pojawi się błąd X, zainstaluj Y”).

Dla bardziej skomplikowanych projektów dobrym rozwiązaniem jest plik Makefile albo skrypt ./scripts/dev.sh z jedną komendą make dev czy ./scripts/dev.sh. W CONTRIBUTING wystarczy wtedy prosty fragment:

git clone https://github.com/org/projekt.git
cd projekt
make dev

Kontrybutor nie musi wiedzieć, jakie dokładnie komendy są uruchamiane, dopóki środowisko startuje poprawnie.

Testy: jakie, jak je uruchomić i czy są obowiązkowe

Wielu nowych kontrybutorów nie ma pewności, czy powinni dopisywać testy. Brak jasnego komunikatu kończy się PR-ami bez pokrycia lub dyskusjami w komentarzach. Klarowna sekcja „Testy” rozwiązuje sprawę:

  • jedna komenda do uruchomienia wszystkich testów,
  • instrukcja, gdzie dodać nowe testy (np. katalog, konwencja nazewnicza),
  • informacja, czy testy są wymagane dla każdego PR-a, czy tylko dla zmian w określonych częściach kodu,
  • link do dodatkowej dokumentacji testów, jeśli taka istnieje.

Przykładowy, konkretny zapis:

  • „Zmiany w katalogach src/ i api/ wymagają testów jednostkowych. Zmiany w dokumentacji nie wymagają testów.”
  • „Uruchom npm test przed wysłaniem PR. CI zablokuje merge, jeśli testy nie przejdą.”

Taki fragment ustawia standard, ale nie odstrasza – każdy wie, czego się spodziewać.

Styl kodu i commitów – mniej dyskusji, więcej automatyzacji

Spory o styl kodu są najgorszym możliwym sposobem spędzania czasu maintainerów. Dużo lepiej zainwestować w prosty zestaw zasad i narzędzia, które je egzekwują:

  • link do plików konfiguracyjnych (np. .editorconfig, .eslintrc, pyproject.toml),
  • komenda „lint” (np. npm run lint, ruff check .),
  • informacja, czy lint musi przejść lokalnie przed wysłaniem PR-a,
  • krótki przykład poprawnego komunikatu commita (np. konwencja Conventional Commits).

Przykład z życia: w jednym z projektów wprowadzenie hooków pre-commit oraz sekcji w CONTRIBUTING:

pip install pre-commit
pre-commit install

zredukowało liczbę „kosmetycznych” komentarzy w review o kilkadziesiąt procent. Lint i formatowanie załatwiał automat, a dyskusje toczyły się wokół logiki.

Workflow PR-ów opisany jak scenariusz

Nowe osoby często nie wiedzą, jak „poprawnie” wchodzić w istniejący proces. Przydaje się opis etapów PR-a:

  1. Załóż issue lub podłącz się do istniejącego (jeśli wymagane).
  2. Utwórz gałąź z main / develop według konwencji nazewniczej.
  3. Wprowadź zmiany, dodaj testy, uruchom linters/testy lokalnie.
  4. Wyślij PR z wypełnionym szablonem i linkiem do powiązanego issue.
  5. Odpowiadaj na komentarze review, aktualizuj PR commitami.
  6. Maintainer scala PR po spełnieniu kryteriów.

Warto też dodać sekcję „Zakres PR-a”, np.: „Jedno logiczne usprawnienie na PR. Nie mieszaj refactoringu i nowych funkcji.”. Taki zapis bardzo ułatwia życie osobom robiącym review.

Przykładowy szkielet CONTRIBUTING.md

Krótkie szkielety pomagają szybciej wystartować. Minimalny przykład:

# Zasady kontrybucji

## Zgłaszanie błędów i pomysłów
- Sprawdź istniejące zgłoszenia: <link>
- Użyj odpowiedniego szablonu issue
- Dodaj kroki reprodukcji i wersję środowiska

## Środowisko developerskie
- Wymagany: Node 20, Docker
- Instalacja: `npm install`
- Start: `npm run dev`

## Testy
- Uruchom: `npm test`
- Nowe funkcje wymagają testów jednostkowych

## Styl kodu i commity
- Formatowanie: `npm run lint` i `npm run format`
- Stosujemy Conventional Commits, np. `feat:`, `fix:`, `docs:`

## Pull Requesty
- Jedna funkcja / fix na PR
- Wypełnij szablon PR
- Podlinkuj powiązane issue

Taki dokument można potem rozszerzać, ale już w tej formie bardzo pomaga nowym osobom.

Zbliżenie kolorowego kodu programistycznego na ekranie monitora
Źródło: Pexels | Autor: Myburgh Roux

Kodeks postępowania i zasady komunikacji

Dlaczego sam „dobry charakter” maintainerów nie wystarczy

W małym, nieformalnym projekcie wszystko działa, dopóki uczestnicy się znają. Gdy dołączają nieznane osoby z internetu, „domyślne” normy przestają być czytelne. Kodeks postępowania (Code of Conduct) ustawia oczekiwania i daje ramy reagowania na problemy.

Chodzi zarówno o duże naruszenia (obraźliwe komentarze), jak i codzienną kulturę współpracy: jak prosić o zmiany, jak reagować na feedback, co jest akceptowalne w dyskusji technicznej. Zapisanie tego na piśmie zmniejsza ryzyko konfliktów i ułatwia interwencję, gdy coś wymknie się spod kontroli.

Gotowe szablony kodeksu postępowania

Nie ma sensu wymyślać wszystkiego od zera. Kilka sprawdzonych opcji:

  • Contributor Covenant – najpopularniejszy, wspierany przez GitHub jako domyślna opcja.
  • Citizen Code of Conduct – nieco inne akcenty, często używany na wydarzeniach.
  • Własny, uproszczony CoC – dla małych projektów, oparty na 2–3 podstawowych zasadach.

Dobrą praktyką jest użycie Contributor Covenant w wersji zlokalizowanej (jeśli kontrybutorzy posługują się głównie polskim) i lekkie dopasowanie, np. danych kontaktowych do zgłaszania naruszeń.

Elementy, które kodeks powinien zawierać

Niezależnie od wybranego szablonu, przydaje się kilka konkretnych bloków:

  • opis akceptowalnego zachowania (uprzejma komunikacja, konstruktywny feedback),
  • przykłady zachowań nieakceptowalnych (atak personalny, seksistowskie komentarze, „nawalanie” caps lockiem),
  • opis ról – kto może reagować (maintainerzy, moderatorzy),
  • procedura zgłaszania naruszeń (adres e-mail, formularz, prywatne wiadomości),
  • potencjalne konsekwencje (ostrzeżenie, zablokowanie konta, zgłoszenie do platformy).

Najważniejszy jest realistyczny, wykonalny mechanizm egzekwowania. Jeżeli utrzymujesz projekt po godzinach i nie masz czasu na formalne dochodzenia, wpisz to wprost i uprość procedurę – lepiej obiecać mniej, niż deklarować skomplikowany proces, którego nikt później nie zrealizuje.

Gdzie umieścić CoC i jak do niego odwoływać się w praktyce

Standard to plik CODE_OF_CONDUCT.md w katalogu głównym repo. GitHub automatycznie wykryje ten dokument i podlinkuje go w interfejsie. Dodatkowo można:

  • podlinkować CoC w README w sekcji „Zasady współpracy”,
  • wspomnieć o nim w CONTRIBUTING („Uczestnicząc w projekcie, akceptujesz nasz Kodeks postępowania.”),
  • zamieścić skróconą wersję kluczowych zasad w szablonach issue/PR.

W praktyce wiele konfliktów rozwiązuje jedno spokojne odwołanie do zapisanej zasady, np.: „W naszym CoC prosimy o unikanie personalnych uwag. Skupmy się na kodzie, a nie na osobach.”.

Ustalony ton komunikacji – asynchronicznie i rzeczowo

Oprócz CoC przydają się spisane zasady komunikacji, zwłaszcza gdy projekt korzysta z kilku kanałów: GitHub Issues, Slack, Discord, e-mail. Kilka prostych reguł potrafi znacząco poprawić komfort pracy:

  • preferowany kanał do konkretnych spraw (bugi → issues, pytania ogólne → GitHub Discussions / forum),
  • zasada „no @here / @everyone” bez wyraźnej potrzeby,
  • dopuszczalne języki (np. angielski jako domyślny przy międzynarodowej społeczności),
  • oczekiwany czas reakcji (np. „dias, nie godziny”).

Te reguły można opisać w osobnej sekcji CONTRIBUTING lub w pliku COMMUNICATION.md i podlinkować. Im mniej domysłów, tym mniej rozczarowań po obu stronach.

Jak reagować na trudne sytuacje z kontrybutorami

Konflikty się zdarzają: ktoś nie przyjmuje feedbacku, powtarza to samo pytanie w kilku kanałach, publikuje pasywno-agresywne komentarze. Dobrze mieć przygotowany, spójny sposób reagowania:

  1. Jednokrotne, spokojne wyjaśnienie zasady i prośba o zmianę zachowania.
  2. Jeśli problem wraca – powołanie się na konkretny punkt CoC i zapowiedź konsekwencji.
  3. Ostatecznie – zablokowanie użytkownika i krótkie, rzeczowe uzasadnienie.

W CoC można wprost napisać, że maintainerzy mają prawo priorytetyzować własne bezpieczeństwo i komfort, wobec czego nie muszą angażować się w niekończące się dyskusje z jedną osobą. Dla większości osób sam fakt, że zasady są spisane, działa prewencyjnie.

Szablony issue – porządek w zgłoszeniach

Po co szablony, skoro można napisać „opisz problem”

Jak dobre szablony zmieniają jakość zgłoszeń

Luźne pole tekstowe zachęca do luźnych zgłoszeń. Efekt: „nie działa”, „naprawcie to” albo zrzut ekranu bez kontekstu. Szablon issue wymusza minimalną strukturę i prowadzi osobę zgłaszającą krok po kroku. Mniej czasu tracisz na dopytywanie, szybciej klasyfikujesz zgłoszenia.

Dobry szablon:

  • zadaje konkretne pytania (co się stało, gdzie, w jakiej wersji),
  • oddziela bugi od propozycji funkcji,
  • podsuwa gotowe sekcje typu „Kroki reprodukcji”, „Oczekiwane zachowanie”,
  • przypomina o sprawdzeniu duplikatów i dokumentacji.

Po wdrożeniu szablonów w wielu projektach kończą się serie komentarzy „jaka wersja?”, „jaki system?”, „masz logi?”. To wszystko jest w pierwszej wiadomości.

Typy szablonów issue – nie jeden, tylko kilka

Jeden szablon do wszystkiego szybko się rozpada. Inne informacje są potrz