گفت‌وگو با ویل نوریس، سرپرست مهندسی دفتر برنامه‎های منبع باز گوگل
گوگل چگونه پروژه‎های متنِ ‎باز را مدیریت می‌کند؟
همه می‎دانند که گوگل یکی از پیش‌گامان دنیای منبع باز است. اما چه چیزی باعث شده است تا این شرکت چنین نقش متمایزی در اجتماع به‌سرعت در حال رشد توسعه‌دهندگان داشته باشد؟ ویل نوریس سرپرست مهندسی دفتر برنامه‎های منبع باز گوگل درباره این بخش از ابر شرکت گوگل به پرسش‎های ما پاسخ می‎دهد.

این مطلب یکی از مجموعه مقالات پرونده ویژه «نرم‌افزارهای متن‌باز» شماره 196 ماهنامه شبکه است. علاقه‌مندان می‌توانند کل این پرونده ویژه را از روی سایت شبکه دانلود کنند.


مدل توسعه فناوری‎های منبع باز در گوگل چیست؟

توسعه منبع باز در گوگل هم متنوع و هم توزیع شده است. پروژه‎های بزرگ‌تری که ما منتشر می‎کنیم معمولاً از گروه‎های اختصاصی توسعه و پشتیبانی در پروژه برخوردارند که با سایر توسعه‌دهندگان جانبی خود در تعامل هستند و از سایر بخش‎های دیگر درون‌سازمانی نیز پشتیبانی می‎کنند. خیلی از پروژه‎های کوچک‎تر تنها شامل یک یا دو مهندس است که برای کسب تجربه یا صرفاً سرگرمی‎ کار می‎کنند. در حالی که ما از یک دفتر مرکزی برنامه‎های منبع باز برخوردار هستیم که البته به نسبت اندازه شرکت تقریباً کوچک است. درعوض، با مشارکت صدها گروه و هزاران مهندس، صاحب ‎نظر فناوری، طراح و مدیر تولید به شکل‎های مختلف یک توسعه واقعی در این شرکت تحقق پیدا می‎کند. 

فرآیندی که گوگل دنبال می‎کند تا یک پروژه را به‌عنوان یک نسخه منبع باز شناسایی کند چیست؟

اغلب اوقات در گوگل تصمیم‌گیری درباره منبع باز بودن یک پروژه از طرف خود اعضای گروه سازنده محصول انجام می‎شود. دلایل زیادی برای این کار وجود دارد. TensorFlow یک مثال بارز از نحوه کار ما روی سیستم یادگیری ماشینی در گوگل طی سال‎های گذشته و یافتن فرصتی برای پیشرفت کل این صنعت به جلو است. از آنجا که منبع باز مدت زمان زیادی است که به بخشی از فرهنگ گوگل تبدیل شده، مزایای آن کاملاً آشکار است و به همین دلیل انتشار یک پروژه مشخص امری کاملاً طبیعی است.

مطلب پیشنهادی

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

به‌غیر از انتشار پروژه برای توسعه‌دهندگان، گوگل چگونه برای گسترش نوآوری منبع باز را مستقر می‎کند؟

در موقعیت داخلی اغلب کدهای منبع برای تمام محصولات گوگل در یک مخزن یکپارچه ذخیره‌سازی می‎شود. بنابراین از خیلی جهات شبیه به یک پروژه منبع باز بزرگ است که هرکسی می‎تواند کد دیگران را مشاهده کند. این به اعضای گوگل اجازه می‎دهد کدهای دیگران را بخوانند و از آن اطلاعات کسب کنند. همچنین، به‌معنای آن است که آن‌ها می‎توانند برای کمک به بهبود پروژه‎های دیگران برای آن‌ها کد اصلاحی بنویسند. فراتر از آن، ما برای اعضای گوگل این امکان را نیز فراهم کرده‎ایم تا بتوانند از کدهای منبع باز نوشته شده در خارج از شرکت نیز استفاده کنند. تنها در شرایط مقايسه تعداد خط‎های نوشته شده برای یک کد، تقريباً ما به همان اندازه که خودمان کدنویسی کردیم از کدهای منبع باز خارجی نیز استفاده کرده‎ایم.

پروژه‎های منبع باز پیشنهادی که گوگل برای ایجاد راه حل‎های جدید استفاده می‎کند شامل چه چیزهایی است؟

احتمالاً هیچ محصولی از گوگل را پیدا نمی‎کنید که به طریقی با منبع باز ارتباط نداشته باشد. از یک کتابخانه که مستقیم توسط یک محصول یا ابزار آزمایشی مورد استفاده قرار گرفته تا مراکز داده ما همگی به‌نوعی با متن باز در ارتباط هستند. پروژه‎های بزرگی مثل لینوکس نیز در مراکز داده ما و در قلب محصولاتی مثل اندرويد و سیستم عامل کروم پیدا می‎شوند. به همین ترتیب، LLVM به‌عنوان بخش گسترده‎ای از ابزارهای داخلی و اغلب زبان‎های توسعه که ما استفاده می‎کنیم همگی منبع باز هستند.

مهندسان منبع باز در گوگل چطور چرخه حیات یک پروژه را برنامه‌ریزی می‎کنند؟

ما هرگز برای منبع باز رویکردی تحت عنوان «یک اندازه مناسب همه» نداشتیم. همچنین، با تصمیماتی که از سوی مسئولان پروژه اتخاذ می‎شود نیز هیچ مشکل خاصی نداریم. اغلب پروژه‎های ما کاملاً باز توسعه پیدا می‎کنند و برنامه‎ریزی و تصمیم‎گیری داخلی خیلی کم صورت می‎گیرد. مطمئناً مواردی نیز وجود دارد که برنامه‌ریزی یا توسعه داخلی اتفاق می‎افتد و دلایل گوناگونی برای آن وجود دارد. هزینه‎های زیادی برای این سبک مدیریت پروژه به‌ویژه از نظر توسعه گروهی وجود دارد. به همین دلیل، ما حداکثر تلاش خود را می‎کنیم تا با آموزش گروه‎ها آن‌ها بتوانند بهترین تصمیم را برای پروژه خود اتخاذ کنند. 

مطلب پیشنهادی

این توزیع لینوکسی چرخه عمر اسمارت‌فون‌ها را ده ساله می‌کند

میانگین زمانی برای انتقال یک پروژه از مرحله آلفا به بتا در گوگل چقدر است؟

بعضی پروژه‎ها از همان مراحل اولیه کدنویسی عمومی‎ هستند، در حالی که بعضی دیگر برای مدتی تا قبل از اینکه به‌صورت عمومی‎ منتشر شوند، به‌شکل داخلی توسعه پیدا می‎کنند. بنابراین، پروژه‎ها مراحل مختلفی از توسعه را تا زمان معرفی شدن طی می‎کنند. چیزی که ما سعی داریم بهتر شود این است که مراحل پروژه شفاف‎تر انجام گیرد.

چگونه مهندسان گوگل یک پروژه منبع باز را قبل از انتشار عمومی‎ آن آزمايش می‎کنند؟

بعضی از بزرگ‌ترین پروژه‎های منتشر شده‎ای که ما طی چند سال گذشته داشتیم بر مبنای فناوری‎هایی شکل گرفته‎اند که برای چندین سال در گوگل وجود داشته است. برای مثال، TensorFlow بر مبنای سکوی یادگیری ماشینی داخلی ما به‌نام Brain بوده است، GRPC بر اساس سیستم RPC داخلی ما تحت عنوان Stubby شکل گرفته است، Bazel نیز قبل از انتشار آنلاین خود Blaze نام داشت و Kubernetes نیز نتیجه سال‎ها تجربه ما با زمان‌بندی شغلی داخلی ‎ما تحت عنوان Borg بوده است. بنابراین، از بسیاری جهات این پروژه‎ها با روشی دقیق‎تر توسط اولین محصولات و زیرساخت‎های گوگل مورد آزمایش قرار گرفته‎اند. حالا این موضوع درباره خیلی از پروژه‎های منبع باز ما صدق می‎کند. پروژه‎هایی در اندازه کوچک تا متوسط به همان شیوه محصولات گوگل مورد آزمايش قرار می‎گیرند و قبل از انتشار عمومی‎ توسط اعضای گوگل آزمايش می‎شوند.

چگونه گوگل در پروژه‎های متنوع منبع باز خود امکان مشاركت‎های عمومی‎ را فراهم می‎کند؟

اساساً ما نیز از همان ابزاری استفاده می‎کنیم که سایر گروه‎های منبع باز استفاده می‎کنند که شامل GitHub، IRC یا Slack، Stack Overflow، mailing list و چند مورد دیگر است. همچنین، ما در خیلی از کنفرانس‎های منبع باز حضور مستمر و جدی داریم و می‎توانیم در همان جا با اعضای گروه‎ها مشارکت داشته باشیم. ما در سراسر دنیا یک شبکه گسترده از گروه‎های توسعه گوگل را تشکیل داده‎ایم و این گروه‎ها به‌گرمی‎ از مشارکت عمومی‎ استقبال می‎کنند.

چگونه دفتر برنامه‎های منبع باز گوگل سیاست‎های جدید مربوط به پروژه‎های منبع باز را تعریف می‎کند؟

سیزده سال است که از فعالیت دفتر برنامه‎های منبع باز گوگل می‎گذرد و سیاست‎های ما در طی این سال‎ها با رشد شرکت و در رویارویی با چالش‎های جدید نیز توسعه پیدا کرده است. ماه گذشته، ما تمام سیاست‌گذاری‎ها و اسناد خود را در سایت جدید مرکز منبع باز گوگل (opensource.google.com) منتشر کردیم. این اسناد بر اساس تمام تجربیاتی که حین کار با منبع باز طی سال‎ها کسب کرده‎ایم، گردآوری شده است. ما می‎دانیم شیوه‎ای که برای کارها در نظر گرفته‎ایم، ممکن است برای همه مناسب نباشد، اما این اسناد را تحت ضوابطی باز تنظیم کرده‎ایم تا سایرین بتوانند آن را با نیازهای شرکت خود وفق دهند.

مطلب پیشنهادی

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

آیا این یک منبع باز تجاری‌سازی شده یا FOSS  (سرنام Free and Open Source Software) است که بیشتر از گوگل طرف‌دار دارد؟

خیلی از پروژه‎های منبع باز رایگان موفق به شیوه‎های مختلف در حمایت مالی مشارکت دارند، حتی اگر تنها به این معنا باشد که آن‌ها کارمندانی داشته باشند که به‌صورت تمام‌وقت در این پروژه کار می‎کنند. شاید بتوان گفت این بزرگ‌ترین روشی است که گوگل از خیلی از پروژه‎های منبع باز پشتیبانی می‎کند. برای نمونه، ما به بنیادهای تشکیل‌دهنده لینوکس، LLVM, Git و Samba کمک مالی می‎کنیم. اما مهم‎تر از آن، مهندسانی را استخدام می‎کنیم که تنها شغل آن‌ها مشارکت و کمک به نگهداری این پروژه‎ها است، زیرا برای ما از اهمیت خاصی برخوردارند.

فکر می‎کنید این روزها چالش اصلی در انتشار یک راهکار منبع باز چیست؟ 

وقتی سعی می‎کنید مشکلات فنی یک پروژه را برطرف کنید، یکی از بزرگ‌ترین چالش‎هایی که ناگزیر به رفع آن هستید مدیریت گروه‎ها است. اما این تنها منحصر به منبع باز نیست و در هر سازمان مهندسی دیگری نیز این موضوع صدق می‎کند. مردم نامنظم و پیچیده هستند. آن‌ها می‎توانند پافشاری زیادی روی نظر و عقيده خود داشته باشند، آن‌ها اغلب اهمیتی به آن چیزی که برای شما بااهمیت است نمی‎دهند و آن‌ها بیرون از پروژه شما هستند و از اتفاقات غیرمنتظره و توضیح‌ناپذیر باخبر نیستند. مدیریت مردم چه در ارتباط با یک کارمند رسمی‎ یا تنها عضوی از یک جامعه منبع باز، کاری به‌شدت طاقت‌فرسا است. اما از طرفی می‎تواند مزایای زیادی نیز داشته باشد. من معتقدم کمک به گروه‎های مختلفی از مردم که برای یک هدف مشترک با یکدیگر کار می‎کنند تا چیزی را بسازند، بسیار کارآمدتر از جمع شدن مشارکت‎های مستقل است. به همین دلیل است که من از کارم لذت می‎برم.

مطلب پیشنهادی

آیا زبان برنامه‌نویسی کاتلین اکو سیستم اندروید را زیر و رو خواهد کرد؟
زبانی با بهترین ویژگی‌های مورد علاقه برنامه‌نویسان

چگونه گوگل این چالش‎ها را پشت سر می‎گذارد؟

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

علاوه بر سمتی که شما در حال حاضر در گوگل دارید، ظاهراً یکی از پشتیبانان بزرگ وردپرس نیز هستید، فکر می‎کنید چه چیزی باعث شده است تا وردپرس به یک سکوی دموکراتیزه تبدیل شود؟

با وجود اینکه وردپرس در یک سرور و نام دامنه شخصی میزبانی می‎شود، هر کسی می‎تواند این نرم‌افزار را دانلود و بدون نیاز به دریافت مجوز از کسی در سرور خود از آن استفاده کند. هیچ ضوابطی برای پذیرفتن در هنگام استفاده وجود ندارد و کسی شما را محدود نمی‎کند که چه پست‎هایی را نمی‎توانید ارسال کنید و هیچ شرط و شروطی برای موافقت با آن وجود ندارد. امروزه سکو‎های بی‌شماری برای این کار در اختیار شما است، اما 10 یا 15 سال قبل چنین چیزی وجود نداشت.

فکر می‎کنید چه عوامل مشترکی بین گوگل و وردپرس وجود دارد؟

در اساسی‎ترین سطح هر دو باور دارند که برای شکوفایی و نوآوری اینترنت باید یک سکو باز باشد.

سؤال آخر اینکه صرف نظر از گوگل و وردپرس، آینده منبع باز را چگونه ارزیابی می‎کنید؟

کد منبع باز به‌مراتب بیشتر از آنچه امروز وجود دارد، نوشته شده است؛ بنابراین، ما هنوز در ابتدای راه رشد منبع باز قرار داریم. باید منتظر بود و آینده را دید.

برچسب: