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 main az 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

  1. Forkolj a repozitóriumból, és hozz létre egy ágakat a main ágból.
  2. Minden pull requestben csak egy változást tartsz. A kisebb pull requestek gyorsabban áttekintik.
  3. Kövessd a környező kód stílusát, és ahol ésszerű, adj hozzá vagy frissíts teszteket.
  4. Írd le, mit változtattál és miért, és hivatkozz a javított issue-ra: Fixes AntimatterChat/community#123.
  5. 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-style parancsot a server/ könyvtárban push előtt.
  • Soha ne futtasd közvetlenül a go mod tidy parancsot; futtasd a make modules-tidy parancsot.
  • A kérés útvonalakban a kérés naplózójával naplózol. A store rétegben request.CTX objektumot fogadsz el, nem context.Context-et.
  • Az új API végpontok a server/channels/api4 könyvtárba kerülnek, a típusaikkal a server/public/model könyvtárban, és ideális esetben egy módszerrel a model.Client4-ben és a TypeScript kliensben.

Webes felületek (TypeScript és React)

  • Futtasd a make check-style és a make check-types parancsokat a webapp/ könyvtárban.
  • A klasszikus felület követi a webapp/STYLE_GUIDE.md fájlt: funkcionális komponensek, Redux hook-ok, színekhez témaváltozók, hozzáférhető markup.
  • A Fusion komponensei a webapp/fusion/src/fusion könyvtárban találhatók, a stílusaikkal a webapp/fusion/src/fusion/styles könyvtárban. Osztályneveket építenek a am() 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 a window.WebappUtils alá kerülnek, ahogy a webapp/AGENTS.md fájl ismerteti.
  • A plugins/registry.ts fá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

  1. Í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 a defaultMessage értékéből származik.
  2. Futtasd a make i18n-extract parancsot a webapp/ könyvtárban (vagy a npm run i18n-extract parancsot a webapp/fusion vagy webapp/channels könyvtárban). Ez frissíti a csomag src/i18n/en.json fájlját.
  3. Töltsd ki az új bejegyzés description mezőjét az en.json fá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

  1. Használj azonosítót a kódban, például model.NewAppError(…, "app.community_attributes.invalid.app_error", …) vagy i18n.T("…").
  2. Futtasd a make i18n-extract parancsot a server/ könyvtárban. Ez hozzáadja az azonosítót a server/i18n/en.json fájlhoz a megfelelő sorrendben.
  3. Írd le az új bejegyzés angol translation és description mező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

Soha ne jelezz biztonsági problémát nyilvános issue-ban, vitában vagy pull request-ben.

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/ és webapp/) az Apache License 2.0 alatt állnak. Lásd a LICENSE.txt és a NOTICE.txt fá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 LICENSE fá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.