Příspěvky do projektu
Vítejte s chybami, nápady, překlady, dokumentací i kódem. Tato stránka vysvětluje, kde se bavit, jak odeslat změnu, jaké konvence kód dodržuje a jaké pravidla platí pro bezpečnostní problémy a licence.
Kde se bavit
Všechno začíná v komunitním repozitáři, bez ohledu na to, jakou část Antimatter se týká:
- Chyby a požadavky na funkce: vytvořte issue a vyberte Bug report, Feature request nebo Plugin or integration request. Nejprve prohledejte existující issues; pokud je vaše tam, přidejte palec nahoru nebo své podrobnosti.
- Dotazy a nápady: v Diskuzích, v kategoriích Q&A nebo Ideas.
- Před větším zásahem vytvořte issue nebo diskusi, abyste se nejprve dohodli na přístupu. Ušetříte tím pull request, který by se v daném stavu nedal sloučit.
Dobré místo pro začátek jsou problémy označené štítky good first issue a help wanted. V komentáři napište, že na jednom z nich pracujete. Nové problémy dostávají štítek status/triage, poté status/accepted, status/planned nebo status/wontfix. Problémy zůstávají v komunitním repozitáři bez ohledu na jejich obsah; repozitáře s kódem problémy nepřijímají. Naplánovaná práce je na Antimatter roadmap.
Repozitáře a větve
Kód je v organizaci AntimatterChat; Kde se kód nachází obsahuje seznam repozitářů. V každém repozitáři:
mainje výchozí větev a obsahuje kód Antimatter. Vytvářejte od ní větve a odesílejte pull requesty do ní.- Repozitáře viděné z Mattermost mají také větev
upstream, zrcadlo kódu Mattermost používané k přebírání jejich změn. Nezakládajte na ní svou práci.
README každého repozitáře vysvětluje, jak ho sestavit a testovat. Pro server a webové rozhraní viz Sestavení ze zdrojového kódu; pro aplikace viz Sestavení, instalace a ladění.
Pull requesty
- Vytvořte fork repozitáře a z větve
mainodvoďte novou větev. - Každou pull request omezte na jednu změnu. Menší pull requesty se recenzují rychleji.
- Držte se stylu okolního kódu a tam, kde to dává smysl, přidejte nebo aktualizujte testy.
- Popište, co jste změnili a proč, a připojte odkaz na issue, kterou změna řeší:
Fixes AntimatterChat/community#123. - Ujistěte se, že všechny kontroly proběhly úspěšně. Údržbář repozitáře pull request zkontroluje a může požádat o úpravy.
V repozitáři serveru vyplňte šablonu pull request: Shrnutí a blok Poznámka k vydání, který musí být vždy přítomen. Pokud změna neovlivňuje API, konfiguraci, schéma databáze ani viditelné chování, vložte do něj NONE.
Přispěním souhlasíte s tím, že vaše příspěvky jsou licencovány pod licencí repozitáře, do kterého přispíváte.
Commits a styl kódu
Commits
Zprávy o změnách v historii jsou jednou krátkou větou popisující, co se změnilo, s velkým počátečním písmenem a bez tečky na konci. Změny v jedné části se označují jejím názvem, například Fusion: a compact conversation header on phones nebo Server: community attributes, and admin-only user attributes. Jedna změna na jeden commit; důvody vysvětlujte v těle zprávy, pokud nejsou zřejmé.
Server (Go)
- Před pushem spusťte
make check-stylev adresářiserver/. - Nikdy nespouštějte přímo
go mod tidy; použijtemake modules-tidy. - V request path logujte pomocí loggeru requestu. V vrstvě store přejímejte
request.CTX, necontext.Context. - Nové API endpointy patří do
server/channels/api4, jejich typy doserver/public/modela ideálně metoda domodel.Client4a do TypeScript klienta.
Webové rozhraní (TypeScript a React)
- V adresáři
webapp/spusťtemake check-styleamake check-types. - Klasické rozhraní se řídí podle
webapp/STYLE_GUIDE.md: funkční komponenty, hooks pro Redux, proměnné tématu pro barvy, přístupné markup. - Komponenty Fusion se nacházejí v
webapp/fusion/src/fusion, jejich styly vwebapp/fusion/src/fusion/styles. Tvoří názvy tříd pomocí helperuam()a používají design tokens Fusion; držte se souborů, které jsou vedle vašich. - Pro aplikace nepřidávejte nové globální proměnné
window.*. Nové utility pro aplikace patří podwindow.WebappUtils, jak je vysvětleno vwebapp/AGENTS.md. - Změna v registru aplikací (
plugins/registry.ts) se obvykle týká kopií v obou rozhraní.
Překlady
Antimatter a jeho vestavěné aplikace jsou přeloženy do 37 jazyků. Přispěvatelé přidávají anglické řetězce; ostatní jazyky se aktualizují ve skupinách.
Přidání řetězce do webových rozhraní
- Napište ho s ID a doslovným anglickým textem:
formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'})nebo<FormattedMessage id='…' defaultMessage='…'/>. Anglický text zobrazený v aplikaci pochází zdefaultMessage. - Spusťte
make i18n-extractvwebapp/(nebonpm run i18n-extractvwebapp/fusionnebowebapp/channels). Aktualizujesrc/i18n/en.jsondaného balíčku. - Vyplňte
descriptionnové položky ven.json: kde se řetězec objevuje a jak se používá. Je to kontext, na jehož základě pracují překladatelé, ať už lidské, nebo strojové.
npm run i18n-extract:check selže, pokud je en.json neaktuální vzhledem k kódu.
Přidání řetězce na serveru
- V kódu použijte ID, například
model.NewAppError(…, "app.community_attributes.invalid.app_error", …)neboi18n.T("…"). - Spusťte
make i18n-extractvserver/. Přidá ID doserver/i18n/en.jsonve správném pořadí. - Napište anglický
translationadescriptionnové položky.
Ostatní jazyky
Každý jazyk má svůj soubor vedle en.json (fr.json, pt-BR.json, zh-TW.json…). Chcete-li nahlásit nesprávný překlad, otevřete issue v komunitním repozitáři s jazykem, textem a místem, kde se objevuje.
Vestavěné aplikace si své řetězce drží v webapp/i18n/; viz Překlady na stránce aplikací.
Dokumentace a tento web
Tento web a jeho dokumentace jsou v repozitáři antimatter.chat. Stránky jsou HTML fragmenty v src/pages/; python3 src/build.py sestaví web. Opravy a chybějící vysvětlení jsou vítány jako issues nebo pull requests.
Bezpečnostní problémy
Nahlaste to soukromě pomocí funkce pro hlášení zranitelností na GitHubu: otevřete záložku Zabezpečení v dotčeném repozitáři (například serveru) a zvolte Nahlásit zranitelnost. Pokud nevíte, který repozitář je dotčen, nahlaste to v komunitním repozitáři. Uveďte komponentu a její verzi, co by útočník mohl udělat, jak se to dá reprodukovat a od jakého nastavení to závisí.
Údržbáři na to tam odpovídají, informují vás o průběhu opravy a po vydání verze s opravou zveřejní oznámení. Prosíme, dejte jim rozumný čas, než problém sami zveřejníte. Opravy se dostávají do nejnovější verze. Kompletní politika je v bezpečnostní politice.
Licence
- Server je pod licencí GNU Affero General Public License v3.0 (AGPL v3). Ve stejném repozitáři jsou administrativní nástroje a konfigurační soubory (
server/templates/,server/i18n/,server/public/awebapp/) pod licencí Apache License 2.0. VizLICENSE.txtaNOTICE.txt. - Aplikace: Vlastní aplikace Antimatter, jako je Hlasování, jsou pod licencí AGPL v3; aplikace odvozené z Mattermost si zachovávají původní licenci. Každý repozitář to uvádí v souboru
LICENSE. - Desktopové a mobilní aplikace jsou pod licencí Apache License 2.0. Repozitář Docker je pod licencí Apache License 2.0, s výjimkou souboru
Dockerfile, který je pod licencí AGPL v3.
Licence AGPL znamená, že pokud provozujete upravený server Antimatter pro jiné osoby přes síť, musíte jim nabídnout zdrojový kód vašich změn. Antimatter je založen na Mattermost; není s ním nijak spjat ani schválen společností Mattermost, Inc.
Všichni účastníci se řídí kodexem chování.