பங்களிப்பு

பிளக் அறிக்கைகள், யோசனைகள், மொழிபெயர்ப்புகள், ஆவணப்படுத்தல் மற்றும் குறியீடு ஆகியவை அனைத்தும் வரவேற்கப்படுகின்றன. இந்தப் பக்கம் எங்கே பேச வேண்டும், ஒரு மாற்றத்தை எப்படி அனுப்ப வேண்டும், குறியீடு பின்பற்றும் வழக்கங்கள், மற்றும் பாதுகாப்பு பிரச்சினைகள் மற்றும் உரிமங்களுக்கான விதிகள் ஆகியவற்றை விளக்குகிறது.

எங்கே பேச வேண்டும்

Antimatter-இன் எந்தப் பகுதியைப் பற்றியது என்பதைப் பொருட்படுத்தாமல், அனைத்தும் சமூக சேமிப்பகத்தில் தொடங்குகின்றன:

  • பிளக் மற்றும் சேவை கோரிக்கைகள்: ஒரு பிரச்சினையைத் திறக்கவும் மற்றும் பிளக் அறிக்கை, சேவை கோரிக்கை, அல்லது பிளக் அல்லது ஒருங்கிணைப்பு கோரிக்கை ஆகியவற்றில் ஒன்றைத் தேர்ந்தெடுக்கவும். முதலில் ஏற்கனவே உள்ள பிரச்சினைகளைத் தேடுங்கள்; உங்கள் பிரச்சினை அங்கு இருந்தால், 엄ுத்காட்டியைச் சேர்க்கவும் அல்லது உங்கள் விவரங்களைச் சேர்க்கவும்.
  • கேள்விகள் மற்றும் யோசனைகள்: விவாதங்கள், கேள்வி-பதில் அல்லது யோசனைகள் வகைகளில்.
  • ஒரு பெரிய மாற்றத்திற்கு முன், முதலில் அணுகுமுறையை ஒப்புக்கொள்ள ஒரு பிரச்சினையை அல்லது விவாதத்தைத் திறக்கவும். இது இப்படி இருப்பதால் இணைக்க முடியாத ஒரு ஈர்ப்பு கோரிக்கையை சேமிக்கிறது.

good first issue மற்றும் help wanted என குறிக்கப்பட்ட பிரச்சினைகள் தொடங்குவதற்கு நல்ல இடங்கள். நீங்கள் ஒன்றில் பணியாற்றுகிறீர்கள் என்பதை ஒரு கருத்தில் குறிப்பிடவும். புதிய பிரச்சினைகள் முதலில் status/triage என, பின்னர் status/accepted, status/planned அல்லது status/wontfix என குறிக்கப்படும். எது பற்றியதாக இருந்தாலும், பிரச்சினைகள் சமூக சேமிப்பகத்தில் (community repository) இருக்கும்; குறியீட்டு சேமிப்பகங்கள் (code repositories) பிரச்சினைகளை ஏற்காது. திட்டமிடப்பட்ட பணிகள் Antimatter நோக்கீட்டுப் பாதையில் (roadmap) உள்ளன.

சேமிப்பகங்கள் மற்றும் கிளைகள்

குறியீடு AntimatterChat நிறுவனத்தில் உள்ளது; குறியீடு எங்கே உள்ளது சேமிப்பகங்களைப் பட்டியலிடுகிறது. ஒவ்வொரு சேமிப்பகத்திலும்:

  • main இயல்புநிலை கிளையாகும் மற்றும் Antimatter-இன் குறியீட்டைக் கொண்டுள்ளது. அதிலிருந்து கிளை செய்யவும் மற்றும் அதற்கு ஈர்ப்பு கோரிக்கைகளை அனுப்பவும்.
  • Mattermost-இலிருந்து பிரித்தெடுக்கப்பட்ட சேமிப்பகங்களும் upstream கிளையைக் கொண்டுள்ளன, Mattermost-இன் மாற்றங்களைக் கொண்டுவரப் பயன்படுத்தப்படும் Mattermost-இன் குறியீட்டின் பிரதி. அதன் அடிப்படையில் வேலை செய்ய வேண்டாம்.

ஒவ்வொரு சேமிப்பகத்தின் README-யும் அதை எப்படி உருவாக்கவும் மற்றும் சோதிக்கவும் என்பதை விளக்குகிறது. சர்வர் மற்றும் வலை இடைமுகங்களுக்கு, மூலத்திலிருந்து உருவாக்குதல் பார்க்கவும்; செயலிகளுக்கு, உருவாக்குதல், நிறுவல் மற்றும் பிழை நீக்குதல் பார்க்கவும்.

ஈர்ப்பு கோரிக்கைகள்

  1. ரெபொசிட்டரியை Fork செய்து main இலிருந்து ஒரு branch உருவாக்குங்கள்.
  2. ஒவ்வொரு pull request-ஐயும் ஒரு மாற்றத்திற்கு மட்டுமே வரையறுக்கவும். சிறிய pull request-கள் வேகமாக மதிப்பாய்வு செய்யப்படுகின்றன.
  3. உங்கள் சுற்றிலுள்ள குறியீட்டின் பாணியைப் பின்பற்றவும், பொருத்தமான இடங்களில் tests-களைச் சேர்த்து அல்லது புதுப்பிக்கவும்.
  4. என்ன மாற்றியீர்கள், ஏன் மாற்றியீர்கள் என்பதை விவரித்து, அது திருத்தும் issue-ஐ இணைக்கவும்: Fixes AntimatterChat/community#123.
  5. checks-கள் வெற்றிகரமாக முடிவடைவதை உறுதிசெய்யவும். ஒரு maintainer pull request-ஐ மதிப்பாய்வு செய்து, மாற்றங்களைக் கோடலாம்.

சர்வர் ரிபொசிட்டரியில், புல் ரிக்ஸெஸ்ட் டெம்பிளேட்டை நிரப்பவும்: சுருக்கம், மற்றும் எப்போதும் இருக்க வேண்டிய Release Note பகுதி. மாற்றம் எந்த API, அமைப்பு, தரவுத்தள ஸ்கீமாவையோ அல்லது தெரியும் செயல்பாட்டையோ தொடர்புபடுத்தவில்லை என்றால், அதில் NONE என்று எழுதவும்.

நீங்கள் பங்களிப்பதன் மூலம், நீங்கள் பங்களிக்கும் repository-இன் licence-க்கு உங்கள் பங்களிப்பு உடன்படுகிறீர்கள் என்பதை ஏற்கிறீர்கள்.

Commits மற்றும் குறியீட்டு பாணி

Commits

வரலாற்றில் உள்ள commit messages-கள், என்ன மாற்றம் நடக்கிறது என்பதைக் குறிக்கும் ஒரு குறுகிய வாக்கியமாக இருக்க வேண்டும்; sentence case-இல், இறுதியில் full stop இல்லாமல். ஒரு பகுதியில் செய்யப்படும் மாற்றங்கள் அதன் பெயரால் தொடங்கும், எடுத்துக்காட்டாக Fusion: a compact conversation header on phones அல்லது Server: community attributes, and admin-only user attributes. ஒரு மாற்றத்திற்கு ஒரு commit; தெளிவாக இல்லாத காரணங்களை body-இல் விளக்கவும்.

Server (Go)

  • push செய்வதற்கு முன் server/ இல் make check-style ஐ இயக்கவும்.
  • go mod tidy ஐ நேரடியாக இயக்க வேண்டாம்; make modules-tidy ஐ இயக்கவும்.
  • request paths-இல், request-இன் logger-ஐப் பயன்படுத்தி log செய்யவும். store layer-இல், request.CTX ஐப் பெறுங்கள், context.Context ஐ அல்ல.
  • புதிய API endpoints-கள் server/channels/api4 இல் இருக்க வேண்டும், அவற்றின் types-கள் server/public/model இல், மற்றும் சாத்தியமெனில் model.Client4 இல் ஒரு method-உடன், TypeScript client-இலும்.

Web interfaces (TypeScript மற்றும் React)

  • webapp/ இல் make check-style மற்றும் make check-types ஐ இயக்கவும்.
  • கிளாசிக் interface webapp/STYLE_GUIDE.md ஐப் பின்பற்றுகிறது: functional components, Redux-க்கு hooks, நிறங்களுக்கு theme variables, accessible markup.
  • Fusion-இன் components-கள் webapp/fusion/src/fusion இல் உள்ளன, அவற்றின் styles-கள் webapp/fusion/src/fusion/styles இல். அவை am() helper-ஐப் பயன்படுத்தி class names-களை உருவாக்குகின்றன மற்றும் Fusion-இன் design tokens-களைப் பயன்படுத்துகின்றன; உங்கள் அருகிலுள்ள கோப்புகளைப் பின்பற்றவும்.
  • apps-களுக்கு புதிய window.* globals-களைச் சேர்க்க வேண்டாம். புதிய app-facing utilities-கள் window.WebappUtils கீழ் இருக்க வேண்டும், webapp/AGENTS.md விளக்குவது போல.
  • பேருநிலைப் பதிவேட்டில் (plugins/registry.ts) செய்யப்படும் மாற்றங்கள் பொதுவாக இரண்டு இடைமுகங்களின் நகல்களிலும் சேர்க்கப்பட வேண்டும்.

மொழிபெயர்ப்புகள்

Antimatter மற்றும் அதனுடன் சேர்க்கப்பட்ட பயன்பாடுகள் 37 மொழிகளில் மொழிபெயர்க்கப்பட்டுள்ளன. பங்களிப்பாளர்கள் ஆங்கில உரைகளைச் சேர்க்கிறார்கள்; மற்ற மொழிகள் தொகுதிகளாகப் புதுப்பிக்கப்படுகின்றன.

வெப் இடைமுகங்களில் ஒரு உரையைச் சேர்ப்பது

  1. அதற்கு ஒரு ID மற்றும் ஒரு நேரடி ஆங்கில உரை (literal English text) கொடுங்கள்: formatMessage({id: 'fusion.channelMenu.settings', defaultMessage: 'Channel settings'}) அல்லது <FormattedMessage id='…' defaultMessage='…'/>. பயன்பாட்டில் காட்டப்படும் ஆங்கில உரை defaultMessage இலிருந்து வருகிறது.
  2. webapp/ இல் make i18n-extract ஐ இயக்குங்கள் (அல்லது webapp/fusion அல்லது webapp/channels இல் npm run i18n-extract ஐ இயக்குங்கள்). இது அந்த தொகுப்பின் src/i18n/en.json ஐப் புதுப்பிக்கும்.
  3. en.json இல் புதிய நுழைவுக்கான description ஐ நிரப்பவும்: அந்த உரை எங்கே தோன்றுகிறது மற்றும் எப்படி பயன்படுத்தப்படுகிறது. மனிதர்களாலும் இயந்திரங்களாலும் மொழிபெயர்க்கப்படும்போது, மொழிபெயர்ப்பாளர்கள் இந்த அடிப்படைத் தகவலையே நம்பிச் செயல்படுகிறார்கள்.

en.json கோடிட்டில் (code) புதுப்பிக்கப்படாத நிலையில் இருந்தால், npm run i18n-extract:check தோல்வியடையும்.

சர்வரில் (server) ஒரு உரையைச் சேர்ப்பது

  1. கோடிட்டில் (code) ஒரு ID ஐப் பயன்படுத்தவும், எடுத்துக்காட்டாக model.NewAppError(…, "app.community_attributes.invalid.app_error", …) அல்லது i18n.T("…").
  2. server/ இல் make i18n-extract ஐ இயக்குங்கள். இது அந்த ID ஐ server/i18n/en.json இல் சரியான வரிசையில் சேர்க்கும்.
  3. புதிய நுழைவுக்கான ஆங்கில translation மற்றும் description ஐ எழுதவும்.

மற்ற மொழிகள்

ஒவ்வொரு மொழிக்கும் en.json ஐ அடுத்து அதன் சொந்த கோப்பு உள்ளது (fr.json, pt-BR.json, zh-TW.json…). தவறான மொழிபெயர்ப்பை அறிவிக்க, மொழி, உரை மற்றும் அது எங்கே தோன்றுகிறது என்பதைக் குறிப்பிட்டு சமூகப் பதிவேட்டில் (community repository) ஒரு பிரச்சினையை (issue) திறக்கவும்.

சேர்க்கப்பட்ட பயன்பாடுகள் (bundled apps) தங்கள் உரைகளை webapp/i18n/ இல் வைத்திருக்கின்றன; பயன்பாடுகள் பக்கத்தில் உள்ள மொழிபெயர்ப்புகள் (Translations) பகுதியைப் பார்க்கவும்.

ஆவணப்படுத்தல் (Documentation) மற்றும் இந்த இணையதளம்

இந்த இணையதளம் மற்றும் அதன் ஆவணங்கள் antimatter.chat பதிவேட்டில் உள்ளன. பக்கங்கள் src/pages/ இல் HTML துண்டுகளாக (fragments) உள்ளன; python3 src/build.py மூலம் இணையதளம் உருவாக்கப்படுகிறது. திருத்தங்கள் மற்றும் விளக்கங்களின் குறைபாடுகளுக்கு பிரச்சனைகள் (issues) அல்லது இழுப்பு கோரிக்கைகள் (pull requests) மூலம் பங்களிக்கலாம்.

பாதுகாப்பு பிரச்சனைகள்

பாதுகாப்பு பிரச்சனையை ஒரு பொதுவான பிரச்சனையில் (public issue), விவாதத்தில் அல்லது இழுப்பு கோரிக்கையில் (pull request) எப்போதும் அறிவிக்க வேண்டாம்.

GitHub-இன் தனியார் பாதுகாப்பு அறிக்கை மூலம் இதை தனியாக அறிவிக்கவும்: பாதிக்கப்பட்ட சேமிப்பு (எடுத்துக்காட்டாக சர்வர்)-இன் பாதுகாப்பு தாவலுக்குச் சென்று பாதுகாப்பு குறைபாட்டை அறிவி என்பதைத் தேர்ந்தெடுக்கவும். எந்தச் சேமிப்பு பாதிக்கப்பட்டது என்று தெரியவில்லை என்றால், சமூகச் சேமிப்பு-இல் அறிவிக்கவும். உங்கள் அறிக்கையில், பாதிக்கப்பட்ட பகுதி மற்றும் அதன் பதிப்பு, தாக்குதல் செய்யும் நபர் என்ன செய்ய முடியும், அதை எப்படி மீண்டும் உருவாக்கலாம், மற்றும் அது எந்த அமைப்புகளைச் சார்ந்துள்ளது என்பவற்றைச் சேர்க்கவும்.

பராமரிப்பாளர்கள் அங்கே பதிலளிக்கிறார்கள், சரிசெய்தல் வேலை நடக்கிறபோது உங்களுக்குப் புதுப்பிப்புகளை அனுப்புகிறார்கள், மற்றும் சரிசெய்யப்பட்ட வெளியீடு வெளியிடப்படும்போது ஒரு அறிவுறுத்தல் (advisory) வெளியிடுகிறார்கள். பிரச்சினையை வெளியிடும் முன், அவர்களுக்கு நியாயமான நேரம் அளிக்கவும். சரிசெய்தல்கள் சமீபத்திய வெளியீட்டில் சேர்க்கப்படுகின்றன. முழு பாதுகாப்புக் கொள்கையும் பாதுகாப்புக் கொள்கை-இல் உள்ளது.

உரிமங்கள்

  • சர்வர் GNU Affero General Public License v3.0 (AGPL v3) உரிமத்தின் கீழ் உள்ளது. அதே சேமிப்பில், நிர்வாகக் கருவிகள் மற்றும் அமைப்புக் கோப்புகள் (server/templates/, server/i18n/, server/public/ மற்றும் webapp/) Apache License 2.0 உரிமத்தின் கீழ் உள்ளன. LICENSE.txt மற்றும் NOTICE.txt கோப்புகளைப் பார்க்கவும்.
  • ஆப்ஸ்: Antimatter-ன் சொந்த ஆப்கள், Polls போன்றவை, AGPL v3-க்குட்பட்டவை; Mattermost-இருந்து பிரித்தெடுக்கப்பட்ட ஆப்கள் அவற்றின் மூல உரிமத்தை வைத்திருக்கும். ஒவ்வொரு ரிபொசிட்டரியும் அதன் LICENSE கோப்பில் எந்த உரிமம் என்பதைக் குறிப்பிடுகிறது.
  • டெஸ்க்டாப் மற்றும் மொபைல் பயன்பாடுகள் Apache License 2.0 உரிமத்தின் கீழ் உள்ளன. Docker சேமிப்பு Apache License 2.0 உரிமத்தின் கீழ் உள்ளது, ஆனால் அதன் Dockerfile AGPL v3 உரிமத்தின் கீழ் உள்ளது.

AGPL என்பது, நீங்கள் மாற்றிய Antimatter சர்வரை நெட்வொர்க் மூலம் மற்றவர்களுக்கு இயக்கினால், உங்கள் மாற்றங்களின் மூலக் குறியீட்டை (source code) அவர்களுக்கு வழங்க வேண்டும் என்பதைக் குறிக்கிறது. Antimatter என்பது Mattermost-இல் அடிப்படையாகக் கொண்டது; Mattermost, Inc. உடன் இது தொடர்புடையதல்ல அல்லது ஆதரிக்கப்படுவதும் அல்ல.

பங்கேற்கும் ஒவ்வொருவரும் நடத்தைக் குறியீடு-யைப் பின்பற்றுகிறார்கள்.