فلاکس: راهحل مشکل «رو دستگاه من کار میکنه»
خلاصهٔ کاملتر
وقتی یه مهندس میگه «رو دستگاه من کار میکنه»، خیلیها فکر میکنن یه مشکل فردیه. اما Sam Cormier-Iijima، همبنیانگذار و CTO استارتاپ Fellow.ai، نظر دیگهای داره: این یه شکست در زیرساخت مشترک تیمه. وقتی محیط توسعه هر مهندس با بقیه فرق داره، کد ریویوها گیر میکنن چون ریویوکننده نمیتونه برنچ رو اجرا کنه، آنبوردینگ به یه باستانشناسی تبدیل میشه، و خطاهای CI دیگه معلوم نیست از باگ واقعیه یا از تفاوت محیطه.
Flox ابزاریه که این مشکل رو از ریشه حل میکنه. با Flox میشه یه محیط توسعه کاملاً declarative (اعلانی) تعریف کرد — یعنی مشخص کردی که پروژه دقیقاً به کدوم نسخه از runtime، کدوم پکیجهای سیستمی، چه متغیرهای محیطی، چه سرویسهایی و چه hookهای اولیهای نیاز داره — و این تعریف رو کنار کد توی ریپو نگه داشت. هر بار که مهندسی دستور flox activate رو اجرا کنه، دقیقاً همین محیط برای اون ساخته میشه.
نقطه قوت اصلی Flox اینه که محیطهاش همهجا یکسان رفتار میکنن: روی لینوکس و macOS، روی معماری x86-64 و ARM، در توسعه محلی، CI و حتی production. برخلاف dev container که توسعهدهنده رو داخل یه محیط کانتینری محبوس میکنه، Flox در یه subshell اجرا میشه — پس مهندس با ترمینال، ادیتور و فایلهای خودش کار میکنه و فقط context پروژه تغییر میکنه.
تیمهای platform (که مسئول زیرساخت مشترک مهندسی یه سازمانن) معمولاً دو انتخاب سخت دارن: یا همه رو داخل یه کانتینر کنترلشده ببرن که آزادی و سرعت تیم رو میگیره، یا هر کسی خودش محیطش رو بسازه که همه هزینههای «رو دستگاه من کار میکنه» رو به دنبال داره. Flox گزینه سومی میده: یه قرارداد runtime مشترک که هم قابلتکراره و هم به کار روزمره مهندس دخالتی نمیکنه.
FloxHub هم مکملی برای Flox است که تیمها میتونن محیطهای آماده و تأییدشده رو توش منتشر و به اشتراک بذارن. بقیه تیمها اون محیطها رو pull میکنن و به جای اختراع مجدد چرخ، سریعتر شروع به کار میکنن.
نکات کلیدی:
- «رو دستگاه من کار میکنه» یه شکست در زیرساخت مشترک تیمه، نه صرفاً مشکل یه مهندس
- Flox محیطهای توسعه declarative تعریف میکنه که با ریپو سفر میکنن
- اجرا در subshell (نه کانتینر) یعنی مهندس ابزارهای خودش رو داره
- همون محیط روی لینوکس/مک، x86/ARM، local/CI/production یکسانه
- FloxHub برای اشتراکگذاری محیطهای آماده بین تیمهاست
- Fellow.ai با Flox آنبوردینگ، کد ریویو و قابلیت اطمینان CI رو بهبود داده




