
داستان برخی از بزرگترین تحولات دنیای نرمافزار آزاد با رویدادی ساده آغاز شده است. لینوکس با پروژه شخصی لینوس توروالدز شروع شد و او هرگز انتظار نداشت از اتاق خوابش فراتر برود. اما کمتر کسی میداند که یک ممنوعیت در سال ۲۰۰۵ شکل سازماندهی پروژههای کدنویسی در سراسر جهان را تغییر داد؛ اگر تاکنون از Git استفاده کردهاید، مدیون تصمیمی هستید که یک مدیرعامل ناراضی گرفت.
آغاز پرهرجومرج توسعه لینوکس
در اوایل دهه ۲۰۰۰، هماهنگ کردن کد میان توسعهدهندگان آسان نبود. در سال ۲۰۰۲، راهحل لینوس توروالدز استفاده از ایمیل بود. افراد وصلهها (Patch) یا کد منبع را روی رایانه خود مینوشتند، آن را به ایمیل پیوست میکردند و برای دیگران میفرستادند. گاهی همهچیز در یک فایل TAR بستهبندی میشد؛ همان چیزی که بعدها نام «تاربال» (tarball) گرفت.
با افزایش تعداد مشارکتکنندگان و حجم کد، توروالدز نمیتوانست از عهده ایمیلهای بیشمار برآید. او به یک سیستم کنترل نسخه توزیعشده (Distributed Version Control System) به نام BitKeeper روی آورد. این ابزار متنباز نبود و متعلق به شرکتی به نام BitMover بود که مدیرعامل آن، لری مکوی، اداره میکرد.
مکوی پیشنهاد نسبتاً خوبی به توروالدز داده بود: پروژه لینوکس میتوانست از خدمات BitKeeper بهصورت رایگان استفاده کند، اما هیچیک از توسعهدهندگان لینوکس نباید تلاش میکرد نحوه کار BitKeeper را مهندسی معکوس (Reverse Engineer) کند. بااینحال، کنجکاوی یکی از توسعهدهندگان این توافق را به پایان رساند.
نقض شرط توافق و اخراج جامعه لینوکس
جامعه لینوکس حدود سه سال با BitKeeper پیش رفت و سیستمعامل با تلاشهای بینالمللی شکل گرفت. با این حال، یک توسعهدهنده به نام اندرو تریگل تصمیم گرفت فقط تماشا نکند. او تصور کرد اگر نگاهی به کد BitKeeper بیندازد تا پروتکلهای شبکه آن را بفهمد، میتواند ابزاری به نام SourcePuller بسازد که دادهها را بدون نرمافزار اختصاصی از مخزن BitKeeper بیرون بکشد. راهحل معمول یک توسعهدهنده متنباز برای هر مشکل، ساخت ابزار خودش است.
مکوی از وجود این ابزار باخبر شد و اعلام کرد جامعه لینوکس تنها شرط توافق را نقض کرده است. در ۵ آوریل، او مجوز رایگان جامعه لینوکس برای استفاده از BitKeeper را لغو کرد و آنها را عملاً در خیابان دیجیتال رها کرد. توروالدز به سرعت به جایگزین نیاز داشت؛ اما این بار برخلاف سال ۲۰۰۲، تجربه کار با یک سیستم کنترل نسخه توزیعشده را داشت. بنابراین، بار دیگر ثابت کرد توسعهدهندگان متنباز مشکلات را چگونه حل میکنند: او تصمیم گرفت ابزار خودش را بسازد.
تولد Git پس از ۱۱ روز کدنویسی
در ۷ آوریل، دو روز پس از اعلام اخراج جامعه لینوکس از BitKeeper، توروالدز مشغول ساخت جایگزین بود. ۱۱ روز بعد، این ابزار به اندازهای بالغ شده بود که بتواند کد منبع خودش را مدیریت کند. هنوز برای مدیریت لینوکس آماده نبود، اما شروعی بود و مهمتر از همه، نسخه متنباز و اختصاصی خودش از بخشی حیاتی در توسعه هسته (Kernel) به شمار میرفت.
هر پروژه خوبی به نام نیاز دارد. توروالدز میتوانست نامهای حرفهای زیادی انتخاب کند، اما «Git» را برگزید. او در مصاحبهای با PC World درباره دلیل این نام گفته است که Git در زبان عامیانه بریتانیایی به معنای «فردی پست» است و به شوخی توضیح داده که چون خودخواه است، پروژههایش را به نام خودش نامگذاری میکند: ابتدا Linux و اکنون Git.
در README کد منبع Git نیز با این نام شوخی شده و معانی مختلفی برای آن فهرست شده است؛ از یک ترکیب سهحرفی تصادفی و قابل تلفظ که در دستورهای رایج یونیکس استفاده نمیشود، تا معانی مثبت و منفی در فرهنگ لغت عامیانه. در همین متن، بسته به حالوهوای کاربر، Git میتواند «ردیاب اطلاعات جهانی» (Global Information Tracker) یا عبارتی طنزآمیز درباره خرابیها باشد.
از هسته لینوکس تا GitHub
در ژوئن ۲۰۰۵، Git رسماً خانه جدید هسته لینوکس شد و از نسخه ۲.۶.۱۲ کار خود را آغاز کرد. سه سال بعد، کریس وانستراث، تام پرستون-ورنر، پیجی هایت و اسکات چاکون کار برجسته توروالدز را ستودند، اما از دشواری یافتن و دانلود پروژههای Git دیگر ناراضی بودند. آنها GitHub را توسعه دادند و منتشر کردند؛ مکانی مرکزی برای انتشار، اشتراکگذاری و دانلود مخازن (Repository). باقی ماجرا به تاریخ پیوست.
اگر مکوی هرگز جامعه لینوکس را از BitKeeper اخراج نمیکرد، شاید امروز همچنان از آن استفاده میشد. با این حال، تصمیم او به خلق دومین پروژه بزرگ متنباز توروالدز کمک کرد.