Кіріспе

Бағдарламалық жасақтаманы әзірлеудегі түсінік

Бағдарламалық жасақтаманы әзірлеуде, бағдарламалық жасақтама бұтақталған немесе кітапханалар/тәуелділіктер тізбегін пайдаланған кезде, "upstream" – бұл тізбекке қатысты бағдарламалық жасақтамада туындаған мәселені білдіреді. Бұл бағдарламалық жасақтаманың бастапқы авторларына немесе оны қолдаушыларға бағытталған бағыт. Ол әдетте нұсқа, қате немесе түзету туралы сөз болғанда қолданылады. Upstream-дегі жаңарулар басқа таратуларға болашақ нұсқаны қабылдағанда немесе соңғы (немесе барлық) upstream түзетулерін біріктіргенде одан пайда алуға мүмкіндік береді. Сол сияқты, бастапқы авторлар (upstream-ді қолдаушылар) өздерінің пайдаланушылары түзетулерді upstream-ге жіберсе, оларға арнайы таратудан түскен үлестерден де пайда көруге болады. Бұл термин қателерге де қатысты: егер қате дистрибуцияның порттауы, upstream емес өзгертулері немесе интеграциялау нәтижесінде туындамаса, оның жауапкершілігі upstream-де жатыр деп есептеледі.

Мысалдар

Бағдарламаның бастапқы авторларына немесе күтіп ұстаушыларына жоғары деңгейде жіберілген түзету ұсынылады. Егер қабылданса, авторлар немесе күтіп ұстаушылар түзетуді өз бағдарламаларына бірден немесе келешектегі нұсқада қосады. Егер қабылданбаса, түзетуді ұсынған адам автордың бағдарламасының өз таратылымын күтіп ұстауы керек болады. Upstream репозиторий немесе бастапқы кодты тарату нұсқасы, бұл бастапқы кодқа арнайы жинақталған нұсқа, нақты бір коммит немесе master (соңғы коммит үшін қолданылатын термин) болуы мүмкін. Әдеттегі таратылымдар (мысалы, бұрандалар) жоғары деңгейдегі түзетулерді біріктірмеу нәтижесінде қателерді түзетулер мен жақсартулардан (жобаның бастапқы авторларға байланысты дамуы, upstream) қалып қоюы мүмкін. Мұндай жағдайларда, әдеттегі таратылымдар оны пайдаланушылардың немесе күтіп ұстаушылардың нақты қажеттіліктері мен талаптарына бейімделуі мүмкін. Бұл тәуелділіктерде (сатушы пакеттері) жиі кездеседі, онда алушы бір рет базалық нұсқамен келісіп, уақыт өте келе оған көптеген (кездейсоқ) өзгертулер немесе стандартты емес пайдалануларды жинақтайды, соның салдарынан соңғы жоғары деңгейдегі түзетулерді өз таратылымына біріктіру үшін жаңсақтар мен мүмкіндіктердің үйлесімділігі үшін үлкен жұмыс қажет болады, және өздері шешкен қателердің қайталануын болдырмау (және өздерінің әдісімен), ал жоғары деңгейде де осы қателерді түзетуге арналған түзетулер бар. Көптеген әдеттегі таратылымдарды пайдаланушылар әлі де маңызды жоғары деңгейдегі түзетулерді (мысалы, қауіпсіздік осал тұстарындағы түзетулерді) таңдап алып біріктіреді.