آشنایی با 15 پروژهٔ اپن‌سورس فیسبوک

آشنایی با 15 پروژهٔ اپن‌سورس فیسبوک

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

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

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

Rebound
ریبَوند یک لایبرری جاوا است که حرکات و داینامیک فنر را مدل‌سازی می‌کند. از مدل‌های ریبَوند می‌توان برای طراحی انیمیشن‌هایی که به واقعیت شباهت زیادی دارند استفاده کرد چرا که امکان ادغام فیزیک دنیای واقعی در اپلیکیشن‌ها با استفاده از این کتابخانه وجود دارد. ریبَوند از مفاهیم و تعریف‌های مشابهی با Origami استفاده می‌کند و بدین ترتیب می‌توان پروژه‌های طراحی شده توسط Origami را نیز به سرعت در اپلیکیشن خود پیاده‌سازی کنید.

Origami
اُریگامی ابزاری برای طراحی رابط‌های کاربری مدرن است. به کمک اُریگامی می‌توانید به سرعت یک طرح آزمایشی ایجاد کرده، آن را بر روی آیفون و یا آیپد خود اجرا کنید، آن را اصلاح کرده و سپس کدهای کاربردی آن را در اختیار دیگران بگذارید.

Stetho
استثو یک پلتفرم عیب‌یابی کاملاً مدرن برای اندروید است. استثو می‌تواند با کمک یک پروتکل کلاینت/سرور، ابزار قدرتمند Chrome Developer Tools را برای اپلیکیشن شما فراهم آورد. زمانی که اپلیکیشن‌تان با آن ادغام شد، به راحتی به مرورگر کروم رفته و آدرس chrome://inspect را وارد کنید. سپس بر روی Inspect کلیک کرده و کار خود را آغاز کنید.

Infer
پروژهٔ اینفِر که متعلق به فیسبوک است، در حقیقت یک ابزار استاتیک تحلیلی است که به کمک آن می‌توان باگ‌های اپلیکیشن‌های اندروید و آی‌او‌اس را پیش از عرضه شناسایی کرد. اگر بخشی از کدهای زبان‌های Objective-C ،Java و یا C را به اینفِر بدهید، این ابزار لیستی از باگ‌های احتمالی را به شما نشان خواهد داد. هر کسی می‌تواند از اینفِر برای جلوگیری از وقوع باگ‌های بزرگ و حساس در اپلیکیشن‌ها استفاده کند تا پیش از ورود اپلیکیشن به گوشی کاربران، از توقف‌های ناگهانی و یا عملکرد ضعیف جلوگیری شود.

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

React Js
ریئکت یک لایبرری انعطاف‌پذیر و بهینه از جاوااسکریپت است که از آن برای طراحی رابط‌های کاربری استفاده می‌شود. بسیاری از برنامه‌نویسان از ریئکت به عنوان لایهٔ V در معماری MVC استفاده می‌کنند. از آنجایی که ریئکت با بخش‌های دیگر پروژهٔ شما کاری ندارد، می‌توان از آن در بخشی کوچک از پروژه استفاده کرد. 

HHVM
HHVM یا Hip Hop VM یک ماشین مجازی اپن‌سورس است که برای اجرای برنامه‌های زبان‌های Hack و PHP به کار می‌رود. HHVM از قابلیت کامپایل لحظه‌ای موسوم به JIT استفاده می‌کند تا در عین حال که عملکرد بالایی داشته باشد، انعطاف‌پذیری توسعه در زبان PHP را نیز حفظ کند. برای فیسبوک، استفاده از HHVM توانسته در مقایسه با موتور Zend PHP 5.2، عملکرد خروجی را تا 5 برابر افزایش دهد! HHVM معمولاً به عنوان یک سرور جداگانه اجرا می‌شود که هم جایگزین Apache و هم modphp می‌گردد. با این حال، می‌توان از طریق دستورات خاصی، اسکریپت‌های مستقل را نیز در HHVM اجرا کرد.

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

Flow
فِلو قابلیت استاتیک تایپ را در زبان جاوااسکریپت فراهم می‌کند تا بدین شکل، بهره‌وری و کیفیت کد برنامه‌نویس را افزایش دهد. هدف اصلی فِلو آن است که با کمترین تلاش از سوی برنامه‌نویس، مشکلات و ایرادات در کد جاوااسکریپت را بیابد. حتی اگر کد شما دارای توضیحات نباشد، فِلو می‌تواند با دقت، تمامی انواع متغیرها در سراسر برنامه را دنبال کرده و ایرادات را به شما نشان دهد.

fb-flo
اف‌بی‌فِلو یک افزونه برای مرورگر کروم است که به شما امکان ویرایش برنامه‌های در حال اجرا، بدون نیاز به راه‌اندازی مجدد آنها را می‌دهد. ادغام این افزونه با سیستم بیلد و محیط توسعهٔ شما بسیار آسان بوده و می‌توانید از آن در ادیتور مورد علاقهٔ خود نیز استفاده کنید.

Jest
ژِست یک فریمورک آزمایش کد برای جاوااسکریپت است. ژِست بر روی فریمورک تست Jasmine ساخته شده است. ژِست به طور اتوماتیک، ماژول‌های CommonJS که توسط ()require بازگردانده می‌شوند را بازسازی کرده و اکثر آنها را به حالت قابل آزمایش تبدیل می‌کند.

Nuclide
نوکلاید مجموعه‌ای از نرم‌افزارها برای ادیتور Atom است تا به کمک آن بتوان عملکردی شبیه یک IDE برای زبان‌های برنامه‌نویسی و تکنولوژی‌های متنوع ایجاد کرد. نوکلاید بدین منظور طراحی شده تا بتواند یک تجربهٔ توسعهٔ یکسان برای مهندسان در سراسر تیم توسعه ایجاد کند (چه آنها بر روی اپلیکیشن‌های iOS و React فعالیت داشته باشند و چه از Hack برای اجرا روی وب سرورهای HHVM استفاده کنند).

همچنین لیست پروژه‌های اپن‌سورس بک‌اند فیسبوک عبارتند از:

Presto
پِرِستو یک موتور کوئری SQL توزیع شده و اپن‌سورس است که به منظور اجرای کوئری‌های تحلیلی و تعاملی بر روی دیتا سورس‌های مختلف با حجم‌های متفاوت -از گیگابایت گرفته تا پتابایت- طراحی شده است. فیسبوک از پِرِستو برای اجرای کوئری‌های تعاملی بر روی سورس‌های داده‌ای داخلی -از جمله دیتا سورس 300 پتابایتی‌اش- استفاده می‌کند. بیش از 1000 کارمند فیسبوک، روزانه از پِرِستو برای اجرای بیش از 30000 کوئری استفاده می‌کنند که به طور روزانه، یک پتابایت اطلاعات را بررسی می‌کند.

Osquery
آسکوئری، یک رابط کاربری SQL را در اختیار شما قرار می‌دهد تا کوئری‌های جدید را امتحان کرده و سیستم‌عامل خود را کاوش کنید. با در اختیار داشتن قدرت یک زبان کامل SQL و چندین جدول کارآمد، آسکوئری ابزاری بسیار ارزشمند در زمان کنترل بحران‌ها، عیب‌یابی مشکلات عملیات سیستمی و یا بررسی ایرادات عملکردی خواهد بود.

RocksDB
RocksDB نسخه‌ای بهبود یافته از LevelDB است که می‌تواند بر روی سرورهایی با تعداد بالای هسته‌های پردازنده کار کند، به طور بهینه از حافظه‌های پرسرعت استفاده کند و همچنین به قدری انعطاف‌پذیر است که امکان نوآوری و افزودن قابلیت‌های جدید به آن نیز وجود داشته باشد.

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

منبع