Bidrag

Bug-rapporter, ideer, oversettelser, dokumentasjon og kode er alle velkomne. Denne siden forklarer hvor man skal snakke, hvordan man sender inn en endring, konvensjonene koden følger, og reglene for sikkerhetsproblemer og lisenser.

Hvor man snakker

Alt starter i community-kodebasen, uansett hvilken del av Antimatter det gjelder:

  • Bug-rapporter og funksjonsønsker: åpne en issue og velg Bug report, Feature request eller Plugin or integration request. Søk i eksisterende issues først; hvis din er der, legg til en tommel opp eller dine detaljer.
  • Spørsmål og ideer: Discussions, i kategoriene Q&A eller Ideas.
  • Før en større endring, åpne en issue eller en diskusjon for å bli enige om tilnærmingen først. Det sparer en pull request som ikke kan slås sammen slik den er.

Problemer med etikettene good first issue og help wanted er gode steder å starte. Skriv i en kommentar at du jobber med ett av dem. Nye problemer får etiketten status/triage, deretter status/accepted, status/planned eller status/wontfix. Problemer beholdes i fellesskapets repository uansett hva de gjelder: kode-repositoryene tar ikke imot problemer. Planlagt arbeid finnes på Antimatters veikart.

Kodebaser og grener

Koden ligger i AntimatterChat-organisasjonen; Hvor koden ligger lister opp kodebasene. I hver kodebase:

  • main er standardgrenen og inneholder Antimatters kode. Lag en gren fra den og send pull requests til den.
  • Kodebaser som er forket fra Mattermost har også en upstream-gren, en speiling av Mattermosts kode som brukes til å hente inn deres endringer. Ikke baser arbeid på den.

README-filen i hver kodebase forklarer hvordan man bygger og tester den. For serveren og webgrensesnittene, se Bygging fra kilde; for apper, Bygg, installer og feilsøk.

Pull requests

  1. Fork lagret og opprett en gren fra main.
  2. Hold deg til én endring per pull request. Små pull requests blir gjennomgått raskere.
  3. Følg stilen til koden rundt deg, og legg til eller oppdater tester der det gir mening.
  4. Beskriv hva du endret og hvorfor, og lenk til problemet det løser: Fixes AntimatterChat/community#123.
  5. Sørg for at sjekkene går gjennom. En vedlikeholder gjennomgår pull requesten og kan be om endringer.

I serverens repository, fyll inn malen for pull request: en Oppsummering, og Utgivelsesnotat-blokken, som alltid må være der. Skriv NONE i den når endringen ikke berører API, konfigurasjon, databasens skjema eller synlig oppførsel.

Ved å bidra, godtar du at bidraget ditt lisensieres under lisensen til repositoryen du bidrar til.

Commits og kodeskost

Commits

Commitmeldinger i historikken er én kort setning som sier hva som er endret, i setningsform og uten punktum i slutten. Endringer til én del får prefiks med navnet på delen, for eksempel Fusion: a compact conversation header on phones eller Server: community attributes, and admin-only user attributes. Én commit per endring; forklaringer på årsakene tilhører i meldingsteksten når de ikke er åpenlyse.

Server (Go)

  • Kjør make check-style i server/ før du pusher.
  • Kjør aldri go mod tidy direkte; kjør make modules-tidy.
  • I forespørselsbaner, logg med forespørselens logger. I lagerlaget, ta en request.CTX, ikke en context.Context.
  • Nye API-endepunkter legges i server/channels/api4, med typene deres i server/public/model og, ideelt, en metode i model.Client4 og i TypeScript-klienten.

Web-grensesnitt (TypeScript og React)

  • Kjør make check-style og make check-types i webapp/.
  • Det klassiske grensesnittet følger webapp/STYLE_GUIDE.md: funksjonelle komponenter, hooks for Redux, temavariabler for farger, tilgjengelig markup.
  • Fusjons komponenter ligger i webapp/fusion/src/fusion, med stilene deres i webapp/fusion/src/fusion/styles. De bygger klassenavn med am()-hjelperen og bruker Fusjons design-tokens; følg filene ved siden av dine.
  • Legg ikke til nye window.*-globaler for apper. Nye verktøy for apper legges under window.WebappUtils, som webapp/AGENTS.md forklarer.
  • En endring i app-registeret (plugins/registry.ts) hører vanligvis i kopiene til begge grensesnittene.

Oversettelser

Antimatter og de medfølgende appene er oversatt til 37 språk. Bidragsytere legger til de engelske strengene, mens de andre språkene oppdateres i partier.

Legge til en streng i webgrensesnittene

  1. Skriv den med en ID og en engelsk tekst: formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'}) eller <FormattedMessage id='…' defaultMessage='…'/>. Den engelske teksten som vises i appen kommer fra defaultMessage.
  2. Kjør make i18n-extract i webapp/ (eller npm run i18n-extract i webapp/fusion eller webapp/channels). Den oppdaterer src/i18n/en.json for den aktuelle pakken.
  3. Fyll inn description for den nye oppføringen i en.json: hvor strengen vises og hvordan den brukes. Dette er konteksten oversettere, menneskelige eller maskinbaserte, jobber med.

npm run i18n-extract:check feiler når en.json er utdatert i forhold til koden.

Legge til en streng på serveren

  1. Bruk en ID i koden, for eksempel model.NewAppError(…, "app.community_attributes.invalid.app_error", …) eller i18n.T("…").
  2. Kjør make i18n-extract i server/. Den legger til ID-en i server/i18n/en.json i riktig rekkefølge.
  3. Skriv den engelske translation-verdien og description for den nye oppføringen.

Andre språk

Hvert språk har sin egen fil ved siden av en.json (fr.json, pt-BR.json, zh-TW.json…). For å rapportere en feilaktig oversettelse, åpner du en issue i fellesskapsrepositoryet med språket, teksten og hvor den vises.

De medfølgende appene lagrer strengene sine i webapp/i18n/; se Oversettelser på app-siden.

Dokumentasjon og denne nettsiden

Denne nettsiden og dokumentasjonen ligger i antimatter.chat-repositoryet. Sider er HTML-fragmenter i src/pages/; python3 src/build.py bygger nettsiden. Rettinger og manglende forklaringer er velkomne som issues eller pull requests.

Sikkerhetsproblemer

Rapporter aldri et sikkerhetsproblem i en offentlig issue, diskusjon eller pull request.

Rapporter det privat ved hjelp av GitHubs private sårbarhetsrapportering: åpne fanen Sikkerhet i det berørte repositoryet (for eksempel serveren) og velg Report a vulnerability. Hvis du ikke vet hvilket repository som er berørt, rapporter det i community-repositoryet. Inkluder komponenten og versjonen, hva en angriper kan gjøre, hvordan det kan reproduseres, og eventuelle innstillinger det avhenger av.

Vedlikeholderne svarer der, holder deg oppdatert mens de retter feilen, og publiserer en varsel når en utgave med rettingen er ute. Gi dem rimelig tid før du avslører problemet. Rettelser legges inn i den nyeste utgaven. Den fullstendige politikken finnes i sikkerhetspolitikken.

Lisenser

  • Serveren er lisensiert under GNU Affero General Public License v3.0 (AGPL v3). I samme repository er administratorverktøyene og konfigurasjonsfilene (server/templates/, server/i18n/, server/public/ og webapp/) lisensiert under Apache License 2.0. Se LICENSE.txt og NOTICE.txt.
  • Apper: Antimatters egne apper, som Avstemninger, er under AGPL v3; apper som er forket fra Mattermost beholder sin opprinnelige lisens. Hvert repository oppgir dette i sin LICENSE-fil.
  • Skrivebords- og mobilappene er lisensiert under Apache License 2.0. Docker-repositoryet er lisensiert under Apache License 2.0, med unntak av Dockerfile, som er under AGPL v3.

AGPL betyr at hvis du kjører en modifisert Antimatter-server for andre over et nettverk, må du tilby dem kildekoden til endringene dine. Antimatter er basert på Mattermost; det er ikke tilknyttet eller godkjent av Mattermost, Inc.

Alle som deltar følger oppførselsreglene.