تصور کنید تمام دنیای دانلودهای تکمیلی و بهروزرسانیهای اپلیکیشن در مقیاس جهانی، روی دوش یک نفر باشد. ارین مارش (Erin Marsh) اکنون تنها کسی است که از libcapstan — پیادهسازی مرجع پروتکل Capstan — پشتیبانی میکند؛ کتابخانهای که ماهانه ۸۰ میلیون بار دانلود میشود و حدود ۴۰ هزار بسته نرمافزاری به آن وابستهاند.
نرمافزارهای مدرن روی «درخت وابستگی» متزلزلی بنا شدهاند که در آن کتابخانههای بنیادین اغلب توسط تعداد انگشتشماری از داوطلبان اداره میشوند. این واقعیت به این معناست که فرسودگی یا خروج حتی یک توسعهدهنده میتواند زیرساختهای حیاتی جهانی را آسیبپذیر کند. داستان libcapstan یک مطالعه موردی جامع درباره بخش «نامرئی» اکوسیستم متنباز است؛ جایی که ریسکهای احتمالی عظیم اما منابع در دسترس حداقلی هستند.
زمینه: سنگینی بنیادها
نگهداری از یک پروتکل بنیادین اغلب حاصل شانس است تا انتخاب ارادی. مارش در سال ۲۰۱۹ وارد این اکوسیستم شد؛ زمانی که او باگهایی را در منطق بازیابی (resume) libcapstan گزارش کرد که باعث فساد فایلها در اتصالهای ناپایدار میشد. او ابتدا یک روش برای بازتولید خطا و یک اصلاحیه ارائه داد و پس از آن دسترسی commit به او داده شد. تنها یک ماه بعد، نگهدارنده قبلی پروژه — که تصمیم گرفته بود زندگی خود را روی یک قایق بادبانی بگذراند — کل مخزن پروژه را به مارش منتقل کرد.
برای سالها، این پروژه توسط تیم کوچکی متشکل از سه نفر پشتیبانی میشد. اما تا سال ۲۰۲۳، این تیم کوچکتر شد. یکی از همسازندگان برای تشکیل خانواده و فرزنددار شدن پروژه را ترک کرد و یکی دیگر برای اداره یک مزرعه از مدیریت کنار رفت. این اتفاقات باعث شد مارش به تنها متولی اصلی کتابخانهای تبدیل شود که در سال ۲۰۱۱ با زبان C نوشته شده است. او اکنون از نیوزیلند پروژه را مدیریت میکند و اغلب ساعت ۶ صبح بیدار میشود تا پایداری این زیرساخت جهانی را حفظ کند.
جزئیات: شکاف کدنویسی با هوش مصنوعی
تجربه مارش با ابزارهای هوش مصنوعی، تضاد شدیدی میان وعدههای بازاریابی و کاربرد واقعی در محیط تولید را نشان میدهد. در حالی که گفته میشود عاملهای هوشمند (Agents) راهکاری برای مدیریت «دم بلند» (long tail) نگهداری کدها هستند، در واقعیت خروجی آنها اغلب باعث ایجاد کار بیشتر برای نگهدارنده انسانی میشود. این چالشها در تضاد با برخی تجربههای موفق است، مانند مواردی که با استفاده از گردشکار عاملمحور توانستند زمان برنامهریزی فنی را به شدت کاهش دهند، اما در پروژههای بنیادین، دقت بسیار بالاتری مورد نیاز است.
شکستهای Copilot: در ماه آوریل، تلاشی برای افزودن یک بررسی محدوده (bounds check) منجر به یک حلقه بیپایان در فرمتبندی شد. هوش مصنوعی تبها (tabs) را با فاصلهها (spaces) جایگزین کرد؛ سپس linter این تغییر را خطا گرفت، پس AI دوباره کد را به تب برگرداند. این عمل باعث ایجاد فضاهای خالی در انتهای خطوط (trailing whitespace) شد که باز هم توسط linter شناسایی و خطا گرفت. این حلقه تا زمانی که توکنهای مدل تمام شد ادامه یافت و هیچ کدی تحویل داده نشد. در نهایت مارش مجبور شد bounds check را به صورت دستی بنویسد.
سروصدای عاملها: libcapstan هفتهای حدود ۶۰ درخواست pull request خودکار دریافت میکند. اگرچه این درخواستها مودبانه هستند و با فرمت درست و تستهای همراه ارسال میشوند، اما اکثر آنها بیفایدهاند. عاملها مکرراً روی مشکلی در مدیریت symlink مربوط به سال ۲۰۱۶ تمرکز میکنند. با وجود اینکه مارش تقریباً ۲۰۰ بار موضع پروژه را در این مورد توضیح داده است، عاملها همچنان همان اصلاحیه ناخواسته را پیشنهاد میدهند.
نبرد بر سر AGENTS.md: برای مقابله با این وضعیت، مارش فایلی به نام
AGENTS.mdدر ریشه مخزن اضافه کرد و از مشارکتکنندگان خودکار خواست ابتدا ردیاب (tracker) را بررسی کنند. به طور طنزآمیزی، این فایل اکنون به پرایندترین فایل مخزن تبدیل شده است، زیرا عاملها اکنون pull request میفرستند تا غلطهای املایی را در همین فایل دستورالعملهای AI اصلاح کنند.پیروزیهای نادر: در میان دهها مشارکت عاملها در یک سال، تنها سه مورد مفید بود. یکی از آنها تأثیر بسیار بالایی داشت: شناسایی یک race condition (شرایط مسابقه) در منطق تلاش مجدد (retry logic) که برای یک دهه نادیده مانده بود. جالب اینجاست که حساب کاربری ارسالکننده پیش از آنکه مارش بتواند تشکر کند، حذف شده بود.
جزئیات: پارادوکس امنیتی
آسیبپذیریهای امنیتی در کتابخانههای هسته، رویدادهایی با ریسک بسیار بالا هستند. مارش گزارش میدهد که تعداد گزارشهای امنیتی ماهانه از یک یا دو مورد در چند سال پیش، به حدود ده مورد رسیده است. اکثر اینها اکنون یافتههای اسکنرهای خودکار هستند که در قالب گزارشهای نوشته شده توسط AI بستهبندی شدهاند. این گزارشها طولانی و با اعتمادبهنفس بسیار بالا نوشته شدهاند، اما تنها یک مورد از هر پانزده مورد، یک مشکل واقعی را توصیف میکند. بنابراین، بار اصلی کاری مارش از «رفع باگ» به «تأیید دستی موارد مثبت کاذب» (false positives) تغییر یافته است.
در نوامبر ۲۰۲۴، وقتی مارش سعی کرد از یک عامل AI برای خودکارسازی تأیید این اکسپلویتها در یک محیط sandbox استفاده کند، ارائهدهنده AI حساب کاربری او را مسدود کرد. از دیدگاه ارائهدهنده، بازتولید یک اکسپلویت دقیقاً مشابه توسعه یک حمله است و به همین دلیل فیلترهای خودکار فعالیت او را علامتگذاری کردند. وقتی او سعی کرد درخواست تجدیدنظر دهد، فرم درخواست از او خواست که اقداماتش را توصیف کند؛ همین توصیف دوباره فیلترهای امنیتی را فعال کرد و منجر به مسدودیت دائمی شد. او اشاره کرد که فرمی برای مؤسسات وجود دارد، اما این موضوع همچنان یک مانع بزرگ برای نگهدارندههای مستقل است.
جزئیات: فشار شرکتهای تجاری
نگهدارندگان متنباز اغلب با رفتارهای شکارچیگونه شرکتهای فروشنده خدمات امنیتی مواجه میشوند. در فوریه، یک شرکت امنیتی حفرهای بحرانی در پارس کردن هدرهای libcapstan پیدا کرد. به جای افشای خصوصی و محرمانه، این شرکت موضوع را روز سهشنبه بهصورت عمومی مطرح کرد و یک اثبات مفهوم (PoC) کامل را منتشر نمود. آنها یک پست وبلاگی را برای چهارشنبه برنامهریزی کردند و به سیاست سختگیرانه «۹۰ روز یا انتشار» پایبند بودند.
طبق مصاحبه، این آسیبپذیری پیش از آنکه مارش حتی فرصت کند گزارش را کامل بخواند، نام و لوگوی اختصاصی داشت. او در ۲۶ ساعت اصلاحیه را ارسال کرد، اما پست بعدی آن شرکت، این واکنش سریع را به عنوان «پاسخی دلگرمکننده از سوی پروژهای که تاریخی از کمبود منابع داشته است» توصیف کرد. همزمان، تیم فروش آن شرکت به شرکتهایی که به libcapstan وابسته بودند ایمیل زد و نسخه «تقویتشده» (hardened) کتابخانه را به آنها پیشنهاد داد. این نسخه در واقع همان نسخههای رسمی بود که وصلههای امنیتی خودِ مارش روی آنها اعمال شده بود؛ یعنی شرکت امنیتی وصلههای مارش را پیش از آنکه او بتواند اصلاحیه عمومی را از طریق لیست embargo منتشر کند، به مشتریان خود فروخت.
جزئیات: تله وابستگی
نگهداری از زیرساختها اغلب منجر به «مالکیت تصادفی» میشود. مارش پس از بازرسی وابستگیهای خودش برای کاهش تعداد کتابخانههای وابسته (از ۶ کتابخانه به ۴ کتابخانه)، مشکلاتی را در یک کتابخانه checksum پیدا کرد. او باگها را به همراه وصلهها به توسعهدهنده اصلی گزارش داد. نگهدارنده آن پروژه پس از تشکر، بلافاصله کل مخزن را به مارش منتقل کرد. این دومین بار بود که این اتفاق میافتاد و مارش را به صاحب بخش قابل توجهی از درخت وابستگیهای خودش تبدیل کرد.
مشوقهای مالی در این اکوسیستم نیز به همان اندازه نامنظم و عجیب هستند:
- WaveRiser: شرکتی که به نگهدارندگان بر اساس جایگاهشان در درخت وابستگی پول پرداخت میکند. وقتی مارش یک تابع تک را برای حذف یک وابستگی که از سال ۲۰۱۴ وجود داشت در کد ادغام (inline) کرد، نگهدارنده دیگر آن وابستگی حدود ۴۰۰ دلار در ماه از بودجهاش را از دست داد. آن نگهدارنده به مارش پیشنهاد داد ماهانه ۱۵۰ دلار دریافت کند تا آن کتابخانه غیرضروری را دوباره به پروژه اضافه کند.
- CapstanCoin: در سال ۲۰۲۲، یک توکن کلاهبرداری عرضه شد. سازندگان آن از نام مارش و تاریخچه commitهای او در یک whitepaper به عنوان مدرکی برای توسعه استفاده کردند. حدود ۲ میلیون دلار از این کوین جابهجا شد تا اینکه خزانه تخلیه گشت. مارش ۸ ماه بعد از طریق ایمیلهای سرمایهگذاران عصبانی باخبر شد؛ از جمله مرد بازنشستهای که یک سال به او ایمیل زد و تقاضای بازگشت وجه کرد.
- بازارهای پیشبینی: اکنون بازارهایی برای شرطبندی روی پایداری این پروژه وجود دارد. مارش متوجه شد بازاری وجود دارد که روی این شرط بسته که آیا او تا پایان سال استعفا میدهد یا خیر؛ چرا که غریبهای از او خواسته بود تا ژانویه در پروژه بماند تا تاریخ تسویه شرطبندیها برسد. همچنین فروشندگان در بازارهای پیشبینی درباره سرعت ارسال وصله در جریان افشای فوریه معامله کرده بودند.
جزئیات: سراب «سرعت خیرهکننده»
سال گذشته، توسعهدهندهای نسخهای به نام capstan-rs را منتشر کرد که بازنویسی کتابخانه با زبان Rust بود و در یک ماه ۴۰ هزار ستاره گرفت — ۱۰ برابر ستارههای کتابخانه اصلی. اما این پروژه در مارس آرشیو شد زیرا توسعهدهنده آن توسط شرکت OpenClaw استخدام شد.
مارش خاطرنشان میکند که بنچمارکهای نسخه Rust گمراهکننده بودند، زیرا آنها گذردهی (throughput) را در حالت warm cache و با غیرفعال کردن منطق «بازیابی» (resume) اندازهگیری کرده بودند. از آنجایی که resume سختترین بخش پروتکل و پر از موارد خاص (edge cases) است، بازنویسی Rust دقیقاً همان منطقی را حذف کرده بود که وجود کتابخانه اصلی را ضروری میکند. اخیراً OpenClaw یک پیادهسازی «اتاق پاک» (clean-room) معرفی کرد. این نسخه یک باگ شناختهشده از سال ۲۰۲۱ در libcapstan را بیتبهبیت تکرار میکند و در مجموعه تستهای خود ادعا میکند که این خروجی غلط، در واقع درست است. مارش گزارشی ثبت کرد، اما این گزارش زیر ۵ هزار گزارش دیگر که توسط عاملهای AI تولید شدهاند در صف انتظار است و یک ربات تریاژ به آنها به ترتیب پاسخ میدهد.
جزئیات: دیوار حاکمیتی
با وجود ماهیت حیاتی پروژه، تامین بودجه رسمی دشوار است. مارش سال گذشته برای طراحی افزونههای مسیر چندگانه (multipath) درخواست گرنت داد. از آنجایی که libcapstan پیادهسازی مرجع است، کار او در واقع استاندارد عملی را تعریف میکند. او ۶ ماه بودجه خواست تا طراحی و مشخصات را به درستی تکمیل کند.
درخواست او به دلیل نبود «مشارکت» در گروه کاری رسمی استاندارها رد شد. این گروه کاری از پلتفرم ویدئویی استفاده میکند که با مرورگر Firefox (مرورگری که مارش استفاده میکند) سازگار نیست. با وجود اینکه گروه پذیرفت این یک مشکل است و آن را با ارائهدهنده پلتفرم مطرح کرد، پاسخ ارائهدهنده این بود که Firefox یک مرورگر سازمانی پشتیبانیشده نیست. در نتیجه، کسی که پیادهسازی مرجع را مینویسد، به دلیل ترجیح مرورگر، عملاً از فرآیند تصمیمگیری حذف شده است. بازبینها خاطرنشان کردند که اگرچه کار پیادهسازی تأثیرگذار است، اما «پیادهسازی به معنای مشارکت نیست».
این وضعیت، شکنندگی وب مدرن را برجسته میکند: یک پروتکل هسته توسط گروه کاری هدایت میشود که کسی را که واقعاً کد را مینویسد طرد کرده است، در حالی که خود توسعهدهنده در حال آماده شدن برای ترک پروژه و پیوستن به یک مزرعه بز در نیوزیلند است — جایی که همسازنده سابق او اکنون با گلهای شامل ۶۰ بز، پنیرهایی تولید میکند که برای خرید آنها باید در لیست انتظار باشید.
برای کسانی که به این ستونهای نامرئی تکیه کردهاند، تنها راه فوری برای تضمین پایداری، حمایت مستقیم از طریق لینک اسپانسر در فایل readme پروژه libcapstan است.
برای کسانی که به این ستونهای نامرئی تکیه کردهاند، تنها راه فوری برای تضمین پایداری، حمایت مستقیم از طریق لینک اسپانسر در فایل readme پروژه libcapstan است.
گام بعدی شما
- اگر از کتابخانههای متنباز حیاتی استفاده میکنید، لینک اسپانسر در فایل readme آنها را چک کنید و حمایت مالی مستقیم کنید.
- در بررسی وابستگیهای پروژه خود، به دنبال کتابخانههایی بگردید که تنها یک نگهدارنده دارند و برای آنها جایگزین یا برنامه پشتیبان تهیه کنید.
- هنگام استفاده از AI برای اصلاح باگها، خروجی را با دقت بررسی کنید تا در حلقههای بیپایان فرمتبندی یا توهمات امنیتی نیفتید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما درباره تراشههای Blackwell مراجعه کنید.




گفتگو