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:
mainon 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
- Forkkaa repositorio ja luo haara
main-haaresta. - Rajoita jokainen pull request yhteen muutokseen. Pienet pull requestit tarkistetaan nopeammin.
- Seuraa koodin tyyliä, joka on ympärilläsi, ja lisää tai päivitä testit, kun se on järkevää.
- Kuvaile, mitä muutit ja miksi, ja linkitä se issue, jonka se korjaa:
Fixes AntimatterChat/community#123. - 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-stylehakemistossaserver/ennen pushia. - Älä koskaan aja
go mod tidysuoraan; ajamake modules-tidy. - Pyyntöpoluissa loogaa pyynnin loogerilla. Store-tasolla ota
request.CTX, eicontext.Context. - Uudet API-päätepisteet tulevat hakemistoon
server/channels/api4, tyyppinsä kanssa hakemistoonserver/public/modelja, ihanteellisesti, metodin kanssamodel.Client4:ssä ja TypeScript-asiakkaassa.
Käyttöliittymät (TypeScript ja React)
- Aja
make check-stylejamake check-typeshakemistossawebapp/. - 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 hakemistossawebapp/fusion/src/fusion/styles. Ne rakentavat luokkanimienam()-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 hakemistoonwindow.WebappUtils, kutenwebapp/AGENTS.mdselittää. - 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
- Kirjoita se tunnisteella ja kirjaimellisella englanninkielisellä tekstillä:
formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'})tai<FormattedMessage id='…' defaultMessage='…'/>. Sovelluksessa näkyvä englanti tuleedefaultMessage-kentästä. - Suorita
make i18n-extracthakemistossawebapp/(tainpm run i18n-extracthakemistossawebapp/fusiontaiwebapp/channels). Se päivittää kyseisen paketinsrc/i18n/en.json-tiedoston. - Täytä uuden merkinnän
description-kenttä tiedostossaen.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
- Käytä tunnistetta koodissa, esimerkiksi
model.NewAppError(…, "app.community_attributes.invalid.app_error", …)taii18n.T("…"). - Suorita
make i18n-extracthakemistossaserver/. Se lisää tunnisteen oikeaan järjestykseen tiedostoonserver/i18n/en.json. - Kirjoita uuden merkinnän englanninkielinen
translationjadescription.
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
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/jawebapp/) ovat Apache License 2.0 -lisenssin alaisia. KatsoLICENSE.txtjaNOTICE.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.