گیت‌هاب قبل و بعد از مایکروسافت: واقعاً خرابش کردند؟

در سال ۲۰۱۸، مایکروسافت اعلام کرد که گیت‌هاب را با مبلغ ۷.۵ میلیارد دلار می‌خرد.

و برای چند ساعت، واقعاً این حس را داشتی که یکی کل اینترنت را پاک کرده.

توسعه‌دهنده‌ها ریخته بودند به هم.

«گیت‌هاب مُرد.»

«اوپن‌سورس تموم شد.»

«وقتشه بریم GitLab.»

«مایکروسافت قراره Windows Update رو بذاره وسط git push

خب، شاید آخری را کسی واقعاً نگفته باشد.

ولی احتمالاً چند نفر ته دلشان همین را تصور کرده بودند.

مایکروسافت معامله را ۴ ژوئن ۲۰۱۸ اعلام کرد و خرید گیت‌هاب هم در ماه اکتبر رسماً نهایی شد.

و راستش، این همه نگرانی هم کاملاً بی‌دلیل نبود.

بالاخره پای مایکروسافت وسط بود.

شرکتی که سابقه‌اش با دنیای اوپن‌سورس، آن زمان‌ها، خیلی هم دوستانه نبود.

پس وقتی مایکروسافت یکهو وارد بزرگ‌ترین مهمانی اوپن‌سورس اینترنت شد و عملاً گفت:

بچه‌ها، از این به بعد این ساختمون مال ماست.

طبیعی بود یک عده کمی نگران شوند.

حق هم داشتند.

لوگوی مایکروسافت

اما حالا تقریباً هشت سال گذشته.

پس شاید به‌جای اینکه هنوز سر مرگ اوپن‌سورس عزاداری کنیم، بهتر باشد یک سؤال درست‌وحسابی بپرسیم:

بعد از خرید گیت‌هاب توسط مایکروسافت، واقعاً چه اتفاقی افتاد؟

---

گیت‌هاب قبل از مایکروسافت

قبل از اینکه مایکروسافت با آن کیف پول گنده‌ی شرکتی‌اش از راه برسد، گیت‌هاب حس دیگری داشت.

نه اینکه از هر لحاظ بهتر باشد.

فقط... ساده‌تر بود.

گیت‌هاب تقریباً کافه‌ی باحال محله برای توسعه‌دهنده‌ها بود.

کدت را آپلود می‌کردی.

Repositoryها را clone می‌کردی.

Issue باز می‌کردی.

Pull Request می‌فرستادی.

بعد هم سه روز با یکی بحث می‌کردی که اسم متغیر userData باشد یا user_data.

دیگر خودتان می‌دانید.

برنامه‌نویسی است دیگر.

گیت‌هاب قبل از مایکروسافت در سال ۲۰۱۷

آن موقع پنجاه تا محصول مختلف نبود که هرکدام بخواهند یک تکه از workflow توسعه‌ات را صاحب شوند.

Copilot هم کنارت نبود که قبل از اینکه خودت بفهمی داری چه می‌نویسی، تابع را برایت تمام کند.

Codespaces نبود.

یک پلتفرم عظیم CI/CD هم داخل هر repository جا خوش نکرده بود.

گیت‌هاب تقریباً فقط روی یک چیز تمرکز داشت:

میزبانی Git repositoryها و همکاری روی کد.

و اتفاقاً همین کار را خیلی خوب انجام می‌داد.

ولی گیت‌هاب قدیمی هم بی‌نقص نبود

بعضی‌ها گاهی گیت‌هاب قبل از مایکروسافت را طوری تعریف می‌کنند انگار یک بهشت جادویی برای برنامه‌نویس‌ها بوده.

نبود.

برای کاربران رایگان، کار با repositoryهای خصوصی خیلی محدودتر از امروز بود.

خیلی از قابلیت‌هایی که امروز برایمان کاملاً عادی‌اند، آن زمان یا اصلاً وجود نداشتند یا فقط با پلن پولی در دسترس بودند.

GitLab و Bitbucket هم بیکار ننشسته بودند و مخصوصاً در repositoryهای خصوصی و ابزارهای توسعه یکپارچه حسابی رقابت می‌کردند.

پس بله، گیت‌هاب قدیمی تمیز بود.

جمع‌وجور بود.

حس یک ابزار واقعی برای توسعه‌دهنده‌ها را می‌داد.

اما محدودیت هم کم نداشت؛ محدودیت‌هایی که وقتی نوستالژی می‌گیریم، خیلی راحت یادمان می‌رود.

---

بعد مایکروسافت از راه رسید

ژوئن ۲۰۱۸ بود که مایکروسافت خرید گیت‌هاب را با قیمت ۷.۵ میلیارد دلار اعلام کرد.

و توسعه‌دهنده‌ها هم خیلی... عادی واکنش نشان دادند.

یعنی:

اصلاً عادی نبود.

بخش بزرگی از ماجرا به سابقه‌ی مایکروسافت برمی‌گشت.

مایکروسافت امروز یکی از بازیگرهای مهم دنیای اوپن‌سورس است.

ولی توسعه‌دهنده‌های قدیمی‌تر، یک مایکروسافت کاملاً متفاوت را یادشان بود.

همان شرکتی که استیو بالمر، مدیرعامل سابقش، یک زمانی لینوکس را «سرطان» خوانده بود.

پس عجیب نبود که بعضی‌ها بدترین آینده‌ی ممکن را تصور کنند.

گیت‌هاب قرار بود تبدیل شود به یک سرویس فقط برای Azure.

پشتیبانی از Linux کم‌کم محو می‌شد.

Visual Studio somehow اجباری می‌شد.

و احتمالاً هر repository به یک حساب Microsoft، یک حساب Xbox و سه بار restart سیستم نیاز پیدا می‌کرد.

هیچ‌کدام اتفاق نیفتاد.

گیت‌هاب همچنان با تقریباً هر زبان، سیستم‌عامل، ادیتور و cloud platformی که مردم از قبل استفاده می‌کردند کار کرد.

و بعد یک اتفاق کمی اعصاب‌خردکن افتاد.

گیت‌هاب شروع کرد به... بهتر شدن.

آره.

می‌دانم.

قرار بود اینجا از مایکروسافت متنفر باشیم.

یک دقیقه صبر کنید.

---

Repositoryهای خصوصی رایگان شدند

یکی از بزرگ‌ترین تغییرهای اولیه بعد از خرید، ژانویه ۲۰۱۹ اتفاق افتاد.

گیت‌هاب repositoryهای خصوصی نامحدود را برای کاربران رایگان کرد.

بعدتر محدودیت‌های مربوط به تعداد collaboratorها هم کمتر شد.

این واقعاً اتفاق بزرگی بود.

دانشجوها می‌توانستند پروژه‌ها و تکالیفشان را خصوصی نگه دارند.

توسعه‌دهنده‌ها می‌توانستند پروژه‌های شخصی‌شان را بسازند، بدون اینکه کل اینترنت بالای سرشان باشد.

تیم‌های کوچک هم می‌توانستند بدون اینکه همان اول کار پول اشتراک بدهند، کنار هم کار کنند.

و از همه مهم‌تر، recruiterها دیگر نمی‌توانستند آن repository افتضاحی را که شش سال پیش ساعت سه صبح ساخته بودید پیدا کنند.

همه برنده‌اند.

خب...

گیت‌هاب احتمالاً چندتا اشتراک پولی کمتر فروخت.

ولی ظاهراً مایکروسافت از گرسنگی نمرد.

---

GitHub Actions از راه رسید

بعد گیت‌هاب ظاهراً یک نگاهی به خودش انداخت و گفت:

چرا توسعه‌دهنده باید برای اجرای CI/CD از گیت‌هاب برود بیرون؟

و GitHub Actions آمد.

یکهو می‌توانستی build، تست، release، deployment و تقریباً هر کار تکراری دیگری را مستقیم داخل repository خودکار کنی.

GitHub Actions

کد را push کن.

تست‌ها را اجرا کن.

اپلیکیشن را build کن.

یک Docker image بساز.

Deploy کن.

بعد بفهمی environment variable اشتباهی را deploy کرده‌ای.

برگرد و درستش کن.

بعد هم طوری رفتار کن که انگار هیچ اتفاقی نیفتاده.

همه‌ی این‌ها بدون اینکه از گیت‌هاب بیرون بروی.

این یکی از بزرگ‌ترین تغییرهایی بود که گیت‌هاب به‌عنوان یک محصول تجربه کرد.

قبل از Actions، گیت‌هاب بیشتر جایی بود که کدت آنجا زندگی می‌کرد.

بعد از Actions، کم‌کم تبدیل شد به جایی که workflow توسعه‌ات هم آنجا زندگی می‌کرد.

و اینجا بود که تأثیر مایکروسافت کمی واضح‌تر شد.

نه لزوماً به شکل بد.

ولی مایکروسافت ۷.۵ میلیارد دلار خرج نکرد چون ساتیا نادلا یک روز صبح تصمیم گرفته بود جایی برای نگهداری پروژه‌های JavaScript آخر هفته‌اش لازم دارد.

گیت‌هاب داشت تبدیل می‌شد به زیرساخت.

---

بعد Codespaces آمد

مایکروسافت صاحب Visual Studio Code است.

مایکروسافت صاحب GitHub است.

پس بالاخره یک نفر به این دو محصول نگاه کرد و گفت:

خب چرا این دوتا هنوز از هم جدا هستند؟

و GitHub Codespaces وارد شد.

GitHub Codespaces

ایده خیلی ساده است.

به‌جای اینکه نصف صبح را صرف نصب dependencyها، تنظیم environment و فهمیدن این کنی که پروژه فقط با Node 16.13.1 و در شرایط جوی مناسب کار می‌کند، یک محیط توسعه آماده را در cloud بالا می‌آوری.

تقریباً:

VS Code + GitHub + cloud computing

با امضای مایکروسافت.

اکوسیستم توسعه‌دهنده‌ی مایکروسافت کم‌کم داشت مثل Avengers کنار هم جمع می‌شد.

فقط با این تفاوت که همه کارت شناسایی شرکت داشتند.

Codespaces واقعاً مفید است، مخصوصاً برای onboarding، تیم‌های بزرگ و پروژه‌هایی که environment توسعه‌شان پیچیده است.

ولی هم‌زمان، یک مثال خیلی خوب از این است که گیت‌هاب چطور تغییر کرده.

گیت‌هاب قدیمی:

این هم repository شما.

گیت‌هاب امروزی:

این هم repository شما، محیط توسعه، پلتفرم اتوماسیون، package registry، اسکنر امنیتی، برنامه‌نویس هوش مصنوعی و احتمالاً وام مسکن آینده‌تان.

باشه.

وام مسکن شاید نه.

فعلاً.

---

و بعد مایکروسافت به گیت‌هاب هوش مصنوعی داد

قابل پیش‌بینی بود.

چون ظاهراً در دهه ۲۰۲۰ هیچ محصول نرم‌افزاری اجازه نداشت بدون یک گوشه‌ی AI به زندگی ادامه دهد.

GitHub Copilot در سال ۲۰۲۱ آمد.

GitHub Copilot

و برخلاف خیلی از دکمه‌های «AI-powered» که شرکت‌ها شروع کردند به چپاندن داخل هر چیزی، Copilot واقعاً نحوه‌ی کدنویسی خیلی از توسعه‌دهنده‌ها را تغییر داد.

می‌توانست پیشنهاد بدهد:

خط کد.

تابع.

تست.

مستندات.

Boilerplate.

و گاهی هم کدی که باعث می‌شد چند دقیقه به مانیتور خیره بمانی و از خودت بپرسی اصلاً چرا وارد دنیای نرم‌افزار شدی.

ولی قسمت واقعاً جالب ماجرا اینجاست:

تکمیل کد با GitHub Copilot

مایکروسافت حالا این‌ها را داشت:

  • GitHub
  • Visual Studio Code
  • Azure
  • GitHub Copilot

این یعنی بخش خیلی بزرگی از workflow روزانه‌ی یک توسعه‌دهنده، داخل یک اکوسیستم شرکتی قرار گرفته.

راحت است؟

کاملاً.

یک‌کم ترسناک است؟

آن هم کاملاً.

---

خب، چه چیزهایی بدتر شدند؟

خب.

دیگر بس است از مایکروسافت تعریف کنیم.

گیت‌هاب امروزی قطعاً چیزهایی دارد که نسبت به قبل بدتر به نظر می‌رسند.

گیت‌هاب سنگین‌تر شده

گیت‌هاب قدیمی متمرکز بود.

گیت‌هاب امروزی گاهی شبیه خانه‌ای است که یکی مدام یک اتاق جدید به آن اضافه می‌کند، بدون اینکه یک بار هم نقشه‌ی اولیه را نگاه کند.

Actions.

Projects.

Packages.

Codespaces.

Copilot.

Security.

Discussions.

Marketplace.

Enterprise features.

AI features.

AI features بیشتر.

و احتمالاً دیر یا زود یک قابلیت AI هم می‌آید که وظیفه‌اش این است که تمام قابلیت‌های AI دیگر را برایت پیدا کند.

هرکدام از این قابلیت‌ها به‌تنهایی دلیل خوبی برای وجود داشتن دارند.

ولی کنار هم؟

گیت‌هاب دیگر واقعاً شبیه یک ابزار کوچک و جمع‌وجور برای توسعه‌دهنده‌ها نیست.

یک پلتفرم است.

یک پلتفرم خیلی بزرگ.

---

گیت‌هاب شرکتی‌تر شده

شاید این بزرگ‌ترین تفاوت باشد.

گیت‌هاب قدیمی شبیه یک شرکت توسعه‌دهنده بود که اتفاقاً خیلی بزرگ شده بود.

گیت‌هاب امروزی گاهی شبیه یک شرکت خیلی بزرگ است که اتفاقاً ابزار توسعه‌دهنده می‌سازد.

این دوتا فرق دارند.

محصول مرتب‌تر و polishedتر شده.

زیرساخت بزرگ‌تر شده.

ابزارهای enterprise خیلی جدی‌تر شده‌اند.

اما آن فرهنگ کمی عجیب و خاص توسعه‌دهنده‌ها که قبلاً بیشتر به چشم می‌آمد، حالا کمتر دیده می‌شود.

وقتی پلتفرم محبوب توسعه‌دهنده‌ها را به قیمت ۷.۵ میلیارد دلار می‌خری، بالاخره یک روز یکی از بخش Enterprise Sales وارد اتاق می‌شود.

---

مایکروسافت همه‌جا هست

یک نگرانی دیگر هم وجود دارد که دیگر فقط بحث نوستالژی نیست.

گیت‌هاب برای توسعه‌ی نرم‌افزار مدرن فوق‌العاده مهم شده.

حجم مسخره‌ای از توسعه‌ی اوپن‌سورس آنجا اتفاق می‌افتد.

شرکت‌ها به آن وابسته‌اند.

پروژه‌های متن‌باز به آن وابسته‌اند.

توسعه‌دهنده‌ها حتی هویت حرفه‌ای‌شان را بر اساس آن ساخته‌اند.

و تمام این پلتفرم متعلق به یکی از بزرگ‌ترین شرکت‌های فناوری دنیاست.

حتی اگر مایکروسافت کاملاً درست رفتار کند، اینکه این حجم از زیرساخت توسعه‌دهنده‌ها زیر دست یک شرکت واحد جمع شده، چیزی است که بد نیست کمی به آن فکر کنیم.

خود Git غیرمتمرکز است.

ولی فرهنگی که دور GitHub شکل گرفته، روزبه‌روز متمرکزتر می‌شود.

یک‌کم طعنه‌آمیز است.

---

گیت‌هاب قدیمی در برابر گیت‌هاب امروزی

احتمالاً ساده‌ترین راه برای دیدن اتفاقی که افتاده همین است.

گیت‌هاب قبلاً بیشتر جایی بود که توسعه‌دهنده‌ها کدشان را نگه می‌داشتند و روی آن با هم کار می‌کردند.

امروز دارد تلاش می‌کند جایی باشد که تقریباً کل چرخه‌ی توسعه‌ی نرم‌افزار در آن اتفاق می‌افتد.

مخزن مدرن گیت‌هاب

گیت‌هاب قبل از مایکروسافت

  • ساده
  • متمرکز
  • توسعه‌دهنده‌محور
  • میزبانی عالی Git
  • جامعه‌ی قدرتمند اوپن‌سورس
  • ابزارهای داخلی کمتر
  • محدودیت بیشتر برای توسعه‌ی خصوصی
  • همان حس قدیمی و خاص پلتفرم‌های توسعه‌دهنده

گیت‌هاب بعد از مایکروسافت

  • repositoryهای خصوصی رایگان
  • GitHub Actions
  • Codespaces
  • GitHub Copilot
  • ابزارهای امنیتی بهتر
  • پشتیبانی بهتر برای سازمان‌ها
  • اکوسیستم خیلی بزرگ‌تر
  • پیچیده‌تر
  • شرکتی‌تر
  • خیلی بیشتر مایکروسافتی

در اصل، گیت‌هاب از این:

کدت را اینجا بذار.

رسید به این:

لطفاً کل دوران حرفه‌ای مهندسی نرم‌افزارت را داخل همین تب مرورگر بگذرون.

---

پس... مایکروسافت واقعاً گیت‌هاب را نابود کرد؟

نه.

ببخشید.

اگر جواب «بله» بود، نوشتن این مقاله خیلی راحت‌تر می‌شد.

مایکروسافت گیت‌هاب را نابود نکرد.

اگر فقط محصولی را که امروز توسعه‌دهنده‌ها استفاده می‌کنند ملاک قرار بدهیم، گیت‌هاب چیزهای زیادی به دست آورده.

توسعه‌ی خصوصی خیلی در دسترس‌تر شد.

GitHub Actions آن را تبدیل به یک پلتفرم جدی برای اتوماسیون کرد.

Codespaces توسعه‌ی ابری را ساده‌تر کرد.

Copilot یک شکل کاملاً جدید از کدنویسی با کمک AI را جا انداخت.

ابزارهای امنیتی بهتر شدند.

ابزارهای enterprise بهتر شدند.

و گیت‌هاب برای چیزهایی خیلی فراتر از نگهداری repositoryهای Git کاربرد پیدا کرد.

مایکروسافت وارد گیت‌هاب نشد و شروع نکرد repositoryهای لینوکس را یکی‌یکی پاک کند، در حالی که از ته دل می‌خندید.

با توجه به واکنش‌هایی که در سال ۲۰۱۸ می‌دیدیم، ظاهراً خیلی‌ها دقیقاً انتظار همین را داشتند.

---

اما مایکروسافت قطعاً گیت‌هاب را تغییر داد

احتمالاً این نقد دقیق‌تری است.

مایکروسافت گیت‌هاب را نابود نکرد.

آن را شرکتی‌تر کرد.

گیت‌هاب قبلاً بیشتر شبیه خانه‌ای برای کد بود.

حالا کم‌کم شبیه این شده که مایکروسافت می‌خواهد گیت‌هاب را تبدیل کند به سیستم‌عامل توسعه‌ی نرم‌افزار.

کدت را آنجا بنویس.

همان‌جا review کن.

همان‌جا تست کن.

همان‌جا deploy کن.

محیط توسعه‌ات را همان‌جا اجرا کن.

آسیب‌پذیری‌های امنیتی را همان‌جا اسکن کن.

از AI بخواه نصف کدت را همان‌جا بنویسد.

و ترجیحاً چند سرویس Azure هم به آن وصل کن.

راحت است.

خیلی راحت.

تقریباً مشکوک‌وار راحت.

مایکروسافت طی چند سال گذشته عملاً یک هتل خیلی راحت برای توسعه‌دهنده‌ها ساخته.

اتاق‌ها خوب‌اند.

Wi-Fi خوب است.

صبحانه هم دارد.

فقط هر از گاهی یادت می‌افتد که کل ساختمان مال مایکروسافت است.

---

آیا فروختن گیت‌هاب به مایکروسافت اشتباه بود؟

اگر سال ۲۰۱۸ از خیلی از توسعه‌دهنده‌ها می‌پرسیدی، احتمالاً همان لحظه می‌گفتند بله.

تقریباً هشت سال بعد؟

دیگر خیلی سخت‌تر می‌شود گفت مایکروسافت پلتفرم را خراب کرده.

گیت‌هاب امروز به‌مراتب قدرتمندتر است.

برای توسعه‌دهنده‌های مستقل راحت‌تر شده.

برای تیم‌ها بهتر است.

ابزارهای اتوماسیونش واقعاً خوب‌اند.

اکوسیستمش هم عظیم شده.

و مایکروسافت، در مجموع، جلوی تبدیل شدن گیت‌هاب به یک پلتفرم عجیب و غریبِ فقط Windows و Azure را گرفته است.

پس...

باید انصاف را رعایت کنیم.

متأسفانه.

ولی خب، یک چیزهایی هم از دست رفت.

گیت‌هاب بزرگ‌تر شد.

سنگین‌تر شد.

پیچیده‌تر شد.

و قطعاً شرکتی‌تر شد.

از اینکه شبیه بزرگ‌ترین باشگاه توسعه‌دهنده‌های دنیا باشد، تبدیل شد به چیزی شبیه بزرگ‌ترین ساختمان اداری توسعه‌دهنده‌های دنیا.

پایین ساختمان نگهبان دارد.

طبقه هفتم بخش فروش سازمانی است.

Copilot کنار دستت نشسته.

Azure هم احتمالاً یک جایی در زیرزمین است.

و مایکروسافت رسماً صاحب کل ساختمان است.

اما راستش؟

بی‌خیال.

آن‌قدرها هم بد نیست.

ما غر زدیم.

تهدید کردیم بریم GitLab.

شوخی کردیم که مایکروسافت اوپن‌سورس را نابود می‌کند.

و صبح روز بعد دوباره GitHub را باز کردیم و کدمان را دقیقاً همان‌جایی push کردیم که همیشه می‌کردیم.

تقریباً هشت سال گذشته و بیشترمان هنوز همان‌جاییم.

پس شاید مایکروسافت واقعاً گیت‌هاب را نابود نکرده باشد.

فقط گاراژ محبوب توسعه‌دهنده‌ها را خرید، تبدیلش کرد به یک دفتر مرکزی عظیم و شرکتی، کلی امکانات مفید داخلش ریخت که خودمان هم یواشکی دوستشان داریم...

و somehow کاری کرد که هر روز دوباره برگردیم.

4 comments