Osallistuminen

Vikaraportteja, ideoita, käännöksiä, dokumentaatiota ja koodia kaivataan. Tällä sivulla kerrotaan, missä keskustellaan, miten muutokset lähetetään, mitä konventioita koodi noudattaa ja mitkä ovat säännöt tietoturvaongelmille ja lisensseille.

Missä keskustellaan

Kaikki alkaa community-varastosta, riippumatta siitä, mistä Antimatterin osasta on kyse:

  • Vikat ja toiveet: avaa issue ja valitse Bug report, Feature request tai Plugin or integration request. Etsi ensin olemassa olevat issue'et; jos sinun ongelmasi on jo siellä, lisää peukalo ylöspäin tai lisätietosi.
  • Kysymykset ja ideat: Discussions, Q&A- tai Ideas-kategorioissa.
  • Ennen suurempaa muutosta, avaa issue tai keskustelu, jotta lähestymistapa sovitaan etukäteen. Se säästää pull requestin, jota ei voi yhdistää sellaisenaan.

Ongelmat, joihin on liitetty tunnisteet good first issue ja help wanted, ovat hyviä lähtökohtia. Kerro kommentissa, että olet käsittelemässä niitä. Uusiin ongelmiin liitetään ensin tunniste status/triage ja sen jälkeen status/accepted, status/planned tai status/wontfix. Ongelmat säilytetään yhteisön varastossa riippumatta aiheestaan: koodivarastot eivät ota ongelmia. Suunniteltu työ näkyy Antimatterin tiekartalla.

Varastot ja haarat

Koodi on AntimatterChat-järjestössä; Missä koodi sijaitsee luettaa varastot. Jokaisessa varastossa:

  • main on oletushaara ja sisältää Antimatterin koodin. Haaraa siitä ja lähetä pull requestit siihen.
  • Mattermostista forkatut varastot sisältävät myös upstream-haaran, joka on Mattermostin koodin peili, jota käytetään muutosten tuomiseen. Älä pohjaa työtäsi siihen.

Jokaisen varaston README-kuvaus kertoo, miten se kootaan ja testataan. Palvelimen ja web-rajapintojen osalta katso Kokoaminen lähdökoodista; sovellusten osalta Kokoaminen, asennus ja virheenetsintä.

Pull requestit

  1. Forkkaa repositorio ja luo haara main-haaresta.
  2. Rajoita jokainen pull request yhteen muutokseen. Pienet pull requestit tarkistetaan nopeammin.
  3. Seuraa koodin tyyliä, joka on ympärilläsi, ja lisää tai päivitä testit, kun se on järkevää.
  4. Kuvaile, mitä muutit ja miksi, ja linkitä se issue, jonka se korjaa: Fixes AntimatterChat/community#123.
  5. Varmista, että tarkistukset menevät läpi. Ylläpitäjä tarkistaa pull requestin ja voi pyytää muutoksia.

Palvelinrepositoriossa täytä pull request -malli: Yhteenveto ja Release Note -lohko, joka on aina oltava. Kirjoita siihen NONE, jos muutos ei koska API:ta, asetuksia, tietokantakaavaa tai näkyvää käyttäytymistä.

Osallistumalla hyväksyt, että panostuksesi lisensoitaa sen repositorian lisenssillä, johon osallistut.

Committit ja koodin tyyli

Committit

Commit-viestit historiassa ovat yksi lyhyt lause, joka kertoo, mitä muuttuu, lausekirjoituksella ja ilman loppupistettä. Muutokset yhteen osaan etuotetaan sillä, esimerkiksi Fusion: a compact conversation header on phones tai Server: community attributes, and admin-only user attributes. Yksi commit per muutos; selitä syyt runkossa, jos ne eivät ole ilmeisiä.

Palvelin (Go)

  • Aja make check-style hakemistossa server/ ennen pushia.
  • Älä koskaan aja go mod tidy suoraan; aja make modules-tidy.
  • Pyyntöpoluissa loogaa pyynnin loogerilla. Store-tasolla ota request.CTX, ei context.Context.
  • Uudet API-päätepisteet tulevat hakemistoon server/channels/api4, tyyppinsä kanssa hakemistoon server/public/model ja, ihanteellisesti, metodin kanssa model.Client4:ssä ja TypeScript-asiakkaassa.

Käyttöliittymät (TypeScript ja React)

  • Aja make check-style ja make check-types hakemistossa webapp/.
  • Klassinen käyttöliittymä noudattaa ohjeistoa webapp/STYLE_GUIDE.md: funktionaaliset komponentit, Reduxin hookit, teeman muuttujat väreille, saavutettava merkkivalmistus.
  • Fusionin komponentit sijaitsevat hakemistossa webapp/fusion/src/fusion, tyylinsä kanssa hakemistossa webapp/fusion/src/fusion/styles. Ne rakentavat luokkanimien am() -avustimella ja käyttävät Fusionin design tokeneita; seuraa tiedostoja, jotka ovat vieressäsi.
  • Älä lisää uusia window.* -globaaleja sovelluksille. Uudet sovellusohjaavat työkalut tulevat hakemistoon window.WebappUtils, kuten webapp/AGENTS.md selittää.
  • Muutos soittimen rekisterissä (plugins/registry.ts) kuuluu yleensä molempien käyttöliittymien kopioihin.

Käännökset

Antimatter ja sen mukana toimitetut sovellukset on käännetty 37 kielelle. Lahjoittajat lisäävät englanninkieliset merkkijonot, ja muut kielet päivitetään erissä.

Merkkijonon lisääminen verkkokäyttöliittymiin

  1. Kirjoita se tunnisteella ja kirjaimellisella englanninkielisellä tekstillä: formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'}) tai <FormattedMessage id='…' defaultMessage='…'/>. Sovelluksessa näkyvä englanti tulee defaultMessage-kentästä.
  2. Suorita make i18n-extract hakemistossa webapp/ (tai npm run i18n-extract hakemistossa webapp/fusion tai webapp/channels). Se päivittää kyseisen paketin src/i18n/en.json-tiedoston.
  3. Täytä uuden merkinnän description-kenttä tiedostossa en.json: missä merkkijono esiintyy ja miten sitä käytetään. Se on konteksti, josta kääntäjät, olipa kyseessä ihminen tai kone, työskentelevät.

npm run i18n-extract:check epäonnistuu, jos en.json on vanhentunut koodiin nähden.

Merkkijonon lisääminen palvelimeen

  1. Käytä tunnistetta koodissa, esimerkiksi model.NewAppError(…, "app.community_attributes.invalid.app_error", …) tai i18n.T("…").
  2. Suorita make i18n-extract hakemistossa server/. Se lisää tunnisteen oikeaan järjestykseen tiedostoon server/i18n/en.json.
  3. Kirjoita uuden merkinnän englanninkielinen translation ja description.

Muut kielet

Jokaisella kielellä on oma tiedostonsa en.json:n vieressä (fr.json, pt-BR.json, zh-TW.json…). Jos haluat ilmoittaa virheellisestä käännöksestä, avaa ongelman yhteisön varastoon, jossa on kieli, teksti ja sen esiintymispaikka.

Mukana toimitetut sovellukset pitävät merkkijononsa hakemistossa webapp/i18n/; katso Käännökset sovellusten sivulta.

Dokumentaatio ja tämä verkkosivusto

Tämä verkkosivusto ja sen dokumentaatio ovat varastossa antimatter.chat. Sivut ovat HTML-fragmentteja hakemistossa src/pages/; python3 src/build.py rakentaa sivuston. Korjaukset ja puuttuvat selitykset ovat tervetulleita ongelmina tai vetopyyntöinä.

Turvallisuusongelmat

Älä koskaan ilmoita turvallisuusongelmaa julkisessa ongelmissa, keskustelussa tai vetopyyntössä.

Ilmoita haavoittuvuudesta luottamuksellisesti GitHubin yksityisen haavoittuvuudenilmoituskanavan kautta: avaa kyseisen varaston Turva-välilehti (esimerkiksi palvelimen) ja valitse Report a vulnerability. Jos et tiedä, mikä varasto on haavoittuvuuden kohde, ilmoita se yhteisön varastossa. Kerro ilmoituksessa komponentti ja sen versio, mitä hyökkääjä voisi tehdä, miten haavoittuvuuden voi toistaa ja mihin asetuksiin se perustuu.

Ylläpitäjät vastaavat ilmoitukseen, pitävät sinut ajan tasalla korjaustöiden edetessä ja julkaisevat tiedon, kun korjattu versio on saatavilla. Anna heille kohtuullinen aika ennen kuin julkistat ongelman. Korjaukset tulevat uuteen julkaisuun. Täydellinen ohjeistus on tietoturvaohjeistuksessa.

Lisenssit

  • Palvelin on GNU Affero General Public License v3.0 (AGPL v3) -lisenssin alainen. Samassa varastossa ylläpitäjätyökalut ja asetustiedostot (server/templates/, server/i18n/, server/public/ ja webapp/) ovat Apache License 2.0 -lisenssin alaisia. Katso LICENSE.txt ja NOTICE.txt.
  • Sovellukset: Antimatterin omat sovellukset, kuten Kyselyt, ovat AGPL v3 -lisenssin alaisia; Mattermostista haaratut sovellukset säilyttävät alkuperäisen lisenssinsä. Jokainen varasto kertoo lisenssistään LICENSE-tiedostossaan.
  • Pöytäkone- ja mobiilisovellukset ovat Apache License 2.0 -lisenssin alaisia. Docker-varasto on Apache License 2.0 -lisenssin alainen, paitsi sen Dockerfile, joka on AGPL v3 -lisenssin alainen.

AGPL-lisenssi tarkoittaa, että jos ajat muokattua Antimatter-palvelinta muiden ihmisten käyttöön verkossa, sinun on tarjottava heille muutostesi lähdekoodi. Antimatter perustuu Mattermostiin; se ei ole Mattermost, Inc.:n rahoittama tai sen hyväksymä.

Kaikki osallistujat noudattavat toimintakoodia.