Közreműködés
Hibajelentések, ötletek, fordítások, dokumentáció és kód mind szívesen látottak. Ez az oldal elmagyarázza, hol érdemes beszélgetni, hogyan kell beküldeni egy módosítást, milyen konvenciókat követ a kód, valamint milyen szabályok vonatkoznak a biztonsági problémákra és a licencelésre.
Hol érdemes beszélgetni
Minden a közösségi kódtárban indul, függetlenül attól, hogy az Antimatter melyik részéről van szó:
- Hibák és funkciókérések: nyisson meg egy issue-t, és válassza a Bug report, Feature request vagy Plugin or integration request opciót. Először keresse meg a meglévő issue-kat; ha a sajátja már ott van, szavazzon rá vagy adja hozzá a részleteit.
- Kérdések és ötletek: a Discussions szekcióban, a Q&A vagy Ideas kategóriákban.
- Nagyobb módosítás előtt nyisson meg egy issue-t vagy egy megbeszélést, hogy először egyezzenek meg a megközelítésben. Ez megspórolhat egy olyan pull request-et, amely így nem egyesíthető.
A good first issue és help wanted címkével ellátott hibajegyek jó kiindulópontot jelentenek. Jelezz egy kommentben, hogy dolgozol rajta. Az új hibajegyeket először status/triage, majd status/accepted, status/planned vagy status/wontfix címkét kapnak. A közösségi repozitóriumban maradnak a hibajegyek, függetlenül attól, hogy miről szólnak: a kódraktárok nem fogadnak hibajegyeket. A tervezett munkák a(z) Antimatter roadmapon találhatók.
Kódtárok és ágak
A kód az AntimatterChat szervezetnél található; a Hol található a kód szekció felsorolja a kódtárakat. Minden kódtárban:
- A
mainaz alapértelmezett ág, amely az Antimatter kódját tartalmazza. Ebből ágazzon le, és ide küldje a pull requesteket. - A Mattermost-ból forkolt kódtárakban van egy
upstreamág is, amely a Mattermost kódjának tükre, és a változások bevonásához szolgál. Ne alapozza a munkáját erre.
Minden kódtár README fájlja elmagyarázza, hogyan kell buildelni és tesztelni. A szerverhez és a webes felületekhez lásd: Buildelés forrásból; az appokhoz: Buildelés, telepítés és hibakeresés.
Pull requestek
- Forkolj a repozitóriumból, és hozz létre egy ágakat a
mainágból. - Minden pull requestben csak egy változást tartsz. A kisebb pull requestek gyorsabban áttekintik.
- Kövessd a környező kód stílusát, és ahol ésszerű, adj hozzá vagy frissíts teszteket.
- Írd le, mit változtattál és miért, és hivatkozz a javított issue-ra:
Fixes AntimatterChat/community#123. - Győződj meg róla, hogy a ellenőrzések sikeresek. Egy karbantartó áttekinti a pull requestet, és kérhet módosításokat.
A szerver repozitóriumban töltsd ki a pull request sablont: egy Összefoglalót, és a Kiadási megjegyzés blokkot, amelynek mindig ott kell lennie. Írd bele a NONE értéket, ha a változás nem érint API-t, konfigurációt, adatbázis sémat vagy látható viselkedést.
A hozzájárulással hozzájárulsz ahhoz, hogy a hozzájárulásod a hozzájárult repozitórium licencje alatt legyen.
Commit-ek és kód stílus
Commit-ek
A commit üzenetek a naplóban egy rövid mondat, amely a változtatásokat írja le, mondatkezdő nagybetűvel és végső pont nélkül. Egy adott részre vonatkozó módosítások előtt a rész neve szerepel, például Fusion: a compact conversation header on phones vagy Server: community attributes, and admin-only user attributes. Egy commit egy változtatásra; ha az okok nem egyértelműek, azokat a commit szövegében (body) kell megadni.
Szerver (Go)
- Futtasd a
make check-styleparancsot aserver/könyvtárban push előtt. - Soha ne futtasd közvetlenül a
go mod tidyparancsot; futtasd amake modules-tidyparancsot. - A kérés útvonalakban a kérés naplózójával naplózol. A store rétegben
request.CTXobjektumot fogadsz el, nemcontext.Context-et. - Az új API végpontok a
server/channels/api4könyvtárba kerülnek, a típusaikkal aserver/public/modelkönyvtárban, és ideális esetben egy módszerrel amodel.Client4-ben és a TypeScript kliensben.
Webes felületek (TypeScript és React)
- Futtasd a
make check-styleés amake check-typesparancsokat awebapp/könyvtárban. - A klasszikus felület követi a
webapp/STYLE_GUIDE.mdfájlt: funkcionális komponensek, Redux hook-ok, színekhez témaváltozók, hozzáférhető markup. - A Fusion komponensei a
webapp/fusion/src/fusionkönyvtárban találhatók, a stílusaikkal awebapp/fusion/src/fusion/styleskönyvtárban. Osztályneveket építenek aam()segédfüggvénnyel, és használják a Fusion design tokenjeit; kövesd a szomszédos fájlokat. - Ne adj hozzá új
window.*globális változókat az appokhoz. Az appok számára szánt új segédfüggvények awindow.WebappUtilsalá kerülnek, ahogy awebapp/AGENTS.mdfájl ismerteti. - A
plugins/registry.tsfájlban végzett módosítás általában mindkét felület másolatába tartozik.
Fordítások
Az Antimattert és a csomagolt alkalmazásokat 37 nyelvre fordították le. A hozzájárulók az angol szövegeket adják meg; a többi nyelvet tételben frissítik.
Szöveg hozzáadása a webes felületekhez
- Írd le azonosítóval és szó szerinti angol szöveggel:
formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'})vagy<FormattedMessage id='…' defaultMessage='…'/>. Az alkalmazásban megjelenő angol szöveg adefaultMessageértékéből származik. - Futtasd a
make i18n-extractparancsot awebapp/könyvtárban (vagy anpm run i18n-extractparancsot awebapp/fusionvagywebapp/channelskönyvtárban). Ez frissíti a csomagsrc/i18n/en.jsonfájlját. - Töltsd ki az új bejegyzés
descriptionmezőjét azen.jsonfájlban: hol jelenik meg a szöveg, és hogyan használják. Ez a kontextus, amiből a fordítók, legyenek emberi vagy gépi, dolgoznak.
A npm run i18n-extract:check parancs akkor hibázik, ha az en.json fájl nem friss a kóddal.
Szöveg hozzáadása a szerverhez
- Használj azonosítót a kódban, például
model.NewAppError(…, "app.community_attributes.invalid.app_error", …)vagyi18n.T("…"). - Futtasd a
make i18n-extractparancsot aserver/könyvtárban. Ez hozzáadja az azonosítót aserver/i18n/en.jsonfájlhoz a megfelelő sorrendben. - Írd le az új bejegyzés angol
translationésdescriptionmezőjét.
Egyéb nyelvek
Minden nyelvnek saját fájlja van az en.json mellett (fr.json, pt-BR.json, zh-TW.json…). Ha hibás fordítást szeretnél jelezni, nyiss egy issue-t a közösségi repozitóriumban, és írd meg a nyelvet, a szöveget és a megjelenési helyet.
A beépített alkalmazások szövegeit a webapp/i18n/ könyvtárban tárolják; lásd az alkalmazások oldalán a Fordítások részt.
Dokumentáció és ez a weboldal
Ez a weboldal és a dokumentáció a antimatter.chat repozitóriumban található. Az oldalak HTML-töredékek a src/pages/ könyvtárban; a python3 src/build.py parancs építi fel az oldalt. A javításokat és a hiányzó magyarázatokat szívesen fogadjuk issue-ként vagy pull request-ként.
Biztonsági problémák
Jelentsd be privát módon a GitHub privát sebezhetőségi bejelentési rendszerén keresztül: nyisd meg a érintett repository Security (Biztonság) fülét (például a szerver esetén), és válaszd a Report a vulnerability (Sebezhetőség bejelentése) lehetőséget. Ha nem tudod, melyik repository érintett, a community repository-n jelezd. Írd bele, melyik komponens melyik verzióját érinti, mit tehetne egy támadó, hogyan lehet reprodukálni a hibát, és milyen konfigurációtól függ.
A karbantartók ott válaszolnak, folyamatosan tájékoztatnak a javítás folyamatáról, és a javított kiadás megjelenése után közzétesznek egy biztonsági közleményt. Kérjük, adj nekik elegendő időt a probléma nyilvánosságra hozatala előtt. A javítások a legújabb kiadásban jelennek meg. A teljes szabályzat a biztonsági irányelv alatt érhető el.
Licenc
- A szerver a GNU Affero General Public License v3.0 (AGPL v3) alatt érhető el. Ugyanebben a repository-ban az adminisztrációs eszközök és a konfigurációs fájlok (
server/templates/,server/i18n/,server/public/éswebapp/) az Apache License 2.0 alatt állnak. Lásd aLICENSE.txtés aNOTICE.txtfájlokat. - Alkalmazások: Az Antimatter saját alkalmazásai, például a Szavazások, az AGPL v3 alatt állnak; a Mattermost-ból átvett alkalmazások megtartják eredeti licencüket. Minden repository a
LICENSEfájljában jelzi, melyik licenc vonatkozik rá. - A desktop és mobil alkalmazások az Apache License 2.0 alatt állnak. A Docker repository az Apache License 2.0 alatt áll, kivéve a
Dockerfile-t, amely az AGPL v3 alatt érhető el.
Az AGPL azt jelenti, hogy ha hálózaton keresztül, mások számára futtatod egy módosított Antimatter szerverrel, akkor biztosítanod kell a módosításaid forráskódját. Az Antimatter a Mattermost-ra épül; nincs kapcsolata a Mattermost, Inc.-cel, és nem is kapta meg annak jóváhagyását.
Minden résztvevő a viselkedési kódex szerint jár el.