Necə İştirak Etmək
React, Facebook-un aktiv təkmilləşmədə olan və facebook.com-da olan bütün istifadəçilər tərəfindən yüklənilən ilk open source layihələrdən biridir. Biz, bu layihədə iştirak etməyin asan və şəffaf olması üzərində işləyirik. Lakin, biz hələdə istəyimizə tam çatmamışıq. Arzu edirik ki, bu sənəd iştirak etmək prosesini aydınlaşdırır və sizin bəzi suallarınızı cavablandırılır.
Davranış Qaydaları
Facebook, Contributor Covenant-ı öz Davranış Qaydaları kimi adaptasiya etdiyindən biz layihə iştirakçılarının bu qaydalara riayət edəcəyini gözləyirik. Hansı hərəkətlərin dözülüb dözülməyəcəyini anlamaq üçün bütün mətni oxumağınız xahiş olunur.
Açıq Təkmilləşmə
React üzərində işlənilən bütün işlər GitHub-da baş verir. Həm core komandanın üzvlərinin, həm də xarici iştirakçıların pull request-ləri eyni rəy prosesindən keçirilir.
Semantik Versiyalama
React, semantik versiyalamadan istifadə edir. Biz, pəç versiyalarında kritiki baq düzəlişlərini, kiçik versiyalarda yeni xüsusiyyətləri, böyük versiyalarda isə pozucu dəyişiklikləri dərc edirik. Pozucu dəyişiklik olduqda istifadəçilərin gəcələk dəyişikliklərdən xəbəri olmasını və öz kodlarını öncədən miqrasiya etmələri üçün biz kiçik versiyalarda köhnəlmə xəbərdarlıqları əlavə edirik. Bizim stabilliyə və inkremental miqrasiyaya öhdəliyimiz haqqında məlumat almaq üçün bizim versiya qaydalarımızı oxuyun.
Hər bir mühüm dəyişiklik changelog faylında sənədləşdirilir.
Branch Orqanizasiyası
Bütün dəyişiklikləri main branch
-inə göndərin. Biz təkmilləşmə və gələcək buraxılışlar üçün ayrı branch-lər işlətmirik. Biz, main
-in hər zaman yaxşı formada qalması və bütün testlərin keçməsi üçün əlimizdən gələni edirik.
main
-ə çatan kod ən yeni stabil versiya buraxılışı ilə işləməlidir. Burada, əlavə xüsusiyyətlər ola bilər. Lakin, pozucu dəyişikliklər ola bilməz. Biz main
-dən istədiyimiz zaman yeni kiçik versiya dərc edə bilməliyik.
Xüsusiyyət Flaqları
main
branch-ini buraxılışa hazır vəziyyətdə saxlaya bilmək üçün bütün pozucu dəyişikliklər və eksperimental xüsusiyyətlər “xüsusiyyət flaqı” ilə gizlədilir.
Xüsusiyyət flaqları packages/shared/ReactFeatureFlags.js
faylında təyin edilir. React-in fərqli qurulmaları fərqli xüsusiyyət flaqlarını aktiv edir. Məsələn, React Native qurulması React DOM qurulmasından fərqli konfiqurasiyada olunur. Bu flaqları packages/shared/forks
direktoriyasından tapa bilərsiniz. Xüsusiyyət flaqlarına Flow ilə statik tiplər əlavə edilir. Bu səbəbdən, lazımi faylların yenilənməsini təsdiqləmək üçün yarn flow
əmrindən istifadə edə bilərsiniz.
React-in qurma sistemi React-i dərc etməmişdən öncə deaktiv edilmiş bütün xüsusiyyətləri siləcək. Continuous integration işi hər commit-dən sonra paket ölçüsünü yoxlayır. Siz ölçüdə baş verən dəyişiklik əsasında xüsusiyyətin düzgün gizlədildiyindən əmin ola bilərsiniz.
Baqlar
Bilinən Problemləri Haradan Tapmaq Olar
Biz açıq baqlar üçün GitHub Issues-dan istifadə edirik. Biz bu baqlara yaxından baxır və daxili düzəlişin üzərində işləndiyini zaman bunu göstərməyə çalışırıq. Yeni issue əlavə etmədən öncə probleminizin artıq mövcud olmadığından əmin olun.
Yeni Problemlərin Göndərilməsi
Baqınızın düzəldilməsinin ən yaxşı yolu baq üçün kiçik demo göstərməkdir. Başlanğıc üçün bu JSFiddle şablonundan istifadə edə bilərsiniz.
Təhlükəsizlik Baqları
Təhlükəsizlik baqlarının təhlükəsiz şəkildə bildirilməsi üçün Facebook-un bounty proqramı var. Bunu nəzərə alaraq xahiş edirik ki, təhlükəsizlik baqlarını açıq issue kimi göndərməyin. Baqları səhifədə göstərilən proses ilə göndərin.
Bizimlə Əlaqə
Əgər sizə React ilə bağlı kömək lazımdırsa, bizim React istifadəçilərindən ibarət olan Discord çat platformasında yerləşən cəmiyyətimizə müraciət edə bilərsiniz.
Dəyişikliyi Təklif Edin
Açıq API-ı dəyişmək və ya tətbiqə kiçik olmayan dəyişikliklər etmək istəyirsinizsə, biz issue göndərməyi tövsiyyə edirik. Burada, təklifiniz üzərində çox zəhmət çəkmədən öncə bir razılığa gəlməyimiz mümkündür.
Əgər baq düzəlişi edirsinizsə, yalnız PR göndərə bilərsiniz. Lakin, biz yenə də nəyi düzəltdiyiniz haqqında issue göndərməyi tövsiyyə edirik. Bu, sizin düzəlişinizi qəbul etmədiyimiz amma yenə də problemi izləmək istədiyimiz hallar üçün faydalıdır.
İlk Pull Request
İlk Pull Request-iniz üzərində işləyirsiniz? Bunu necə etmək haqqında öyrənmək istəyirsinizsə, göstərilən pulsuz video seriyasına baxa bilərsiniz:
Github-da Yerləşən Open Source Layihələrdə Necə İştirak Etmək Olar
Sizi bizim iştirak etmək prosesimiz ilə tanış etmək üçün məhdudlu əhatə dairəsi olan baqlardan ibarət yaxşı ilk problemlər siyahımıza baxmağı tövsiyyə edirik.
Problemi düzəltmək istədiyiniz zaman kiminsə düzəliş üzərində işlədiyini bilmək üçün kommentləri oxuyun. Əgər düzəliş üzərində heç kim işləmirsə, bunun üzərində işləmək istədiyinizi komment ilə bildirin ki, başqaları sizin zəhmətinizin kopiyasını etməsinlər.
Əgər kimsə problemi götürdükdən sonra iki həftə ərzində heç bir yenilik etməyibsə, siz bu issue-nu özünüzə götürə bilərsiniz. Lakin, yenə də bunun üzərində işləmək istədiyinizi komment ilə bildirməyi unutmayın.
Pull Request-in Göndərilməsi
Pull request-ləri core komandası izləyir. Biz, sizin pull request-inizə baxıb ya PR-ı biləşdirəcək, ya bu PR-a dəyişikliklərin ediləcəyini bildirəcək, yada ki bu PR-ı izahatlı bağlayacağıq. API dəyişiklikləri olduqda biz Facebook.com-da daxili düzəlişlər etməli ola bilərik. Bu səbəbdən bu biraz vaxt ala bilər. Biz yeniliklər verməyə və proses zamanı rəylərimi bildirməyə çalışacağıq.
Pull request göndərməmişdən öncə aşağıdakı addımları atmağınızı xahiş edirik:
- repo-nu fork edib
main
-dən branch yaradın. - Repo-nun ana direktoriyasından
yarn
əmrini çağırın. - Əgər baq düzəlişi etmisinizsə və ya test edilməli kod əlavə etmisinizsə, testlər əlavə edin!
- Test dəstinin uğurlu keçdiyindən əmin olun (
yarn test
). Məsləhət: Təkmilləşmə zamanıyarn test --watch TestName
formalı əmr çağırmaq faydalıdır. - Testləri produksiya mühitində yoxlamaq üçün
yarn test --prod
əmrini icra edin. - Əgər sizə debaqqer lazımdırsa,
yarn test --debug --watch TestName
əmrini icra edin,chrome://inspect
səhifəsini açın və “Inspect” düyməsini tıklayın. - Kodunuzu prettier ilə format edin (
yarn prettier
). - Kodunuzun lint olduğundan əmin olun (
yarn lint
). Məsləhət: yalnız dəyişən faylları yoxlamaq üçünyarn linc
əmrini icra edin. - Flow tip yoxlamalarını icra edin (
yarn flow
). - CLA-i doldurun (əgər etməmisinizsə).
İştirakçı Lisenziyası Müqaviləsi (CLA)
Pull request-i qəbul edə bilməmiz üçün CLA-ı imzalamanız lazımdır. Siz bunu bir dəfə etməlisiniz. Əgər Facebook-un digər open source layihəsində imzalamısınızsa, sizə yenidən imzalamaq lazım deyil. Əgər pull request-i ilk dəfə göndərirsinizsə, CLA-i doldurduğunuzu bizə bildirin ki, biz müqaviləni sizin Github istifadəçi adınız ilə yoxlaya bilək.
İştirak Etmək üçün Ön Şərtlər
- Node-un v8.0.0+ versiyasını və Yarn-ın v1.2.0+ versiyasını yükləyin.
- JDK-i yükləyin.
gcc
-in yükləndiyinizdən və ya lazım olduqda kompilyatoru yükləməkdə probleminizin olmadığından əmin olun. Bəzi asılılıqlara kompilyasiya addımı lazım ola bilər. macOS-da Xcode Command Line Tools-u yükləmək bəsdir. Ubuntu-daapt-get install build-essential
əmri ilə lazımi paketləri yükləyə bilərsiniz. Digər Linux disto-larında buna oxşar əmrlər var. Windows-da bir neçə əlavə addım etmək lazımdır. Əlavə məlumat üçünnode-gyp
-nin yükləmə təlimatlarına baxın.- Git ilə tanışlığınız olmalıdır.
Təkmilləşmə İş Axını
React-i clone etdikdən sonra yarn
əmrini çağıraraq asılılıqları yükləyin.
Bundan sonra bir neçə əmri icra edə bilərsiniz:
yarn lint
kod stilini yoxlayır.yarn linc
əmriyarn lint
əmrinə bənzəyir, amma yalnız branch-də dəyişən faylları yoxladığından daha tez işləyir.yarn test
bütün test dəstini yoxlayır.yarn test --watch
interaktiv test gözətçisini başladır.yarn test --prod
əmri, testləri produksiya mühitində icra edir. Bu əmryarn test
əmri ilə eyni parametrləri dəstəkləyir.yarn test <pattern>
fayl adları uyğun gələn testləri icra edir.yarn debug-test
əmri debaqqeri olanyarn test
əmridir.chrome://inspect
səhifəsini açıb “Inspect” düyməsini tıklayın.yarn flow
əmri Flow tip yoxlamalarını başladır.yarn build
əmri bütün paketləri saxlayanbuild
direktoriyasını yaradır.yarn build react/index,react-dom/index --type=UMD
əmri React və ReactDOM üçün UMD qurmalarını yaradır.
Dəyişikliyiniz zamanı heç bir reqressiyaların olmaması üçün yarn test
(və ya yuxarıdakı variasiyalarını) icra etməyi tövsiyyə edirik. Lakin, React qurulmasını real layihədə işlətmək də faydalı ola bilər.
İlk öncə, yarn build
əmrini icra edin. Bu, qurulan paketləri build
direktoriyasında, npm paketlərini isə build/packages
direktoriyasında yaradacaq.
Dəyişiklikləri yoxlamağın ən asan yolu yarn build react/index,react-dom/index --type=UMD
əmrini çağırıb fixtures/packaging/babel-standalone/dev.html
səhifəsini açmaqdır. Bu fayl, build
direktoriyasında olan react.development.js
faylından istifadə edir.
Dəyişiklikləri mövcud React layihəsində sınamaq istədikdə build/node_modules/react/umd/react.development.js
, build/node_modules/react-dom/umd/react-dom.development.js
və digər qurulma məhsullarını applikasiyaya köçürüb stabil versiyalar əvəzinə bu versiyaları işlədin.
Əgər layihənizdə React-i npm-dən yükləyirsinizsə, siz react
və react-dom
asılılıqlarını silib yarn link
ilə bu asılılıqlar lokal build
direktoriyasına yönləndirin. Nəzərə alın ki, **qurulma zamanı --type=UMD
əvəzinə --type=NODE
parametrindən istifadə etməlisiniz. Əlavə olaraq scheduler
paketini də quraşdırmalısınız:
cd ~/path_to_your_react_clone/
yarn build react/index,react/jsx,react-dom/index,scheduler --type=NODE
cd build/node_modules/react
yarn link
cd build/node_modules/react-dom
yarn link
cd ~/path/to/your/project
yarn link react react-dom
yarn build
əmrini React direktoriyasında icra etdikdə yeni versiyalar layihənin node_modules
direktoriyasında görünəcək. Siz, layihənizi bu dəyişikliklər ilə yenidən qurun.
Əgər hər hansı bir paket əskikdirsə (məsələn, layihənizdə react-dom/server
işlədirsinizsə), siz yarn build
ilə tam qurulma əməliyyatını icra edə bilərsiniz. Nəzərə alın ki yarn build
əmrini parametrlərsiz icra etdikdə bu əmr uzun zaman çəkə bilər.
Biz, yeni xüsusiyyətlər üçün pull request-də testlərin olmasını tələb edirik. Bu yol ilə, biz gələcəkdə sizin kodunuzun sınmayacağını təmin edə bilirik.
Stil Təlimatları
Biz, Prettier adlı avtomatik kod format edicisindən istifadə edirik.
Kodunuza etdiyiniz dəyişikliklərdən sonra yarn prettier
əmrini çağırın.
Sonra, kodunuzda olan bir çox problemləri tuta biləcək.
Kod stilinini statusunu yoxlamaq üçün yarn linc
əmrini icra edin.
Lakin, bəzi stilləri linter tutmaya bilər. Əgər nədənsə əmin deyilsinizsə, Airbnb-nin Stil Təlimatlarına baxın.
Kommentlər üçün Sorğu (RFC)
Baq düzəlişləri və sənəd təkmilləşdirmələri daxil olmaqla bir çox dəyişiklikləri normal Github pull request iş axını ilə tətbiq edib yoxlamaq mümkündür.
Lakin, bəzi dəyişikliklərin daha böyük ola bildiyindən biz bunların xüsusi dizayn prosesindən keçməsini və React core komandasında razılıq yaratmasını istəyə bilərik.
“RFC” (ingiliscə, request for comments; kommentlər üçün sorğu) prosesi yeni xüsusiyyətlərin layihəyə daxil olması üçün ardıcıl və idarə olunan yoldur. Siz, “rfcs” repo-sunda iştirak edə bilərsiniz.
Lisenziya
React layihəsində iştirak etdikdə siz bütün tövfələrinizin MIT lisenziyası ilə lisenziyalanması ilə razılaşırsınız.
Sırada Nə Var?
Kodun necə orqanizə olduğu haqqda öyrənmək üçün sonrakı bölməni oxuyun.