اگرچه از روی میزان درآمد یک شرکت میتوان به بزرگی آن پیبرد، اما گاهی اوقات از روی زیرساخت یک شرکت، که در حوزهٔ برنامهنویسی یکی از این زیرساختها حجم سورسکد است، نیز میتوان به تأثیرگذاری یک شرکت پی برد. گفته میشود که سیستمعامل ویندوز که از سال ۱۹۸۰ تاکنون در حال توسعه است، چیزی در حدود ۵۰ میلیون خط کد دارا است و همین سورسکد عظیم سیستمعامل ویندوز را به یکی از بزرگترین نرمافزارهای نوشته شده تا حال حاضر مبدل ساخته است اما آنچه در ادامه قصد داریم مورد بررسی قرار دهیم، آمار و ارقام مرتبط با سورسکد سرویسهای مختلف گوگل است.
یکی از اعضای گوگل به نام Rachel Potvin در یک کنفرانس مهندسی که در سیلیکونولی برگزار شده بود، تخمین زد که سورسکد مورد نیاز برای اجرای کلیهٔ سرویسهای شرکت گوگل، یا بهتر بگوییم شرکت الفبا، از موتور جستجوی گوگل گرفته تا جیمیل، گوگلمپس، یوتیوب، گوگل داکس، کلندر و غیره چیزی در حدود ۲/۰۰۰/۰۰۰/۰۰۰ خط کد است.
اگر بخواهیم نرمافزارهای گوگل را با سیستمعامل اپنسورس گنو/لینوکس مقایسه کنیم، باید بگوییم که در لینوکس چیزی در حدود ۱۵ میلیون خط کد وجود دارد که در ۴۰ هزار فایل مجزا قرار گرفتهاند اما این در حالی است که مهندسین شرکت گوگل ۱۵ میلیون خط کد را صرفاً در یک هفته در ۲۵۰ هزار فایل مختلف بازبینی میکنند!
تعداد مهندسینی که به این سورسکد دسترسی دارند، چیزی در حدود ۲۵۰۰۰ نفر است که در سراسر دنیا پخش هستند اما نکتهٔ جالب توجه این است که این کدها صرفاً در یک ریپازیتوری نگهداری میشوند که بدون شک میتوان لقب بزرگترین ریپازیتوری نرمافزاری دنیا را به آن داد. این ریپازیتوری چیزی شبیه به گیت است اما با این تفاوت که صرفاً در اختیار توسعهدهندگان خودِ شرکت گوگل است.
مسلماً مهندسین گوگل برای هندل کردن این حجم عظیمی از سورسکد، نیاز به یک سازوکار کنترل نسخه همچون گیت دارند. این سیستم اختصاصی کنترل نسخهٔ خود گوگل است که نام آن Piper بوده و وظیفهٔ کنترل کلیهٔ کامیتهای برنامهنویسان را بر عهده دارد. این ۲۵۰۰۰ مهندس نرمافزار گوگل در هر روز ۴۵۰۰۰ کامیت انجام میدهند که رقم قابلتوجهی است و این نشان از رو به رشد بودن کلیهٔ نرمافزارهای ساخت گوگل است.
جالب است بدانیم که در گوگل، مهندسین نرمافزار رتبهبندی میشوند و به سورسکدهای خیلی حساس، مثل الگورتیم پیجرنک گوگل، فقط عدهٔ خاصی از مهندسین دسترسی دارند و این سورسکدها هم در ریپازیتوریهای بهخصوص و مجزایی نگهداری میشوند. همچنین با توجه به اینکه سیستمعاملهای اندروید و کروم خیلی مرتبط با فناوریهای تحت وب گوگل نیستند، ریپازیتوریهای این سیستمعاملها نیز مجزا بوده و برای کنترل آنها نیز از سیستمهای کنترل نسخهٔ مجزایی استفاده میشود.
البته در پایان نیاز به توضیح است که آمار و ارقام اعلام شده در این پست با توجه به پویا بودن صنعت توسعهٔ نرمافزار، روز به روز دستخوش تغییر گشته و مسلماً تا چند سال آینده این ارقام چند برابر خواهند شد.