بحران مقیاسپذیری: وقتی ابزارهای موجود به درد نمیخوردند
در تاریخ بلند نرمافزار، تنها چند ابزار به اندازه گیت به ستون فقرات مهندسی مدرن تبدیل شدهاند. این سیستم کنترل نسخه استانداردی است که توسعهدهندگان سراسر جهان به آن تکیه میکنند. اما داستان پیدایش آن هیچگاه بر پایه برنامهریزی دقیق یا چشماندازهای بلندمدت استوار نبوده است. گیت از دل خشم، بحران و ضرورت متولد شد؛ ابزاری که لینوس توروالدز هرگز در برنامههاش نداشت و تنها در چند روز پس از یک گسست تلخ با یک شرکت تجاری، سرهمبندی شد.
توافق ناپایدار دوران بیتکیپر
برای درک اینکه چرا گیت اصلاً باید به وجود میآمد، باید به اواخر دهه ۹۰ میلادی بازگشت. سال ۱۹۹۸ نقطه عطفی بود که شرکتهای غولپیکری مانند سان، آیبیام و اوراکل به سمت سیستمعامل لینوکس کشیده شدند. این پروژه سرگرمی به زیرساختی حیاتی برای کل صنعت بدل شده بود. اما موفقیت ناگهانی، مشکلی را به راه انداخت که هیچ شور و شوقی نمیتوانست حلش کند. هسته لینوکس به بزرگترین پروژه متنباز تاریخ تبدیل شده بود و روشهای سنتی هماهنگی توسعه دیگر کار نمیکردند. جملهای که این بنبست را توصیف میکرد، بسیار صریح بود: لینوس مقیاسپذیر نیست. هماهنگسازی مشارکتهای هزاران توسعهدهنده در حیاتیترین پایگاه کد جهان، نیازمند ابزارهایی بود که در آن زمان اصلاً وجود نداشتند.
راهحل موقت در سال ۲۰۰۲ از راه رسید که البته بحثبرانگیز بود. بیتکیپر یک نرمافزار انحصاری و متنبسته بود. استفاده از چنین ابزاری برای مدیریت پرچمدار دنیای متنباز، از نظر بسیاری یک خیانت فلسفی محسوب میشد. اما توروالدز همواره عملگرا بود و از این انتخاب با دلایل کاملاً فنی دفاع کرد. این ابزار از هر گزینه متنباز دیگری مانند CVS و SVN بسیار سریعتر و کارآمدتر عمل میکرد. برای او، توانایی فنی به مراتب از نوع مجوز مهمتر بود. به مدت سه سال، این آتشبس ناپایدار برقرار ماند و جامعه بدون سر و صدا به کار خود ادامه داد.
گسست ناگهانی و بنبست توسعهدهندگان
در سال ۲۰۰۵، اتفاق اجتنابناپذیر رخ داد. اندرو تریدجل، خالق سامبا، تصمیم گرفت پروتکلهای بیتکیپر را مهندسی معکوس کند تا یک کلاینت متنباز سازگار بنویسد. شرکت بیتموور این کار را نقض آشکار قرارداد مجوز دانست. لری مکوی، مدیرعامل شرکت، واکنشی قاطع نشان داد و بلافاصله دسترسی رایگان را برای تمام توسعهدهندگان لینوکس قطع کرد. به محض این اقدام، مهمترین پایگاه کد جهان بدون سیستم کنترل نسخه باقی ماند. کل فرآیند توسعه هسته در حال فروپاشی بود و رابطه میان جامعه برنامهنویسان و تولیدکننده ابزار به کلی خدشهدار شد.
پروژه دو هفتهای که صنعت را دگرگون کرد
توروالدز که خشمگین بود و به یک جایگزین فوری نیاز داشت، رفتاری از خود نشان داد که کاملاً با شخصیتش همخوانی داشت. او مدتی را از توسعه هسته دور شد تا روی پروژه شخصی وقت بگذارد. پیش از نوشتن حتی یک خط کد، گزینههای موجود بازار را بررسی کرد. اما هیچ ابزاری از نوع متنباز یا تجاری نمیتوانست با پرفورمنسی که او میخواست، با حجم عظیم کدهای هسته لینوکس کنار بیاید. او بالاخره تصمیمی گرفت که بیسروصدا کل صنعت نرمافزار را تغییر داد: خودش ابزاری مینوشت.
گاهشمار پیدایش این ابزار حیرتانگیز به نظر میرسد:
- 3 آوریل 2005: توروالدز به طور رسمی توسعه را آغاز میکند.
- 6 آوریل 2005: تنها سه روز بعد، پروژه را به صورت عمومی معرفی میکند.
- 7 آوریل 2005: گیت به مراحل پیشرفته خود میزبانی (Self-hosting) میرسد.
- 14 آوریل 2005: در کمتر از دو هفته، نسخه نهایی توان ساخت کل درخت کدهای هسته لینوکس را پیدا میکند.
توروالدز در این دو هفته چند تصمیم معماری حیاتی گرفت که گیت را از رقبای قدیمیاش متمایز میکرد. او به جای ذخیره تفاوتهای فایلها (Deltas) که روش رایج زمان خودش بود، از مدل توزیعشده و ذخیرهسازی کامل تصاویر (Snapshots) استفاده کرد. این معماری جدید نه تنها سرعت را حداقل چند برابر میکرد، بلکه امکان کار آفلاین، ایجاد شاخههای (Branches) متعدد و ادغام آنها را به شکلی بینقص ممکن ساخت.
ارثیهای که پس از دو هفته متولد شد
پروژهای که قرار بود یک راهحل موقت دو هفتهای باشد، از همان روزهای اولیه تبدیل به یک استاندارد جهانی شد. سیستم گیت با معماری توزیعشده خود، تمام محدودیتهای سیستمهای کلاینت-سرور قدیمی را از بین برد و به توسعهدهندگان اجازه داد تا بدون نگرانی از نقاط شکست واحد، روی پروژههای عظیم کار کنند. این ابزار امروز ستون فقرات اکوسیستم متنباز است و پلتفرمهای غولپیکری مانند گیتهاب و گیتلب بر پایه آن شکل گرفتهاند.
داستان پیدایش گیت ثابت میکند که گاه بهترین نوآوریها، ریشه در محدودیتها و فشارهای لحظهای دارند. وقتی بسترهای موجود پاسخگو نباشند، ضرورت ناگزیر سازندگان را به سمت راهحلهایی سوق میدهد که سالها پیشبینی نمیشد. صنعت نرمافزار امروز به شکلی عمیق به این ارثیه دو هفتهای وابسته است و هر تغییری در نحوه مدیریت کدها، بازتابی از تصمیمات معمارانهای است که آن روزهای پرهیجان تعیین کردند.





