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

  1. Forka repositoryt och skapa en gren från main.
  2. Begränsa varje pull request till en ändring. Små pull requests granskas snabbare.
  3. Följ stilen hos koden i din närhet och lägg till eller uppdatera tester där det är meningsfullt.
  4. Beskriv vad du ändrade och varför, och länka till problemet som åtgärdas: Fixes AntimatterChat/community#123.
  5. 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-style i server/ innan du pushar.
  • Kör aldrig go mod tidy direkt; kör make modules-tidy.
  • I anfrågeslingor, logga med anfrågens logger. I lagerlagret, ta emot en request.CTX, inte en context.Context.
  • Nya API-slutpunkter placeras i server/channels/api4, med sina typer i server/public/model och, idealiskt, en metod i model.Client4 och i TypeScript-klienten.

Webbgränssnitt (TypeScript och React)

  • Kör make check-style och make check-types i webapp/.
  • 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 i webapp/fusion/src/fusion/styles. De bygger klassnamn med hjälparen am() 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 under window.WebappUtils, som webapp/AGENTS.md fö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

  1. 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ån defaultMessage.
  2. Kör make i18n-extract i webapp/ (eller npm run i18n-extract i webapp/fusion eller webapp/channels). Det uppdaterar paketets src/i18n/en.json.
  3. Fyll i den nya postens description i en.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

  1. Använd ett ID i koden, till exempel model.NewAppError(…, "app.community_attributes.invalid.app_error", …) eller i18n.T("…").
  2. Kör make i18n-extract i server/. Det lägger till ID:t i server/i18n/en.json i rätt ordning.
  3. Skriv den engelska translation-texten och description fö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 aldrig ett säkerhetsproblem i ett offentligt ärende, diskussion eller pull request.

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/ och webapp/) under Apache License 2.0. Se LICENSE.txt och NOTICE.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.