Upstreaming می تواند کد شما را بهبود بخشد، توسعه را ساده کرده و بار تعمیر و نگهداری شما را کاهش دهد. هنگام اهدای کد از این بهترین شیوه ها پیروی کنید و از مزایای آن بهره مند شوید.
کد معمولاً از یک پروژه منبع باز به سمت محصولات خود سازمان جریان می یابد. Upstreaming فرآیند معکوس کردن آن جریان است—کد کمک بازگشت به یک پروژه منبع باز. ارزش پیشنهادی upstreaming شامل استفاده از قدرت یک جامعه منبع باز برای بررسی کد، یافتن و رفع مشکلات، و افزودن ویژگیهای خاص خود است که باعث میشود کد برای همه افرادی که از آن استفاده میکنند ارزشمندتر شود.
بهعنوان شخصی که سالها عمیقاً با پروژههای منبع باز درگیر بودهام، کدی را به متنباز متعهد کردهام. پروژه سیستم عامل FreeBSD بیش از یک دهه است که برای دو دوره در تیم اصلی آن پروژه خدمت کرده است و در open مشارکت داشته است. منبع ZFS، و دو کتاب در مورد ZFS نوشتهام—من سازمانهای بیشماری را دیدهام که با چالشها روبرو شدهاند و از مزایای قابلتوجه بالادستی بهره بردهاند. به طور خلاصه، کد ارائه شده که بخشی از یک پروژه منبع باز خط اصلی می شود، تعمیر و نگهداری مشترک، توسعه فعال و توسعه را دریافت می کند، با سایر اعضای جامعه که اغلب ارزشی را اضافه می کنند که بسیار فراتر از مشارکت اولیه است.
در واقع، Upstreaming نحوه معرفی بیشتر ویژگیهای جدید اصلی به پروژههای منبع باز مانند FreeBSD و ZFS و بسیاری دیگر است. بیایید به مزایای خاص upstreaming و بهترین روشها برای باز کردن مستقیم مزایای آن نگاه کنیم.
مزایای upstreaming
تعهد به بالادستی منجر به کد با کیفیت بالاتر، فرآیند توسعه سادهتر، کاهش بار تعمیر و نگهداری و پایداری بیشتر پروژه میشود.
کد با کیفیت بالاتر
توسعه کد با هدف بالادستی آن به عنوان یک تابع اجباری برای کیفیت عمل می کند. برای تیمهای توسعه و رهبرانی که باید دائماً در برابر ذهنیتهای «فقط کد را از در بیرون بگیرید» و «اگر کد زشت باشد خوب است زیرا هیچکس آن را نمیبیند» مقاومت کنند، تعهد به بالادستی و انجام فرآیند بازبینی بالادستی، امکانی غیرقابل انکار را فراهم میکند. نرده محافظ.
در همان زمان، وقتی کد شروع به توسعه میکند که برای چشمهای داخلی و استفاده داخلی در نظر گرفته شده است، سپس باید کلیات را بعداً مشخص کرد، نتیجه معمولاً ویژگیهای رضایتبخش کمتر (و بار تعمیر و نگهداری بیشتر) در آینده است. پایبندی به شیوههای کدگذاری بالادستی و الزامات سبک در طول توسعه منجر به کد با کیفیت بسیار بالاتر میشود – کدی که برای ارائه ارزش نه تنها در یک سازمان بلکه برای همه ساخته شده است.
توسعه آسانتر
یکی از بزرگترین چالشهای استفاده از فناوریهای منبع باز زمانی پدیدار میشود که سازمانها به جای آخرین نسخه، در توسعه نسخه نرمافزار متنبازی که در حال حاضر استفاده میکنند (که میتواند چندین سال از عمر آن گذشته باشد) اشتباه میکنند. این تمرین ناکارآمد (اگر نه کاملاً بیاثر) به معنای تغییر پایه برای رسیدن به سایر تغییرات نرمافزاری است که ممکن است بر ویژگی جدید شما تأثیر بگذارد و با تمام بدهیهای فنی که عقب افتادن ایجاد میکند مواجه شوید.
توسعه برای آخرین نسخه اصلی نرمافزار متنباز و پس از آن بکپورت کردن در صورت لزوم تضمین میکند که فرآیند بالادستی با تغییراتی که در طول توسعه رخ میدهند گرفتار نمیشود و در نهایت به معنای کار بسیار کمتری است زیرا شما اینطور نیستید. تلاش برای بازپایی در برابر هدفی که به سرعت در حال حرکت است.
نگهداری کمتر
باز هم، سازمانهایی که ویژگیهای جدیدی را بر روی یک شاخه محلی قدیمیتر نرمافزار متنباز ایجاد میکنند و سپس تلاش میکنند تا نسخه جدیدتر را بالادست کنند، معمولاً با مشکل مواجه میشوند زیرا به تخصص موضوعی در همه زمینههای نرمافزاری که تغییر کردهاند نیاز دارند. در طول آن دوره در دسترس بودن تخصص یک چالش کلیدی بالادستی است. به عنوان مثال، تیم توسعهدهندهای که هنوز از نزدیک با سیستم عامل FreeBSD آشنا نیست، رسیدگی به تمام سطحی که توسط تغییرات بالادستی تحت تأثیر قرار میگیرد را دشوار میبیند تا قبل از اینکه بتوانند در بالادست کد خود را به خط اصلی برسانند. پچ آنها تغییر می کند.
تعهد به upstreaming از ابتدا باعث میشود تمرکز بسیار بیشتری بر روی کاری که وصله شما در واقع انجام میدهد، که احتمالاً در چرخدار موضوع شما انجام میدهد، میدهد. هنگامی که تغییرات در بالادست و بخشی از نرم افزار منبع باز اصلی یکپارچه شدند، تعمیر و نگهداری دیگر مشکل شما به تنهایی نیست. این یک تلاش جمعی است.
پایداری پروژه
با مشارکتهای بالادستی که توسط انجمن حفظ میشود، ویژگیهای جدید کاربران بیشتر و مشارکتهای بیشتری را جذب میکنند. این چرخه با فضیلت، پروژههای منبع باز، جوامع، و عملکرد نرمافزار مؤثر را به نفع بیشتر شما رشد میدهد.
بهترین شیوهها برای آپلود کردن یک وصله
بر اساس تجربه من در آپدیت کردن وصلهها به پروژههای منبع باز، فرآیندی که در زیر توضیح داده شده است نمای کلی از نحوه موفقیت آمیز کردن یک ویژگی را ارائه میدهد.
مرحله ۱: پچ نامزد را ایجاد کنید
نکته مهم، باید مطمئن شوید که پچ شما به طور کلی برای سایر کاربران پروژه ای که در آن مشارکت می کنید مفید و ارزشمند است. این یک تمرین عالی برای کدهای بالادستی نیست که بیش از حد مختص برنامه شما هستند و برای دیگران ارزش کمی دارند. این فقط پرتاب کد روی دیوار است و امیدواریم که شخص دیگری آن را حفظ کند. گسترش یک ویژگی برای ارائه ارزش کلی میتواند کار بیشتری را ببرد، اما این سودمندی برای کیفیت مشارکت شما و پاسخ جامعه ضروری است.
این منجر به چالش کلیدی دیگری در بالادستی می شود: حمایت. موفقیت بخشیدن به ویژگی مشارکتی شما مستلزم هیجان جامعه است. آنها باید درک کنند که چرا باید آن را بپذیرند و چگونه می توانند از آن بهره مند شوند. شناخت خوب جامعه و درگیر شدن زودهنگام (حتی قبل از توسعه) برای درک نیازهای دیگران، راه درازی برای غلبه بر این چالش دارد. هرچه بیشتر از کد بالادستی شما استفاده شود، احتمال رشد و گسترش آن بیشتر خواهد بود (در مقابل حذف یا منسوخ شدن در جاده). مشارکت اغلب تنها مهمترین عاملی است که تعیین میکند در کجا تلاش نگهداری جامعه اعمال شود.
مرحله ۲: ارسال وصله برای بررسی توسط سایر مشارکت کنندگان بالادست
مستندات کافی برای استفاده دیگران از کد ارائه دهید، همراه با آزمایشاتی که تضمین میکند کد شما سایر ویژگیها را خراب نمیکند، و هرگونه رگرسیون در عملکرد ویژگی شما ناشی از تغییرات دیگر شناسایی میشود. طبیعتاً، توضیح واضحی از پچ خود نیز درج کنید، توضیحی که هدف و ارزش آن را برای بازبینان توضیح دهد.
سایر مشارکتکنندگان در بالادست، وصله شما را بررسی کرده و بازخورد ارائه میکنند، که باید به طور مناسب به آن رسیدگی کنید.
مرحله ۳: بازبینان پچ را در شاخه بالادستی ادغام می کنند
این وصله ممکن است به شاخه یا شاخه های پایدار نرم افزار منبع باز ادغام شود. نسخه های بعدی نرم افزار بالادستی شامل تغییرات شما خواهد بود. حمایت از بکپورتها به شاخههای پایدار و کمک به حفظ آنها کمک میکند تا اطمینان حاصل شود که این بکپورتها برای محصولات شما که از آن شاخههای پایدار استفاده میکنند در دسترس هستند و مسیر ارتقای آسانی در آینده خواهید داشت.
ذهنیت “اول بالادست” را اتخاذ کنید
Upstreaming سازمان شما را مجبور میکند تا کدی ایجاد کند که نه تنها برای استفاده داخلی به اندازه کافی خوب است، بلکه به اندازه کافی برای خدمت به کل جامعه منبع باز و کسب حمایت پایدار آنها خوب است. با طراحی ویژگیهایی که بهطور مؤثر به نیازهای جامعه و همچنین نیازهای شما پاسخ میدهند، فرآیند بالادستی و بررسی بسیار آسانتر میشود و ویژگیهایی که سازمان شما بر آنها تکیه میکند میتواند بسیار فراتر از آنچه تیم شما به تنهایی انجام دهد، رشد و شکوفا شود. این قدرت منبع باز است.
پست های مرتبط
نحوه کدهای upstream برای پروژه های منبع باز
نحوه کدهای upstream برای پروژه های منبع باز
نحوه کدهای upstream برای پروژه های منبع باز