Pag-ambag
Malugod ang mga bug report, ideya, pagsasalin, dokumentasyon, at code. Inilalarawan ng pahinang ito kung saan makikipag-usap, paano magpadala ng pagbabago, ang mga konbensyon na sinusunod ng code, at ang mga patakaran para sa mga problema sa seguridad at lisensya.
Saan makikipag-usap
Nagsisimula ang lahat sa community repository, anu-ano ang bahagi ng Antimatter na tinutukoy:
- Mga bug at hinihinging feature: magbukas ng isang issue at piliin ang Bug report, Feature request, o Plugin or integration request. Hanapin muna ang mga umiiral na issue; kung nandoon ang iyong, magdagdag ng thumbs-up o ang mga detalye mo.
- Mga tanong at ideya: ang Discussions, sa mga kategorya ng Q&A o Ideas.
- Bago ang isang mas malaking pagbabago, magbukas ng isang issue o diskusyon upang makapagkasundo muna sa abot ng pagbabago. Nakakatipid ito ng pull request na hindi maaaring i-merge nang ganito.
Ang mga issue na may label na good first issue at help wanted ay magandang punto upang magsimula. Sabihin sa isang comment na ikaw ang nagtatrabaho dito. Ang mga bagong issue ay may label na status/triage, tapos status/accepted, status/planned o status/wontfix. Mananatili sa community repository ang mga issue, anuman ang paksa: hindi tinatanggap ng mga code repository ang mga issue. Ang mga planong gawain ay nasa Antimatter roadmap.
Mga repository at branch
Nasa AntimatterChat organisation ang code; ang Saan nasa code ang naglilista ng mga repository. Sa bawat repository:
- Ang
mainang default branch at naglalaman ng code ng Antimatter. Mag-branch mula dito at magpadala ng pull request dito. - Ang mga repository na fork mula sa Mattermost ay may
upstreambranch din, isang mirror ng code ng Mattermost na ginagamit upang dalhin ang mga pagbabago nito. Huwag ito gamitin bilang batayan ng trabaho.
Ang README ng bawat repository ay nagpapaliwanag kung paano ito ibuild at i-test. Para sa server at mga web interface, tingnan ang Pagbuo mula sa source; para sa mga app, Pagbuo, pag-install, at pag-debug.
Mga pull request
- I-fork ang repository at gumawa ng branch mula sa
main. - Limitahan ang bawat pull request sa isang pagbabago. Mas mabilis ma-review ang maliliit na pull request.
- Sundan ang estilo ng code sa paligid mo, at magdagdag o i-update ang mga test kung angkop.
- Ikuwento kung ano ang binago mo at bakit, at i-link ang issue na inayos nito:
Fixes AntimatterChat/community#123. - Siguraduhing pumasa ang mga check. Ma-review ng isang maintainer ang pull request at maaaring humingi ng mga pagbabago.
Sa repository ng server, punan ang template ng pull request: ang Buod, at ang bloke ng Release Note, na dapat palaging nandoon. Isulat ang NONE kung ang pagbabago ay hindi nakakaapekto sa API, configuration, database schema, o makikita na pag-uugali.
Sa pamamagitan ng pag-contribute, sumasang-ayon ka na ang iyong kontribusyon ay lisensyado alinsagad sa lisensya ng repository na binibigyan mo ng tulong.
Mga Commit at Estilo ng Code
Mga Commit
Ang mga commit message sa history ay isang maikling pangungusap na nagsasabi ng pagbabago, sa sentence case at walang tuldok sa dulo. Ang mga pagbabago sa isang bahagi ay may prefix nito, halimbawa Fusion: a compact conversation header on phones o Server: community attributes, and admin-only user attributes. Isang commit bawat pagbabago; ipaliwanag ang mga dahilan sa body kung hindi malinaw.
Server (Go)
- Patakbuhin ang
make check-stylesaserver/bago i-push. - Huwag patakbuhin ang
go mod tidynang direkta; patakbuhin angmake modules-tidy. - Sa mga request path, mag-log gamit ang logger ng request. Sa store layer, kunin ang
request.CTX, hindi angcontext.Context. - Ang mga bagong API endpoint ay nasa
server/channels/api4, kasama ang kanilang types saserver/public/modelat, sa ideal, isang method samodel.Client4at sa TypeScript client.
Mga Web Interface (TypeScript at React)
- Patakbuhin ang
make check-styleatmake check-typessawebapp/. - Ang classic interface ay sumusunod sa
webapp/STYLE_GUIDE.md: functional components, hooks para sa Redux, theme variables para sa mga kulay, at accessible markup. - Ang mga component ng Fusion ay nasa
webapp/fusion/src/fusion, kasama ang kanilang styles sawebapp/fusion/src/fusion/styles. Nagbu-build sila ng class names gamit angam()helper at gumagamit ng design tokens ng Fusion; sundan ang mga file na nasa tabi mo. - Huwag magdagdag ng bagong
window.*globals para sa mga app. Ang mga bagong utility para sa app ay nasa ilalim ngwindow.WebappUtils, ayon sa paliwanag sawebapp/AGENTS.md. - Ang pagbabago sa app registry (
plugins/registry.ts) ay karaniwang kailangan sa mga kopya ng parehong interface.
Mga Pagsasalin
Ang Antimatter at ang mga kasamang app nito ay ipinagpatuloy sa 37 wika. Ang mga tagapag-ambag ang nagdadagdag ng mga English string; ang ibang mga wika ay inu-update sa mga batch.
Pagdaragdag ng string sa mga web interface
- Isulat ito gamit ang ID at literal na English text:
formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'})o<FormattedMessage id='…' defaultMessage='…'/>. Ang English na ipapakita sa app ay galing sadefaultMessage. - Patakbuhin ang
make i18n-extractsawebapp/(onpm run i18n-extractsawebapp/fusionowebapp/channels). Ito ay inu-update angsrc/i18n/en.jsonng package na iyon. - Punan ang
descriptionng bagong entry saen.json: saan lumalabas ang string at paano ito ginagamit. Ito ang konteksto na ginagamit ng mga translator, tao o makina.
Ang npm run i18n-extract:check ay mababigo kapag ang en.json ay hindi na up-to-date sa code.
Pagdaragdag ng string sa server
- Gumamit ng ID sa code, halimbawa
model.NewAppError(…, "app.community_attributes.invalid.app_error", …)oi18n.T("…"). - Patakbuhin ang
make i18n-extractsaserver/. Idadagdag nito ang ID saserver/i18n/en.jsonsa tamang pagkakasunod. - Isulat ang English
translationatdescriptionng bagong entry.
Ibang mga wika
Bawat wika ay may sariling file katabi ng en.json (fr.json, pt-BR.json, zh-TW.json…). Para mag-report ng maling pagsasalin, buksan ang isang issue sa community repository na may wika, text, at kung saan ito lumalabas.
Ang mga kasamang app ay nagpapanatili ng kanilang mga string sa webapp/i18n/; tingnan ang Translations sa pahina ng apps.
Dokumentasyon at website na ito
Ang website na ito at ang dokumentasyon nito ay nasa antimatter.chat repository. Ang mga pahina ay mga HTML fragment sa src/pages/; ang python3 src/build.py ang nagbu-build ng site. Ang mga pagtutayo at kulang na paliwanag ay malugod na tinatanggap bilang mga issue o pull request.
Mga problema sa seguridad
Iulat ito nang pribado gamit ang private vulnerability reporting ng GitHub: buksan ang Seguridad tab ng affected repository (halimbawa, ang server) at piliin ang Report a vulnerability. Kung hindi alam kung alin ang affected repository, iulat ito sa community repository. Isama ang component at version nito, ang maaaring gawin ng attacker, kung paano ito ma-reproduce, at ang anumang configuration na nakadepende dito.
Sasagutin ito ng mga maintainer, mananatili kang na-update habang nilalutas ito, at ilalabas ang advisory kapag lumabas na ang fixed release. Paki-bigyan sila ng makatwirang oras bago ilahad ang problema. Ang mga solusyon ay idadagdag sa pinakabagong release. Ang buong policy ay nasa security policy.
Mga Lisensya
- Ang server ay nasa ilalim ng GNU Affero General Public License v3.0 (AGPL v3). Sa parehong repository, ang mga admin tools at configuration files (
server/templates/,server/i18n/,server/public/atwebapp/) ay nasa ilalim ng Apache License 2.0. Tingnan angLICENSE.txtatNOTICE.txt. - Mga App: Ang mga sariling app ng Antimatter, tulad ng Polls, ay nasa ilalim ng AGPL v3; ang mga app na fork mula sa Mattermost ay panatilihin ang orihinal na lisensya. Bawat repository ay sinasabi kung alin sa
LICENSEfile nito. - Ang desktop at mobile apps ay nasa ilalim ng Apache License 2.0. Ang Docker repository ay nasa ilalim ng Apache License 2.0, maliban sa
Dockerfile, na nasa ilalim ng AGPL v3.
Ang ibig sabihin ng AGPL ay kung gagawin mong tumakbo ang modified na Antimatter server para sa iba sa pamamagitan ng network, dapat mong ibigay sa kanila ang source code ng iyong mga pagbabago. Ang Antimatter ay batay sa Mattermost; hindi ito may kaugnayan o pinapansin ng Mattermost, Inc.
Ang lahat ng nakikilahok ay sumusunod sa code of conduct.