Bidrag

Fejlrapporter, idéer, oversættelser, dokumentation og kode er alle velkomne. Denne side forklarer, hvor man taler, hvordan man sender en ændring, de konventioner koden følger, samt reglerne for sikkerhedsproblemer og licenser.

Hvor man taler

Alt starter i community-repository, uanset hvilken del af Antimatter det drejer sig om:

  • Fejl og funktioner: opret en issue og vælg Fejlrapport, Funktionsanmodning eller Plugin- eller integrationsanmodning. Søg først i eksisterende issues; hvis din er der, tilføj en tommelfinger op eller dine detaljer.
  • Spørgsmål og idéer: Diskussioner, i kategorierne Spørgsmål og svar eller Ideer.
  • Før en større ændring, opret en issue eller en diskussion for at blive enige om tilgangen først. Det sparer en pull request, der ikke kan slås sammen, som den er.

Problemer med etiketterne good first issue og help wanted er gode steder at starte. Skriv i en kommentar, at du arbejder på et af dem. Nye problemer får etiketten status/triage, derefter status/accepted, status/planned eller status/wontfix. Problemerne forbliver i fællesskabets uafhængige repository, uanset hvad de handler om: kode-repositoryerne modtager ikke problemer. Planlagt arbejde findes på Antimatters roadmap.

Repositories og grene

Koden er i organisationen AntimatterChat; Hvor koden befinder sig lister repositories. I hvert repository:

  • main er standardgrenen og indeholder Antimatters kode. Grene fra den og send pull requests til den.
  • Repositories, der er forket fra Mattermost, har også en upstream-gren, et spejl af Mattermosts kode, der bruges til at hente deres ændringer. Basér ikke arbejde på den.

Hvert repositories README forklarer, hvordan man bygger og tester det. For serveren og webgrænsefladerne, se Bygning fra kilde; for apps, Byg, installer og debug.

Pull requests

  1. Fork repositoryet og opret en gren fra main.
  2. Begræns hver pull request til én ændring. Små pull requests gennemgås hurtigere.
  3. Følg stilen på koden omkring dig, og tilføj eller opdater tests, hvor det giver mening.
  4. Beskriv, hvad du har ændret, og hvorfor, og link til det issue, det løser: Fixes AntimatterChat/community#123.
  5. Sørg for, at kontrollerne bestås. En vedligeholder gennemgår pull requesten og kan bede om ændringer.

Udfyld skabelonen til pull requests i serverens repository: en Oversigt og Release Note-blokken, som altid skal være til stede. Skriv NONE i blokken, hvis ændringen ikke berører API, konfiguration, database-schema eller synlig adfærd.

Ved at bidrage accepterer du, at dit bidrag licenseres under licensen for det repository, du bidrager til.

Commits og kodestil

Commits

Commit-meddelelser i historikken er én kort sætning, der beskriver, hvad der ændres, i sætningsform og uden punktum i slutningen. Ændringer til én del præfikses med navnet på delen, for eksempel Fusion: a compact conversation header on phones eller Server: community attributes, and admin-only user attributes. Én commit pr. ændring; forklar årsagerne i brødteksten, hvis de ikke er åbenlyse.

Server (Go)

  • Kør make check-style i server/ før du pusher.
  • Kør aldrig go mod tidy direkte; kør make modules-tidy.
  • I anmodningsstier logger du med anmodningens logger. I lagretageren tager du en request.CTX, ikke en context.Context.
  • Nye API-endpoints hører hjemme i server/channels/api4, med deres typer i server/public/model og, ideelt set, en metode i model.Client4 og i TypeScript-klienten.

Webgrænseflader (TypeScript og React)

  • Kør make check-style og make check-types i webapp/.
  • Den klassiske grænseflade følger webapp/STYLE_GUIDE.md: funktionelle komponenter, hooks til Redux, temavariabler for farver og tilgængelig markup.
  • Fusions komponenter befinder sig i webapp/fusion/src/fusion, med deres stilarter i webapp/fusion/src/fusion/styles. De bygger klassenavne med am()-hjælpefunktionen og bruger Fusions design tokens; følg filerne ved siden af dine.
  • Tilføj ikke nye window.*-globaler til apps. Nye app-rettede værktøjer hører under window.WebappUtils, som webapp/AGENTS.md forklarer.
  • En ændring i app-registret (plugins/registry.ts) hører normalt i kopierne af begge grænseflader.

Oversættelser

Antimatter og de medfølgende apps er oversat til 37 sprog. Bidragsydere tilføjer de engelske strenge, og de øvrige sprog opdateres i partier.

Tilføje en streng til webgrænsefladerne

  1. Skriv den med en ID og en engelsk tekst: formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'}) eller <FormattedMessage id='…' defaultMessage='…'/>. Den engelske tekst, der vises i appen, kommer fra defaultMessage.
  2. Kør make i18n-extract i webapp/ (eller npm run i18n-extract i webapp/fusion eller webapp/channels). Det opdaterer src/i18n/en.json for det pågældende pakke.
  3. Udfyld description for den nye post i en.json: hvor strengen vises og hvordan den bruges. Det er den kontekst, oversættere – menneskelige eller maskinelle – arbejder ud fra.

npm run i18n-extract:check fejler, hvis en.json er forældet i forhold til koden.

Tilføje en streng til serveren

  1. Brug en ID i koden, for eksempel model.NewAppError(…, "app.community_attributes.invalid.app_error", …) eller i18n.T("…").
  2. Kør make i18n-extract i server/. Det tilføjer ID'en til server/i18n/en.json i den rigtige rækkefølge.
  3. Skriv den engelske translation og description for den nye post.

Andre sprog

Hvert sprog har sin egen fil ved siden af en.json (fr.json, pt-BR.json, zh-TW.json…). For at rapportere en forkert oversættelse, åbn et issue i fællesskabsrepositoryet med sproget, teksten og hvor den vises.

De medfølgende apps opbevarer deres strenge i webapp/i18n/; se Oversættelser på apps-siden.

Dokumentation og denne hjemmeside

Denne hjemmeside og dens dokumentation findes i antimatter.chat-repositoryet. Siderne er HTML-fragmenter i src/pages/; python3 src/build.py bygger sitet. Rettelser og manglende forklaringer er velkomne som issues eller pull requests.

Sikkerhedsproblemer

Rapportér aldrig et sikkerhedsproblem i et offentligt issue, diskussion eller pull request.

Rapportér det privat via GitHub's private sårbarhedsrapportering: åbn fanen Sikkerhed i det berørte repository (for eksempel serveren) og vælg Report a vulnerability. Hvis du ikke ved, hvilket repository der er berørt, rapportér det i community-repositoryet. Inkluder komponenten og dens version, hvad en angriber kan gøre, hvordan sårbarheden kan reproduseres, og hvilken konfiguration den afhænger af.

Vedligeholderne svarer der, holder dig opdateret, mens de retter det, og publicerer en advisory, når en rettet udgivelse er udkommet. Giv dem venligst rimelig tid, før du afslører problemet. Rettelser indgår i den nyeste udgivelse. Den fulde politik findes i sikkerhedspolitikken.

Licenser

  • Serveren er under GNU Affero General Public License v3.0 (AGPL v3). I samme repository er administratorværktøjerne og konfigurationsfilerne (server/templates/, server/i18n/, server/public/ og webapp/) under Apache License 2.0. Se LICENSE.txt og NOTICE.txt.
  • Apps: Antimatters egne apps, såsom Afstemninger, er under AGPL v3; apps, der er forket fra Mattermost, beholder deres oprindelige licens. Hvert repository angiver dette i sin LICENSE-fil.
  • Desktop- og mobilapps er under Apache License 2.0. Docker-repositoryet er under Apache License 2.0, undtagen Dockerfile, som er under AGPL v3.

AGPL betyder, at hvis du kører en ændret Antimatter-server for andre via et netværk, skal du tilbyde dem kildekoden til dine ændringer. Antimatter er baseret på Mattermost; det er ikke tilknyttet eller godkendt af Mattermost, Inc.

Alle, der deltager, følger adferdsreglerne.