استقرار Swift: آیا آنها سریع هستند یا بی پروا عجله دارند؟

Summarize this content to 400 words in Persian Lang
مقدمه
وقتی صحبت از زبان برنامه نویسی Swift به میان می آید، مخزن Swiftlang/Swift مانند یک کارخانه کد است که هرگز نمی خوابد و به روز رسانی ها را با دقتی که هر توسعه دهنده ای را حسادت می کند، تولید می کند.
با مشارکتهایی که از سوی یک جامعه پر جنب و جوش و درگیر وارد میشود، این مخزن فقط برای ارائه کد نیست. این در مورد انجام آن با ظرافت، ثبات و سرعت است. ما در مورد صدها استقرار در ماه صحبت می کنیم — به طور جدی، بیش از 500 مورد فقط در ماه ژوئن و ژوئیه — برای اطمینان از اینکه زبان سوئیفت واضح و به روز باقی می ماند.
اگر میخواهید جرقه بحثهایی را با رهبران مهندسی دیگر برانگیزید، به انجمن میانه بیرون بروید!
Middleware's Sleuthing: Cracking the SwiftLang Case با سبک یواشکی خانم مارپل
میدلافزار، خانم مارپل درونی خود را هدایت میکند—یک عمه ی حیلهگر و تیزبین که متوجه همه چیز میشود— تصمیم گرفت نگاهی دقیقتر به مخزن SwiftLang/Swift بیندازد. می دانید، روشی که او به طرز ماهرانه ای رازها و قتل ها را در یک مهمانی باغ فاش می کند. ما کنجکاو بودیم: چگونه این انجمن میتواند کدهای با کیفیت بالا را بدون از دست دادن شتاب تولید کند؟
ما عمیقاً حفاری کردیم (البته با یک فنجان چای در دست) و دستور العمل مخفی آنها را کشف کردیم: استقرارهای مکرر و کوچک و جامعه ای که به اندازه خانم مارپل متعهد به کشف whodunit — به جز اینجاست. همه چیز در مورد پیدا کردن و رفع اشکال. ساختار مخزن SwiftLang، گردش کار، و مشارکت کنندگان فعال همه با هم هماهنگ هستند و تضمین می کنند که حتی تغییرات پیچیده آنها را از تعادل خارج نمی کند.
تحقیقات کوچک ما برخی از شیوههای کلیدی را نشان داد که ارزش یادداشتبرداری را دارند — رویههایی که میتوانند الهامبخش رویکرد جدیدی برای افزایش بهرهوری باشند. بنابراین، با ذره بین در یک دست و Middleware OSS در دست دیگر، مشتاق بودیم ببینیم چگونه این بینش ها توسعه را برای همه روان تر می کند.
اما چیزی که واقعاً این مخزن را متمایز می کند، تعهد بی وقفه آن به بهبود مستمر است. مخزن SwiftLang/Swift خواه رفع اشکالات، افزودن ویژگیها یا تشدید امنیت باشد، همیشه در حال تکامل است و همیشه به جلو میرود. بنابراین، دست و پنجه نرم کنید، زیرا این مطالعه موردی به این موضوع می پردازد که چگونه آنها این جادو را در پشت صحنه انجام می دهند.
پیشینه دورا متریک
قبل از اینکه به جزئیات آبدار بپردازیم، بیایید در مورد Dora Metrics صحبت کنیم. اینها KPIهای کلیدی برای اندازه گیری عملکرد و توسعه نرم افزار هستند. چهار بزرگ عبارتند از:
فرکانس استقرار: هر چند وقت یک بار کد ارسال می کنید.
Lead Time for Changes: زمانی که طول می کشد تا کد از commit به تولید برود.
Change Failure Rate: درصد استقرارهایی که کابوم می شوند.
Mean Time to Restore (MTTR): با چه سرعتی میتوانید چیزها را اصلاح کنید وقتی که آنها به حالت کابوم در میآیند.
این معیارها مانند سس مخفی برای فهمیدن اینکه چه چیزی کار می کند و کجا باید بازی خود را تقویت کنید هستند.
یافته های کلیدی
فرکانس استقرار: سلاح مخفی سویفت
اگر چیزی وجود داشته باشد که SwiftLang/Swift ثابت کرده است، آن فرکانس استقرار است. ما به طور متوسط در مورد 330 استقرار در یک دوره صحبت می کنیم — تفکیک به شرح زیر است:
در ماه ژوئن، نینجاهای سوئیفت در حال انتشار کدهایی بودند که انگار فردا وجود نداشت — 556 استقرار!
اما در ماه جولای، آنها کمی نفس کشیدند و یک 528 جامد تحویل دادند.
در ماه اوت، به نظر میرسد که حتی علاقهمندان به سوئیفت ما نیز به مقداری شارژ نیاز داشتند و به 375 استقرار رسیدند.
شاید آنها خیلی مشغول تسلط بر آخرین ویژگیهای سوئیفت بودند یا فقط اجازه میدادند صفحهکلیدشان کمی خنک شود. در هر صورت، ما همچنان به سرعت در حال حرکت هستیم… فقط با چند استراحت قهوه اضافی!
پشت این موتور استقرار با اکتان بالا چیست؟
مشارکت فعال: مخزن پر از فعالیت توسعه دهندگان در سراسر جهان است. فقط نگاهی به روابط عمومی مانند #74178 و #74182 بیندازید — بهبودهای افزایشی در راه است!
گردش کار بدون درز: همه چیز در این مخزن به طور روشمند سازماندهی شده است، از دایرکتوری ها گرفته تا قالب بندی کد. اون فایل با فرمت clang؟ انجام کارهای سنگین برای ثابت نگه داشتن همه چیز است.
مشارکت در جامعه: از افرادی مانند استیون وو و اگور ژدان برای حفظ توپ با بررسیها و بهبودهای منظم فریاد بزنید. هرچه تعداد دست روی عرشه بیشتر باشد، کشتی سریعتر حرکت می کند.
زمان ادغام: پاشنه آشیل
اما هی، همه اش آفتاب و رنگین کمان نیست. زمانهای ادغام در حال افزایش است، و در اینجا به نظر میرسد:
آه، زمانهای ادغام — یکی از بخشهای فرآیند که مانند راه بندان در یک بزرگراه برنامهنویسی صاف است. علیرغم همه استقرارهای با فرکانس بالا و مشارکتهای فعال، اینجاست که کارها کمی کند میشوند. و با “آهسته شدن سرعت” منظورم این است که آن زمانهای ادغام مانند یک پیچش داستانی پر تعلیق است که شما ندیدید که در راه است.
در اینجا خلاصه ای از آنچه اتفاق افتاده است:
ژوئن 2024: همه چیز با میانگین زمان ادغام فقط 1.24 روز به خوبی پیش می رفت. بد نیست، درست است؟
جولای 2024: حتی بهتر — زمان ادغام به 1.18 روز کاهش یافت. مخزن مثل یک ماشین خوب روغن کاری شده بود.
آگوست 2024: و بعد… بم! ما تا 1.46 روز برگشتیم. چه اتفاقی افتاد؟ خوب، زندگی اتفاق افتاد — یا در این مورد، پیچیدگی های کدگذاری و بررسی های کامل.
خب، چه خبر است؟ خوب، معلوم می شود که با به دست آوردن ویژگی ها و تغییرات جاه طلبانه تر جامعه سوئیفت، روند ادغام شروع به کند شدن می کند. می دانید چگونه افزودن این ماده اضافی می تواند یک دستور غذا را عالی کند اما زمان بیشتری را نیز می طلبد؟ اینجا هم همینطوره با بهروزرسانیهای پیچیدهای که نیاز به بررسی عمیقتر و توجه بیشتر به جزئیات دارند، زمان ادغام افزایش مییابد.
این یک معامله کلاسیک است: شما کیفیت می خواهید، باید صبور باشید. بنابراین، در حالی که این زمانهای ادغام ممکن است کمی تنگنا باشد، اما نشانهای از این است که مخزن سوئیفت فقط به خاطر آن کد تولید نمیکند — آنها مطمئن میشوند که هر خط به حساب میآید.
چه چیزی باعث کاهش سرعت کارها می شود؟
بررسی های کامل: طرف مقابل کیفیت زمان است
کیفیت پادشاه است اما دستیابی به آن سطح از کیفیت؟ خوب، زمان، تلاش و توجه زیادی به کد نیاز دارد. اینجاست که بررسیهای کامل وارد عمل میشوند — تضمین میکنند که هر خط کد صیقلی، بدون اشکال و آماده کار است. اما همانطور که هر کسی در این زمینه میداند، هرچه بررسی دقیقتر باشد، بیشتر طول میکشد. و روابط عمومیهایی مانند #74250 و #74208 نمونههای بارز این هستند که چگونه این تعادل بین کیفیت و زمان انجام میشود.
PR #74250: رویکرد لایه ای به بررسی ها
این درخواست کشش هر چیزی جز سرراست بود. این شامل چندین جنبه از پایگاه کد بود و همه چیز را از بهبود عملکرد گرفته تا پیشرفت های امنیتی را لمس می کرد. برای اطمینان از اینکه هیچ چیز از میان شکاف ها نمی لغزد، روند بررسی چند لایه بود — مانند پوست کندن یک پیاز، اما به روشی خوب.
اولین پاس: بررسی های اولیه: دور اول بررسی ها بر روی اصول — قالب بندی کد، پیروی از دستورالعمل های سوئیفت و بررسی های اولیه سلامت متمرکز بود. این مرحله به تنهایی به حل مشکلات جزئی که ممکن است بعداً گلوله برفی شود کمک کرد.
گذر دوم: شیرجه عمیق: دور دوم بررسی ها در مورد غواصی عمیق در منطق بود. بازبینان کد را برای موارد لبه، اشکالات احتمالی و گلوگاه های عملکرد مورد بررسی قرار دادند. اینجا بود که همه چیز جدی شد و همه جزئیات کوچک زیر ذره بین قرار گرفت.
پاس نهایی: امنیت و بهینه سازی: آخرین مرحله بررسی به بررسی های امنیتی و بهینه سازی اختصاص داشت. این امر مستلزم اطمینان از عدم ایجاد آسیبپذیری یا کاهش سرعت سیستم بود. این لایه نهایی پولیش است قبل از اینکه PR چراغ سبز بگیرد.
همه این مراحل با هم جمع شدند و کیفیت عالی را تضمین کردند اما جدول زمانی را نیز افزایش دادند. کد تا پایان آن ضد گلوله بود، اما ساعت قطعاً تیک تاک می کرد.
PR #74208: سمفونی داوران
PR #74208 مجموعه ای از چالش ها را داشت. این یکی شامل تغییراتی بود که بر چندین مؤلفه اکوسیستم سویفت تأثیر گذاشت. به دلیل گستردگی آن، سمفونی منتقدان را به خود جلب کرد که هر کدام تخصص خود را به میز می آورد.
بررسی مشارکتی: با توجه به بسیاری از مؤلفههای تحت تأثیر، این روابط عمومی به ورودی چندین متخصص نیاز داشت — هر کدام در زمینههای مختلفی مانند عملکرد کامپایلر، معنای زبان و رفتار زمان اجرا متخصص هستند. هماهنگ کردن همه این نقدها مانند رهبری یک ارکستر بود — همه باید هماهنگ باشند.
تست متقابل مؤلفهها: بازبینها فقط بر حوزههای خودشان تمرکز نکردند. آنها همچنین باید اطمینان حاصل می کردند که تغییرات به طور هماهنگ در سراسر صفحه کار می کنند. این به معنای آزمایش تعاملات بین اجزای مختلف، کشف مسائلی است که ممکن است در نگاه اول واضح نباشند.
بازخورد تکراری: مانند هر تغییر پیچیده، بازخورد یک مورد یکباره نبود. بازبینان چندین دور بازخورد ارائه کردند و توسعهدهنده در طول مسیر تغییراتی را انجام داد. این فرآیند تکراری به اصلاح کد کمک کرد، اما به معنای رفت و برگشت بیشتر و، حدس زدید، زمان بیشتری نیز بود.
معاوضه: کیفیت در مقابل سرعت
در هر دو PR، بررسیها کامل بود و مشکلات احتمالی را بررسی میکرد و تضمین میکرد که کد با بالاترین استانداردها مطابقت دارد. اما دقیق بودن با هزینه — زمان همراه است. این بررسیها بیش از حد معمول طول کشید، زمانهای ادغام را عقب انداخت و استقرار را به تأخیر انداخت. با این حال، مبادله ارزش آن را داشت: کد محکمی که یکپارچگی زبان سوئیفت را حفظ می کرد.
در پایان، روابط عمومیهایی مانند #74250 و #74208 به ما یادآوری میکنند که اگرچه سرعت مهم است، کیفیت غیرقابل مذاکره است. زمان اضافی صرف شده برای بررسی ها ممکن است خط زمانی را طولانی کند، اما سرمایه گذاری در پایداری و عملکرد طولانی مدت کد است. و در دنیای نرم افزار، این یک معامله ارزش است.
تغییرات پیچیده: آجیل سخت برای شکستن
وقتی نوبت به کدنویسی میرسد، همه درخواستهای کششی یکسان ایجاد نمیشوند. برخی از آنها مانند پیاده روی در پارک هستند — رفع سریع، تغییرات جزئی و رونق، شما تمام شده اید. اما پس از آن، آن دسته از روابط عمومیهایی وجود دارند که باعث میشوند شما عرق کنید، آنهایی که نیاز به قدرت مغزی جدی و صبر زیادی دارند. PR #74198 یک نمونه کامل از دومی است.
کشش خط زمانی
مجموع همه این عوامل به این معنی است که PR #74198 یک چرخش سریع نخواهد بود. بازبینها باید با یک شانه دندانهای ظریف آن را بررسی میکردند و هر گونه مشکل یا درگیری احتمالی را که میتوانست از چنین تغییر مهمی ناشی شود، بررسی کنند. این یکی از آن موقعیتهایی است که دقت مهمتر از سرعت است، و در حالی که برای کیفیت کد عالی است، خط زمانی را افزایش میدهد.
در نهایت PR #74198 درس صبر و دقت شد. این نوعی تغییر پیچیده است که کارها را کند می کند، اما در دراز مدت، به دلیل ثبات و بهبودی که برای زبان سوئیفت به ارمغان می آورد، ارزشش را دارد.
ماهیت کار: متنوع و پویا
در ماههای اخیر، مخزن سوئیفت در همه جا وجود داشته است. آنها مقابله کرده اند:
ویژگیها: بهروزرسانیهای اصلی مانند رمزگذاری UTF16 در PR #74229
خوب، بیایید در مورد ویژگیها صحبت کنیم — آن اسباببازیهای جدید براق که باعث میشود توسعهدهندگان برای کسب اطلاعات بیشتر بازگردند. یکی از به روز رسانی های اصلی که شایسته توجه است، رمزگذاری UTF16 است که در PR #74229 معرفی شده است. کد خود را بهعنوان یک زبانشناس تصور کنید که بدون زحمت بین زبانها ترجمه میکند — خوب، این بهروزرسانی دقیقاً این کار را انجام میدهد و به سویفت اجازه میدهد تا مجموعههای کاراکترهای بیشتری را به راحتی مدیریت کند. مثل این است که به کد خود یک قدرت فوق العاده بدهید و به من اعتماد کنید، برنامه های شما از شما تشکر خواهند کرد. چه کسی می دانست که رمزگذاری متن می تواند اینقدر جالب باشد؟
مستندات: تازه نگه داشتن راهنمای کاربر با PR #74257
آه، مستندات — قهرمان گمنام هر پروژه. در حالی که گیر افتادن در کد آسان است، تازه نگه داشتن راهنمای کاربر نیز به همان اندازه حیاتی است. PR #74257 را وارد کنید، جایی که اسناد یک لیفت صورت بسیار مورد نیاز را دریافت کردند. آن را بهعنوان بهروزرسانی کمد لباس خود در نظر بگیرید، اما برای کد — دیگر دستورالعملهای قدیمی یا یادداشتهای مرموز که فقط نویسنده اصلی میتواند رمزگشایی کند، وجود ندارد. با این بهروزرسانی، راهنماهای کاربری سوئیفت شیک به نظر میرسند و آماده هستند تا به توسعهدهندگان کمک کنند تا با سهولت حرکت کنند. چه کسی می گوید اسناد نمی توانند شیک باشند؟
رفع اشکالات: مثل اینکه یک کار تمام وقت است، همانطور که در PR #74241 دیده می شود
و سپس رفع اشکال وجود دارد — کاری که هرگز واقعاً به پایان نمی رسد. در PR #74241، تیم سوئیفت آستینها را بالا زدند و دست به کار شدند و اشکالات را به چپ و راست له کردند. این پر زرق و برق نیست، اما ضروری است. از این گذشته، هیچ کس یک برنامه باگ را دوست ندارد، و این اصلاحات تضمین می کند که سویفت نرم، قابل اعتماد و آماده برای هر کاری باقی می ماند. این مانند تمیز کردن بعد از یک مهمانی است — ممکن است نخواهید این کار را انجام دهید، اما می دانید که باید انجام شود، و نتایج بسیار رضایت بخش است.
و کار گروهی را فراموش نکنیم. با حدود 8 مشارکت کننده کلیدی که به طور منظم با یکدیگر همکاری می کنند، این مخزن اساساً منبعی از بهره وری است.
تاثیر بر پروژه و جامعه
استقرار مکرر زبان سوئیفت را چابک و بهروز نگه میدارد، در حالی که فرآیند توسعه شفاف و فراگیر باعث میشود جامعه احساس کند بخشی از چیزی بزرگتر است. به این ترتیب است که شما در یک پروژه منبع باز شتاب را حفظ می کنید.
غذای آماده
استقرارهای مکرر و کوچک: اگر سوئیفت می تواند این کار را انجام دهد، شما نیز می توانید. ویژگی های بزرگ را به تکه های کوچکتر تقسیم کنید تا توپ در حال چرخش باشد.
بررسیهای کامل: بله، زمان میبرند، اما ارزشش را دارند. سرعت و کیفیت را با بررسی های چند مرحله ای و چشم های اضافی روی کد متعادل کنید.
قدرت جامعه: دست های بیشتر کار سبک می کند. پایگاه مشارکت کنندگان خود را برای بهبود مستمر متنوع و فعال نگه دارید.
امتیاز دورا: 8/10
پس از غواصی در سویفت با ابزار Dora Metrics ما، نتیجه این است: سوئیفت امتیاز 8/10 را کسب می کند. استقرار مکرر زبان را واضح نگه می دارد و جامعه همیشه برای چیزهای بزرگ بعدی آماده است. اما سوئیفت، مانند هر کارمندی با عملکرد بالا، ویژگیهای عجیب و غریب خود را دارد — آن زمانهای ادغام مزاحم که گاهی سرعت حرکت را کاهش میدهند.
غذای آماده؟ حتی تیم سوئیفت هم فضایی برای دستکاری برای آن کمی از کمال اضافی دارد. تجزیه و تحلیل ما که در مقابل گزارش سالانه Dora گوگل قرار گرفته است، نشان میدهد که سوئیفت کجا میدرخشد و کجا میتواند از تقویت استفاده کند. اگر کنجکاو هستید که پروژه شما چگونه اندازه گیری می کند یا می خواهید گردش کار خود را توربوشارژ کنید، OSS Middleware بهترین کمک است. این مملو از استراتژی هایی است که به شما کمک می کند آن امتیاز بی عیب و نقص را تعقیب کنید. آماده ارتقاء سطح هستید؟
نتیجه گیری: چرا رویکرد سوئیفت فقط خوب نیست — این است ناعادلانه خوبه؟
مخزن SwiftLang/Swift گواهی بر این است که یک پروژه جامعه محور چقدر می تواند با تعادل مناسب سرعت، کیفیت و همکاری پیشرفت کند. تیم سوئیفت فقط در حال تولید کد نیست. آنها در حال تعیین یک استاندارد طلایی برای حفظ یک پایگاه کد پویا و رو به جلو هستند. استقرار مکرر و کوچک آنها را چابک نگه می دارد، در حالی که رویکرد روشمند آنها برای بررسی های کامل تضمین می کند که کیفیت هرگز به خطر نمی افتد.
بله، زمانهای ادغام طولانیتر ممکن است کار را کمی کند کند، اما این بهایی است که شما برای یک پایگاه کد با دقت نگهداری میپردازید. در واقع، این مکث های عمدی ممکن است فقط عصای جادویی باشد که مخزن سوئیفت را از باز شدن زیر وزن پیشرفت خود باز می دارد.
خب، حکم چیست؟ رویکرد سوئیفت فقط خوب نیست — بلکه خوب است ناعادلانه خوب آنها موفق به ایجاد تعادلی شده اند که اکثر پروژه ها فقط آرزوی آن را دارند و موفقیت آنها طرحی است برای دیگران که باید دنبال کنند.
اگر میخواهید جرقه بحثهایی را با رهبران مهندسی دیگر برانگیزید، به انجمن میانه بیرون بروید!
چیزهای بی اهمیت پاداش: آیا می دانستید؟
آیا می دانستید که سوئیفت در ابتدا مخفیانه توسعه داده شد؟ اپل برای اولین بار کار بر روی سوئیفت را در سال 2010 آغاز کرد و تا سال 2014 بود که این زبان به طور رسمی در WWDC (کنفرانس جهانی توسعه دهندگان) معرفی شد.
این پروژه آنقدر محرمانه بود که تنها تیم کوچکی در اپل از آن اطلاع داشتند. با وجود اینکه سوئیفت برای جایگزینی Objective-C ساخته شده بود، اما اپل با اجازه دادن به قابلیت همکاری بین دو زبان، اطمینان حاصل کرد که این انتقال آسان است. این توسعه مخفیانه و عرضه دقیق، سوئیفت را به یکی از سریعترین زبانهای برنامهنویسی در تاریخ تبدیل کرده است، و همچنان در میان توسعهدهندگان محبوبیت دارد.
منابع بیشتر
مقدمه
وقتی صحبت از زبان برنامه نویسی Swift به میان می آید، مخزن Swiftlang/Swift مانند یک کارخانه کد است که هرگز نمی خوابد و به روز رسانی ها را با دقتی که هر توسعه دهنده ای را حسادت می کند، تولید می کند.
با مشارکتهایی که از سوی یک جامعه پر جنب و جوش و درگیر وارد میشود، این مخزن فقط برای ارائه کد نیست. این در مورد انجام آن با ظرافت، ثبات و سرعت است. ما در مورد صدها استقرار در ماه صحبت می کنیم — به طور جدی، بیش از 500 مورد فقط در ماه ژوئن و ژوئیه — برای اطمینان از اینکه زبان سوئیفت واضح و به روز باقی می ماند.
اگر میخواهید جرقه بحثهایی را با رهبران مهندسی دیگر برانگیزید، به انجمن میانه بیرون بروید!
Middleware's Sleuthing: Cracking the SwiftLang Case با سبک یواشکی خانم مارپل
میدلافزار، خانم مارپل درونی خود را هدایت میکند—یک عمه ی حیلهگر و تیزبین که متوجه همه چیز میشود— تصمیم گرفت نگاهی دقیقتر به مخزن SwiftLang/Swift بیندازد. می دانید، روشی که او به طرز ماهرانه ای رازها و قتل ها را در یک مهمانی باغ فاش می کند. ما کنجکاو بودیم: چگونه این انجمن میتواند کدهای با کیفیت بالا را بدون از دست دادن شتاب تولید کند؟
ما عمیقاً حفاری کردیم (البته با یک فنجان چای در دست) و دستور العمل مخفی آنها را کشف کردیم: استقرارهای مکرر و کوچک و جامعه ای که به اندازه خانم مارپل متعهد به کشف whodunit — به جز اینجاست. همه چیز در مورد پیدا کردن و رفع اشکال. ساختار مخزن SwiftLang، گردش کار، و مشارکت کنندگان فعال همه با هم هماهنگ هستند و تضمین می کنند که حتی تغییرات پیچیده آنها را از تعادل خارج نمی کند.
تحقیقات کوچک ما برخی از شیوههای کلیدی را نشان داد که ارزش یادداشتبرداری را دارند — رویههایی که میتوانند الهامبخش رویکرد جدیدی برای افزایش بهرهوری باشند. بنابراین، با ذره بین در یک دست و Middleware OSS در دست دیگر، مشتاق بودیم ببینیم چگونه این بینش ها توسعه را برای همه روان تر می کند.
اما چیزی که واقعاً این مخزن را متمایز می کند، تعهد بی وقفه آن به بهبود مستمر است. مخزن SwiftLang/Swift خواه رفع اشکالات، افزودن ویژگیها یا تشدید امنیت باشد، همیشه در حال تکامل است و همیشه به جلو میرود. بنابراین، دست و پنجه نرم کنید، زیرا این مطالعه موردی به این موضوع می پردازد که چگونه آنها این جادو را در پشت صحنه انجام می دهند.
پیشینه دورا متریک
قبل از اینکه به جزئیات آبدار بپردازیم، بیایید در مورد Dora Metrics صحبت کنیم. اینها KPIهای کلیدی برای اندازه گیری عملکرد و توسعه نرم افزار هستند. چهار بزرگ عبارتند از:
-
فرکانس استقرار: هر چند وقت یک بار کد ارسال می کنید.
-
Lead Time for Changes: زمانی که طول می کشد تا کد از commit به تولید برود.
-
Change Failure Rate: درصد استقرارهایی که کابوم می شوند.
-
Mean Time to Restore (MTTR): با چه سرعتی میتوانید چیزها را اصلاح کنید وقتی که آنها به حالت کابوم در میآیند.
این معیارها مانند سس مخفی برای فهمیدن اینکه چه چیزی کار می کند و کجا باید بازی خود را تقویت کنید هستند.
یافته های کلیدی
فرکانس استقرار: سلاح مخفی سویفت
اگر چیزی وجود داشته باشد که SwiftLang/Swift ثابت کرده است، آن فرکانس استقرار است. ما به طور متوسط در مورد 330 استقرار در یک دوره صحبت می کنیم — تفکیک به شرح زیر است:
در ماه ژوئن، نینجاهای سوئیفت در حال انتشار کدهایی بودند که انگار فردا وجود نداشت — 556 استقرار!
اما در ماه جولای، آنها کمی نفس کشیدند و یک 528 جامد تحویل دادند.
در ماه اوت، به نظر میرسد که حتی علاقهمندان به سوئیفت ما نیز به مقداری شارژ نیاز داشتند و به 375 استقرار رسیدند.
شاید آنها خیلی مشغول تسلط بر آخرین ویژگیهای سوئیفت بودند یا فقط اجازه میدادند صفحهکلیدشان کمی خنک شود. در هر صورت، ما همچنان به سرعت در حال حرکت هستیم… فقط با چند استراحت قهوه اضافی!
پشت این موتور استقرار با اکتان بالا چیست؟
-
مشارکت فعال: مخزن پر از فعالیت توسعه دهندگان در سراسر جهان است. فقط نگاهی به روابط عمومی مانند #74178 و #74182 بیندازید — بهبودهای افزایشی در راه است!
-
گردش کار بدون درز: همه چیز در این مخزن به طور روشمند سازماندهی شده است، از دایرکتوری ها گرفته تا قالب بندی کد. اون فایل با فرمت clang؟ انجام کارهای سنگین برای ثابت نگه داشتن همه چیز است.
-
مشارکت در جامعه: از افرادی مانند استیون وو و اگور ژدان برای حفظ توپ با بررسیها و بهبودهای منظم فریاد بزنید. هرچه تعداد دست روی عرشه بیشتر باشد، کشتی سریعتر حرکت می کند.
زمان ادغام: پاشنه آشیل
اما هی، همه اش آفتاب و رنگین کمان نیست. زمانهای ادغام در حال افزایش است، و در اینجا به نظر میرسد:
آه، زمانهای ادغام — یکی از بخشهای فرآیند که مانند راه بندان در یک بزرگراه برنامهنویسی صاف است. علیرغم همه استقرارهای با فرکانس بالا و مشارکتهای فعال، اینجاست که کارها کمی کند میشوند. و با “آهسته شدن سرعت” منظورم این است که آن زمانهای ادغام مانند یک پیچش داستانی پر تعلیق است که شما ندیدید که در راه است.
در اینجا خلاصه ای از آنچه اتفاق افتاده است:
-
ژوئن 2024: همه چیز با میانگین زمان ادغام فقط 1.24 روز به خوبی پیش می رفت. بد نیست، درست است؟
-
جولای 2024: حتی بهتر — زمان ادغام به 1.18 روز کاهش یافت. مخزن مثل یک ماشین خوب روغن کاری شده بود.
-
آگوست 2024: و بعد… بم! ما تا 1.46 روز برگشتیم. چه اتفاقی افتاد؟ خوب، زندگی اتفاق افتاد — یا در این مورد، پیچیدگی های کدگذاری و بررسی های کامل.
خب، چه خبر است؟ خوب، معلوم می شود که با به دست آوردن ویژگی ها و تغییرات جاه طلبانه تر جامعه سوئیفت، روند ادغام شروع به کند شدن می کند. می دانید چگونه افزودن این ماده اضافی می تواند یک دستور غذا را عالی کند اما زمان بیشتری را نیز می طلبد؟ اینجا هم همینطوره با بهروزرسانیهای پیچیدهای که نیاز به بررسی عمیقتر و توجه بیشتر به جزئیات دارند، زمان ادغام افزایش مییابد.
این یک معامله کلاسیک است: شما کیفیت می خواهید، باید صبور باشید. بنابراین، در حالی که این زمانهای ادغام ممکن است کمی تنگنا باشد، اما نشانهای از این است که مخزن سوئیفت فقط به خاطر آن کد تولید نمیکند — آنها مطمئن میشوند که هر خط به حساب میآید.
چه چیزی باعث کاهش سرعت کارها می شود؟
بررسی های کامل: طرف مقابل کیفیت زمان است
کیفیت پادشاه است اما دستیابی به آن سطح از کیفیت؟ خوب، زمان، تلاش و توجه زیادی به کد نیاز دارد. اینجاست که بررسیهای کامل وارد عمل میشوند — تضمین میکنند که هر خط کد صیقلی، بدون اشکال و آماده کار است. اما همانطور که هر کسی در این زمینه میداند، هرچه بررسی دقیقتر باشد، بیشتر طول میکشد. و روابط عمومیهایی مانند #74250 و #74208 نمونههای بارز این هستند که چگونه این تعادل بین کیفیت و زمان انجام میشود.
PR #74250: رویکرد لایه ای به بررسی ها
این درخواست کشش هر چیزی جز سرراست بود. این شامل چندین جنبه از پایگاه کد بود و همه چیز را از بهبود عملکرد گرفته تا پیشرفت های امنیتی را لمس می کرد. برای اطمینان از اینکه هیچ چیز از میان شکاف ها نمی لغزد، روند بررسی چند لایه بود — مانند پوست کندن یک پیاز، اما به روشی خوب.
-
اولین پاس: بررسی های اولیه: دور اول بررسی ها بر روی اصول — قالب بندی کد، پیروی از دستورالعمل های سوئیفت و بررسی های اولیه سلامت متمرکز بود. این مرحله به تنهایی به حل مشکلات جزئی که ممکن است بعداً گلوله برفی شود کمک کرد.
-
گذر دوم: شیرجه عمیق: دور دوم بررسی ها در مورد غواصی عمیق در منطق بود. بازبینان کد را برای موارد لبه، اشکالات احتمالی و گلوگاه های عملکرد مورد بررسی قرار دادند. اینجا بود که همه چیز جدی شد و همه جزئیات کوچک زیر ذره بین قرار گرفت.
-
پاس نهایی: امنیت و بهینه سازی: آخرین مرحله بررسی به بررسی های امنیتی و بهینه سازی اختصاص داشت. این امر مستلزم اطمینان از عدم ایجاد آسیبپذیری یا کاهش سرعت سیستم بود. این لایه نهایی پولیش است قبل از اینکه PR چراغ سبز بگیرد.
همه این مراحل با هم جمع شدند و کیفیت عالی را تضمین کردند اما جدول زمانی را نیز افزایش دادند. کد تا پایان آن ضد گلوله بود، اما ساعت قطعاً تیک تاک می کرد.
PR #74208: سمفونی داوران
PR #74208 مجموعه ای از چالش ها را داشت. این یکی شامل تغییراتی بود که بر چندین مؤلفه اکوسیستم سویفت تأثیر گذاشت. به دلیل گستردگی آن، سمفونی منتقدان را به خود جلب کرد که هر کدام تخصص خود را به میز می آورد.
-
بررسی مشارکتی: با توجه به بسیاری از مؤلفههای تحت تأثیر، این روابط عمومی به ورودی چندین متخصص نیاز داشت — هر کدام در زمینههای مختلفی مانند عملکرد کامپایلر، معنای زبان و رفتار زمان اجرا متخصص هستند. هماهنگ کردن همه این نقدها مانند رهبری یک ارکستر بود — همه باید هماهنگ باشند.
-
تست متقابل مؤلفهها: بازبینها فقط بر حوزههای خودشان تمرکز نکردند. آنها همچنین باید اطمینان حاصل می کردند که تغییرات به طور هماهنگ در سراسر صفحه کار می کنند. این به معنای آزمایش تعاملات بین اجزای مختلف، کشف مسائلی است که ممکن است در نگاه اول واضح نباشند.
-
بازخورد تکراری: مانند هر تغییر پیچیده، بازخورد یک مورد یکباره نبود. بازبینان چندین دور بازخورد ارائه کردند و توسعهدهنده در طول مسیر تغییراتی را انجام داد. این فرآیند تکراری به اصلاح کد کمک کرد، اما به معنای رفت و برگشت بیشتر و، حدس زدید، زمان بیشتری نیز بود.
معاوضه: کیفیت در مقابل سرعت
در هر دو PR، بررسیها کامل بود و مشکلات احتمالی را بررسی میکرد و تضمین میکرد که کد با بالاترین استانداردها مطابقت دارد. اما دقیق بودن با هزینه — زمان همراه است. این بررسیها بیش از حد معمول طول کشید، زمانهای ادغام را عقب انداخت و استقرار را به تأخیر انداخت. با این حال، مبادله ارزش آن را داشت: کد محکمی که یکپارچگی زبان سوئیفت را حفظ می کرد.
در پایان، روابط عمومیهایی مانند #74250 و #74208 به ما یادآوری میکنند که اگرچه سرعت مهم است، کیفیت غیرقابل مذاکره است. زمان اضافی صرف شده برای بررسی ها ممکن است خط زمانی را طولانی کند، اما سرمایه گذاری در پایداری و عملکرد طولانی مدت کد است. و در دنیای نرم افزار، این یک معامله ارزش است.
تغییرات پیچیده: آجیل سخت برای شکستن
وقتی نوبت به کدنویسی میرسد، همه درخواستهای کششی یکسان ایجاد نمیشوند. برخی از آنها مانند پیاده روی در پارک هستند — رفع سریع، تغییرات جزئی و رونق، شما تمام شده اید. اما پس از آن، آن دسته از روابط عمومیهایی وجود دارند که باعث میشوند شما عرق کنید، آنهایی که نیاز به قدرت مغزی جدی و صبر زیادی دارند. PR #74198 یک نمونه کامل از دومی است.
کشش خط زمانی
مجموع همه این عوامل به این معنی است که PR #74198 یک چرخش سریع نخواهد بود. بازبینها باید با یک شانه دندانهای ظریف آن را بررسی میکردند و هر گونه مشکل یا درگیری احتمالی را که میتوانست از چنین تغییر مهمی ناشی شود، بررسی کنند. این یکی از آن موقعیتهایی است که دقت مهمتر از سرعت است، و در حالی که برای کیفیت کد عالی است، خط زمانی را افزایش میدهد.
در نهایت PR #74198 درس صبر و دقت شد. این نوعی تغییر پیچیده است که کارها را کند می کند، اما در دراز مدت، به دلیل ثبات و بهبودی که برای زبان سوئیفت به ارمغان می آورد، ارزشش را دارد.
ماهیت کار: متنوع و پویا
در ماههای اخیر، مخزن سوئیفت در همه جا وجود داشته است. آنها مقابله کرده اند:
ویژگیها: بهروزرسانیهای اصلی مانند رمزگذاری UTF16 در PR #74229
خوب، بیایید در مورد ویژگیها صحبت کنیم — آن اسباببازیهای جدید براق که باعث میشود توسعهدهندگان برای کسب اطلاعات بیشتر بازگردند. یکی از به روز رسانی های اصلی که شایسته توجه است، رمزگذاری UTF16 است که در PR #74229 معرفی شده است. کد خود را بهعنوان یک زبانشناس تصور کنید که بدون زحمت بین زبانها ترجمه میکند — خوب، این بهروزرسانی دقیقاً این کار را انجام میدهد و به سویفت اجازه میدهد تا مجموعههای کاراکترهای بیشتری را به راحتی مدیریت کند. مثل این است که به کد خود یک قدرت فوق العاده بدهید و به من اعتماد کنید، برنامه های شما از شما تشکر خواهند کرد. چه کسی می دانست که رمزگذاری متن می تواند اینقدر جالب باشد؟
مستندات: تازه نگه داشتن راهنمای کاربر با PR #74257
آه، مستندات — قهرمان گمنام هر پروژه. در حالی که گیر افتادن در کد آسان است، تازه نگه داشتن راهنمای کاربر نیز به همان اندازه حیاتی است. PR #74257 را وارد کنید، جایی که اسناد یک لیفت صورت بسیار مورد نیاز را دریافت کردند. آن را بهعنوان بهروزرسانی کمد لباس خود در نظر بگیرید، اما برای کد — دیگر دستورالعملهای قدیمی یا یادداشتهای مرموز که فقط نویسنده اصلی میتواند رمزگشایی کند، وجود ندارد. با این بهروزرسانی، راهنماهای کاربری سوئیفت شیک به نظر میرسند و آماده هستند تا به توسعهدهندگان کمک کنند تا با سهولت حرکت کنند. چه کسی می گوید اسناد نمی توانند شیک باشند؟
رفع اشکالات: مثل اینکه یک کار تمام وقت است، همانطور که در PR #74241 دیده می شود
و سپس رفع اشکال وجود دارد — کاری که هرگز واقعاً به پایان نمی رسد. در PR #74241، تیم سوئیفت آستینها را بالا زدند و دست به کار شدند و اشکالات را به چپ و راست له کردند. این پر زرق و برق نیست، اما ضروری است. از این گذشته، هیچ کس یک برنامه باگ را دوست ندارد، و این اصلاحات تضمین می کند که سویفت نرم، قابل اعتماد و آماده برای هر کاری باقی می ماند. این مانند تمیز کردن بعد از یک مهمانی است — ممکن است نخواهید این کار را انجام دهید، اما می دانید که باید انجام شود، و نتایج بسیار رضایت بخش است.
و کار گروهی را فراموش نکنیم. با حدود 8 مشارکت کننده کلیدی که به طور منظم با یکدیگر همکاری می کنند، این مخزن اساساً منبعی از بهره وری است.
تاثیر بر پروژه و جامعه
استقرار مکرر زبان سوئیفت را چابک و بهروز نگه میدارد، در حالی که فرآیند توسعه شفاف و فراگیر باعث میشود جامعه احساس کند بخشی از چیزی بزرگتر است. به این ترتیب است که شما در یک پروژه منبع باز شتاب را حفظ می کنید.
غذای آماده
-
استقرارهای مکرر و کوچک: اگر سوئیفت می تواند این کار را انجام دهد، شما نیز می توانید. ویژگی های بزرگ را به تکه های کوچکتر تقسیم کنید تا توپ در حال چرخش باشد.
-
بررسیهای کامل: بله، زمان میبرند، اما ارزشش را دارند. سرعت و کیفیت را با بررسی های چند مرحله ای و چشم های اضافی روی کد متعادل کنید.
-
قدرت جامعه: دست های بیشتر کار سبک می کند. پایگاه مشارکت کنندگان خود را برای بهبود مستمر متنوع و فعال نگه دارید.
امتیاز دورا: 8/10
پس از غواصی در سویفت با ابزار Dora Metrics ما، نتیجه این است: سوئیفت امتیاز 8/10 را کسب می کند. استقرار مکرر زبان را واضح نگه می دارد و جامعه همیشه برای چیزهای بزرگ بعدی آماده است. اما سوئیفت، مانند هر کارمندی با عملکرد بالا، ویژگیهای عجیب و غریب خود را دارد — آن زمانهای ادغام مزاحم که گاهی سرعت حرکت را کاهش میدهند.
غذای آماده؟ حتی تیم سوئیفت هم فضایی برای دستکاری برای آن کمی از کمال اضافی دارد. تجزیه و تحلیل ما که در مقابل گزارش سالانه Dora گوگل قرار گرفته است، نشان میدهد که سوئیفت کجا میدرخشد و کجا میتواند از تقویت استفاده کند. اگر کنجکاو هستید که پروژه شما چگونه اندازه گیری می کند یا می خواهید گردش کار خود را توربوشارژ کنید، OSS Middleware بهترین کمک است. این مملو از استراتژی هایی است که به شما کمک می کند آن امتیاز بی عیب و نقص را تعقیب کنید. آماده ارتقاء سطح هستید؟
نتیجه گیری: چرا رویکرد سوئیفت فقط خوب نیست — این است ناعادلانه خوبه؟
مخزن SwiftLang/Swift گواهی بر این است که یک پروژه جامعه محور چقدر می تواند با تعادل مناسب سرعت، کیفیت و همکاری پیشرفت کند. تیم سوئیفت فقط در حال تولید کد نیست. آنها در حال تعیین یک استاندارد طلایی برای حفظ یک پایگاه کد پویا و رو به جلو هستند. استقرار مکرر و کوچک آنها را چابک نگه می دارد، در حالی که رویکرد روشمند آنها برای بررسی های کامل تضمین می کند که کیفیت هرگز به خطر نمی افتد.
بله، زمانهای ادغام طولانیتر ممکن است کار را کمی کند کند، اما این بهایی است که شما برای یک پایگاه کد با دقت نگهداری میپردازید. در واقع، این مکث های عمدی ممکن است فقط عصای جادویی باشد که مخزن سوئیفت را از باز شدن زیر وزن پیشرفت خود باز می دارد.
خب، حکم چیست؟ رویکرد سوئیفت فقط خوب نیست — بلکه خوب است ناعادلانه خوب آنها موفق به ایجاد تعادلی شده اند که اکثر پروژه ها فقط آرزوی آن را دارند و موفقیت آنها طرحی است برای دیگران که باید دنبال کنند.
اگر میخواهید جرقه بحثهایی را با رهبران مهندسی دیگر برانگیزید، به انجمن میانه بیرون بروید!
چیزهای بی اهمیت پاداش: آیا می دانستید؟
آیا می دانستید که سوئیفت در ابتدا مخفیانه توسعه داده شد؟ اپل برای اولین بار کار بر روی سوئیفت را در سال 2010 آغاز کرد و تا سال 2014 بود که این زبان به طور رسمی در WWDC (کنفرانس جهانی توسعه دهندگان) معرفی شد.
این پروژه آنقدر محرمانه بود که تنها تیم کوچکی در اپل از آن اطلاع داشتند. با وجود اینکه سوئیفت برای جایگزینی Objective-C ساخته شده بود، اما اپل با اجازه دادن به قابلیت همکاری بین دو زبان، اطمینان حاصل کرد که این انتقال آسان است. این توسعه مخفیانه و عرضه دقیق، سوئیفت را به یکی از سریعترین زبانهای برنامهنویسی در تاریخ تبدیل کرده است، و همچنان در میان توسعهدهندگان محبوبیت دارد.
منابع بیشتر