Bidra
Buggrapporter, idéer, översättningar, dokumentation och kod är alla välkomna. På den här sidan förklaras var man diskuterar, hur man skickar in en ändring, vilka konventioner koden följer samt reglerna för säkerhetsproblem och licenser.
Var man diskuterar
Allt börjar i community-kodbasen, oavsett vilken del av Antimatter det gäller:
- Buggrapporter och funktioner: öppna ett ärende och välj Buggrapport, Funktionsförfrågan eller Plugin- eller integrationsförfrågan. Sök först bland befintliga ärenden; om ditt finns där, lägg till en tumme upp eller dina detaljer.
- Frågor och idéer: i Diskussionerna, i kategorierna Frågor & svar eller Idéer.
- Före en större ändring, öppna ett ärende eller en diskussion för att komma överens om tillvägagångssättet först. Det sparar en pull request som inte kan slås samman som den är.
Problem med etiketterna good first issue och help wanted är bra att börja med. Skriv i en kommentar att du arbetar med ett av dem. Nya problem får etiketten status/triage och därefter status/accepted, status/planned eller status/wontfix. Problemen finns kvar i det gemenskapsbaserade lagret oavsett vad de handlar om: kodelagren tar inte emot problem. Planerat arbete finns på Antimatters vägg.
Kodbaser och grenar
Koden finns i organisationen AntimatterChat; Var koden finns listar kodbaserna. I varje kodbas:
mainär standardgrenen och innehåller Antimatters kod. Grenna från den och skicka pull requests till den.- Kodbaser som är forkade från Mattermost har också en
upstream-gren, en spegel av Mattermosts kod som används för att ta in deras ändringar. Basera inte arbete på den.
Varje kodbas README förklarar hur man bygger och testar den. För servern och webbgränssnitten, se Bygga från källkoden; för appar, Bygga, installera och felsöka.
Pull requests
- Forka repositoryt och skapa en gren från
main. - Begränsa varje pull request till en ändring. Små pull requests granskas snabbare.
- Följ stilen hos koden i din närhet och lägg till eller uppdatera tester där det är meningsfullt.
- Beskriv vad du ändrade och varför, och länka till problemet som åtgärdas:
Fixes AntimatterChat/community#123. - Se till att kontrollerna går igenom. En underhållare granskar pull requesten och kan be om ändringar.
I serverrepositoryt, fyll i mallen för pull request: en Sammanfattning, och blocket Släppnotis, som alltid måste finnas. Skriv NONE i det när ändringen inte rör API, konfiguration, databasschema eller synligt beteende.
Genom att bidra godkänner du att ditt bidrag licensieras enligt licensen för det repositoryt du bidrar till.
Commits och kodstil
Commits
Commitmeddelanden i historiken är en kort mening som säger vad som ändras, med stor initial och utan punkt i slutet. Ändringar till en del prefixas med den, till exempel Fusion: a compact conversation header on phones eller Server: community attributes, and admin-only user attributes. En commit per ändring; förklara anledningarna i brödtexten när de inte är uppenbara.
Server (Go)
- Kör
make check-styleiserver/innan du pushar. - Kör aldrig
go mod tidydirekt; körmake modules-tidy. - I anfrågeslingor, logga med anfrågens logger. I lagerlagret, ta emot en
request.CTX, inte encontext.Context. - Nya API-slutpunkter placeras i
server/channels/api4, med sina typer iserver/public/modeloch, idealiskt, en metod imodel.Client4och i TypeScript-klienten.
Webbgränssnitt (TypeScript och React)
- Kör
make check-styleochmake check-typesiwebapp/. - Det klassiska gränssnittet följer
webapp/STYLE_GUIDE.md: funktionella komponenter, hooks för Redux, temavariabler för färger, tillgänglig markup. - Fusions komponenter finns i
webapp/fusion/src/fusion, med sina stilar iwebapp/fusion/src/fusion/styles. De bygger klassnamn med hjälparenam()och använder Fusions design tokens; följ filerna intill dina. - Lägg inte till nya
window.*-globaler för appar. Nya verktyg för appar placeras underwindow.WebappUtils, somwebapp/AGENTS.mdförklarar. - En ändring i appregistret (
plugins/registry.ts) hör oftast med i båda gränssnittens kopior.
Översättningar
Antimatter och dess medföljande appar är översatta till 37 språk. Bidragsgivare lägger till de engelska strängarna; de övriga språken uppdateras i partier.
Lägger till en sträng i webbgränssnitten
- Skriv den med en ID och en engelsk text:
formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'})eller<FormattedMessage id='…' defaultMessage='…'/>. Den engelska texten som visas i appen kommer fråndefaultMessage. - Kör
make i18n-extractiwebapp/(ellernpm run i18n-extractiwebapp/fusionellerwebapp/channels). Det uppdaterar paketetssrc/i18n/en.json. - Fyll i den nya postens
descriptionien.json: var strängen förekommer och hur den används. Det är den kontext som översättare, mänskliga eller maskinella, utgår från.
npm run i18n-extract:check misslyckas när en.json inte är i takt med koden.
Lägger till en sträng på servern
- Använd ett ID i koden, till exempel
model.NewAppError(…, "app.community_attributes.invalid.app_error", …)elleri18n.T("…"). - Kör
make i18n-extractiserver/. Det lägger till ID:t iserver/i18n/en.jsoni rätt ordning. - Skriv den engelska
translation-texten ochdescriptionför den nya posten.
Övriga språk
Varje språk har sin egen fil bredvid en.json (fr.json, pt-BR.json, zh-TW.json…). För att rapportera en felaktig översättning, öppna ett ärende i det gemenskapsbaserade repot med språket, texten och var den förekommer.
De medföljande apparna håller sina strängar i webapp/i18n/; se Översättningar på appsidan.
Dokumentation och denna webbplats
Denna webbplats och dess dokumentation finns i antimatter.chat-repot. Sidor är HTML-fragment i src/pages/; python3 src/build.py bygger webbplatsen. Rättelser och saknade förklaringar är välkomna som ärenden eller pull requests.
Säkerhetsproblem
Rapportera det privat med GitHub:s privata sårbarhetsrapportering: öppna fliken Säkerhet i det berörda lagret (till exempel servern) och välj Rapportera en sårbarhet. Om du inte vet vilket lager som är berört, rapportera det i community-lagret. Inkludera komponenten och dess version, vad en angripare kan göra, hur man kan reproducera problemet samt vilken konfiguration det beror på.
Underhållarna svarar där, håller dig uppdaterad medan de åtgärdar problemet och publicerar ett meddelande när en åtgärdad version släpps. Var god ge dem rimlig tid innan du offentliggör problemet. Åtgärder ingår i den senaste versionen. Den fullständiga policyn finns i säkerhetspolicyn.
Licenser
- Servern är under GNU Affero General Public License v3.0 (AGPL v3). I samma lager är administrationsverktygen och konfigurationsfilerna (
server/templates/,server/i18n/,server/public/ochwebapp/) under Apache License 2.0. SeLICENSE.txtochNOTICE.txt. - Apps: Antimatters egna appar, såsom Omröstningar, är under AGPL v3; appar som är gaffade från Mattermost behåller sin ursprungliga licens. Varje lager anger detta i sin
LICENSE-fil. - Skrivbords- och mobilapparna är under Apache License 2.0. Docker-lagret är under Apache License 2.0, med undantag för dess
Dockerfile, som är under AGPL v3.
AGPL innebär att om du kör en modifierad Antimatter-server för andra personer via ett nätverk, måste du erbjuda dem källkoden för dina ändringar. Antimatter bygger på Mattermost; det är inte affilierat med eller godkänt av Mattermost, Inc.
Alla som deltar följer beteendekoden.