ده روزی که گیت ساخته شد
آوریل ۲۰۰۵ است. هستهٔ لینوکس ابزار مدیریت نسخهاش را از دست داده و به گفتهٔ جاناتان کوربت از نشریهٔ الدبلیوان، که زیدینت آن را نقل کرد، توسعهٔ هسته در آن چند هفته «تا حد زیادی متوقف شده بود». توروالدز پیش از آن چند هفته کوشیده بود میان اندرو تریجل و لری مکوی میانجیگری کند. خودش بعدها گفت: «چند هفته (یا چند ماه؟ اینطور حس میشد)»، اما نتیجهای نداشت.
کسی که از مدیریت نسخه بیزار بود
طنز ماجرا اینجاست که توروالدز هیچ علاقهای به این موضوع نداشت. او ده سال بعد، در گفتوگویی با بنیاد لینوکس، گفت که مدیریت کد منبع را «تقریباً کمجاذبهترین چیز در دنیای رایانه» میدانست و از همهٔ ابزارهای آن «با تمام وجود» بیزار بود. اما بیتکیپر نگاهش را عوض کرده بود: داشتن نسخهٔ محلی کامل از مخزن و ادغام توزیعشده، به گفتهٔ او، «اتفاق بزرگی» بود. به باور او، این شیوه یکی از بزرگترین دردسرهای این ابزارها را از میان برمیداشت: سیاستبازی بر سر اینکه «چه کسی حق تغییر دارد». وقتی هر کس مخزن خودش را دارد، این دعوا بیمعنا میشود.
او نمیخواست به روزهای پیش از بیتکیپر برگردد و ابزارهای آزاد موجود را هم کافی نمیدانست. به گفتهٔ خودش، نیازهای سرعتیاش را هیچکدام «حتی از دور» برآورده نمیکردند و نگران یکپارچگی کد و کل روند کار هم بود. پس تصمیم گرفت ابزار خودش را بنویسد.
یک روز تا خودمیزبانی، حدود ده روز تا هسته
بنیاد لینوکس بعدها اینطور روایت کرد که توروالدز «آخر هفته ناپدید شد و هفتهٔ بعد با گیت بازگشت». خود او جزئیات را دقیقتر گفت: حدود یک روز طول کشید تا گیت «خودمیزبان» شود، یعنی بتواند تغییرات خودش را با خودش ثبت کند. و حدود ده روز طول کشید تا نخستین تغییر هسته را با گیت ثبت کند.
اما او تأکید کرد که این «دویدنی دیوانهوار برای کدنویسی» نبود. بیشتر کار در ساعات روز انجام شد، هرچند چند ثبت نیمهشب و دو ثبت ساعت دو بامداد هم در تاریخچه دیده میشود. نکتهٔ اصلی، به گفتهٔ او، کدنویسی نبود؛ طراحی شیوهٔ سازماندادن دادهها بود؛ ایدههایی که مدتی در ذهنش پرورانده بود. او مشکلات دیگران را دیده بود و میدانست از چه باید پرهیز کند.
اهداف این ابزار، به روایت کتاب رسمی گیت، روشن بود: سرعت، طراحی ساده، پشتیبانی قوی از هزاران شاخهٔ موازی، توزیعشده بودن کامل، و توان مدیریت کارآمد پروژهای به بزرگی هستهٔ لینوکس.
نامی برای خندیدن
نخستین ثبت در مخزن گیت، که هنوز در دسترس است، یک پروندهٔ راهنما دارد که با این جمله آغاز میشود: «گیت، ردیاب محتوای احمق». و ادامه میدهد که «گیت» بسته به حالوهوای شما میتواند هر معنایی داشته باشد. در گویش عامیانهٔ انگلیسی بریتانیایی، این واژه به آدمی ناخوشایند گفته میشود؛ شوخیای که توروالدز آگاهانه با خودش کرده بود.
واگذاری
مهمترین تصمیم این قسمت اما چند ماه بعد گرفته شد. در ۲۶ ژوئیهٔ ۲۰۰۵، توروالدز در فهرست رایانامهٔ گیت اعلام کرد که نگهداری پروژه را به جونیو هامانو، یکی از فعالترین مشارکتکنندگان، سپرده است. او نوشت: «جونیو انتخاب بدیهی بود» و توضیح داد که گیت را رها نمیکند، بلکه ترجیح میدهد بهجای پیگیری همهٔ جزئیات، بهعنوان یک مشارکتکننده کار کند. هامانو از آن روز تا امروز نگهدارندهٔ گیت است.
نقطهٔ عطف
نقطهٔ عطف، ترکیب دو تصمیم بود: ساختن سریع ابزاری بر پایهٔ ایدههایی که از پیش پخته شده بود، و سپس کنار رفتن بهموقع. توروالدز مشکل فوری خودش را حل کرد و بعد ابزار را به کسی سپرد که میتوانست با تمرکز کامل آن را رشد دهد.
درسی برای کسبوکارها
بحران میتواند انگیزهٔ بهترین نوآوریها باشد، به شرط آنکه پیشتر به مسئله فکر کرده باشید. سرعت توروالدز از تجربهٔ قبلیاش میآمد، نه از شتابزدگی.
دوم، پیش از کدنویسی، ساختار داده را درست طراحی کنید. به گفتهٔ خود او، «ترفند اصلی» همین بود.
سوم، رهبر خوب میداند کی مسئولیت را واگذار کند. بنیانگذاری که همهچیز را در دست نگه میدارد، خودش گلوگاه رشد میشود.
در قسمت بعد: گیت توانمند اما دشوار بود. حتی یکی از برنامهنویسان باسابقهٔ هسته به شوخی گفت گیت «عمداً طوری طراحی شده که حس کنید کمتر از آنچه فکر میکردید باهوشید». چند نفر تصمیم گرفتند آن را برای همه آسان کنند.
منابع / Sources
- "10 Years of Git: An Interview with Git Creator Linus Torvalds", Linux.com / The Linux Foundation, Jennifer Cloer, 2015-04-06 — https://www.linux.com/news/10-years-git-interview-git-creator-linus-torvalds/
- "Tridgell speaks out in BitKeeper war (Corbet quote)", ZDNet, 2005-04-20 — https://www.zdnet.com/article/tridgell-speaks-out-in-bitkeeper-war/
- "A Short History of Git", Pro Git book, git-scm.com, n.d. — https://git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git
- "Initial revision of "git", the information manager from hell (commit e83c516, README)", git/git on GitHub, 2005-04-07 — https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290
- "Meet the new maintainer..", LWN.net (Torvalds' git list post), 2005-07-26 — https://lwn.net/Articles/145123/