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:
mainer 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
- Fork lagret og opprett en gren fra
main. - Hold deg til én endring per pull request. Små pull requests blir gjennomgått raskere.
- Følg stilen til koden rundt deg, og legg til eller oppdater tester der det gir mening.
- Beskriv hva du endret og hvorfor, og lenk til problemet det løser:
Fixes AntimatterChat/community#123. - 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-styleiserver/før du pusher. - Kjør aldri
go mod tidydirekte; kjørmake modules-tidy. - I forespørselsbaner, logg med forespørselens logger. I lagerlaget, ta en
request.CTX, ikke encontext.Context. - Nye API-endepunkter legges i
server/channels/api4, med typene deres iserver/public/modelog, ideelt, en metode imodel.Client4og i TypeScript-klienten.
Web-grensesnitt (TypeScript og React)
- Kjør
make check-styleogmake check-typesiwebapp/. - 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 iwebapp/fusion/src/fusion/styles. De bygger klassenavn medam()-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 underwindow.WebappUtils, somwebapp/AGENTS.mdforklarer. - 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
- 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 fradefaultMessage. - Kjør
make i18n-extractiwebapp/(ellernpm run i18n-extractiwebapp/fusionellerwebapp/channels). Den oppdaterersrc/i18n/en.jsonfor den aktuelle pakken. - Fyll inn
descriptionfor den nye oppføringen ien.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
- Bruk en ID i koden, for eksempel
model.NewAppError(…, "app.community_attributes.invalid.app_error", …)elleri18n.T("…"). - Kjør
make i18n-extractiserver/. Den legger til ID-en iserver/i18n/en.jsoni riktig rekkefølge. - Skriv den engelske
translation-verdien ogdescriptionfor 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 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/ogwebapp/) lisensiert under Apache License 2.0. SeLICENSE.txtogNOTICE.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.