میچل هاشیموتو از ترمینال، Zig و اخلاق اپنسورس میگه
خلاصهٔ کاملتر
الکس الخاندره با میچل هاشیموتو گفتوگو کرده؛ سازندهٔ Vagrant، Terraform، Vault و Nomad که حالا روی ترمینال Ghostty کار میکنه. هاشیموتو میگه بعد از حدود ۱۵ سال ساختن اپلیکیشنهای CLI، وقتی از هشیکورپ اومد بیرون میخواست مهارتهای فنی کندشدهش رو دوباره تیز کنه: برنامهنویسی GPU، برنامهنویسی سیستمی روی دسکتاپ و تکنود، و بازی کردن با Zig. جالب اینکه با اون همه سابقه، هنوز نمیدونست یه امولاتور ترمینال دقیقاً چطور کار میکنه — و Ghostty هر سه هدف رو یهجا پوشش میداد.
نقشهٔ اولیهش این بود که ترمینال رو تا جایی برسونه که vim و کامپایلر توش اجرا بشه و خودش رو بیلد کنه، بعد بندازتش دور. ولی هرچی بیشتر با اکوسیستم ترمینال آشنا شد، دید هیچکدوم اون نیچی که میخواست رو پر نمیکنن: سریع، پرامکانات و بهصورت بومی چندسکویی. اولش هم منتشرش نکرد، چون میدونست اسمش توجه بیمورد جلب میکنه، برای همین مدت زیادی بتای خصوصی داشت.
برخلاف انتظار، به فشار آوردن به ترمینال تا حد افراط اعتقاد نداره. به گفتهٔ او مرورگر یه چیزی رو خوب انجام میده، دسکتاپ یه چیز دیگه، و اپلیکیشنهای متنی روی شبکهٔ مونواسپیس هم یه ویژگی منحصربهفرد دارن: سریع پیاده میشن، تعامل باهاشون سادهست و مدل امنیتی روشنی دارن. مشکل بنیادیتر از نظر او سیگنالینگ درونباند PTYه — یه جریان بایت بدون ساختار با دنبالههای escape — و میگه هرچند خیلیها از اکوسیستم مایکروسافت خوششون نمیاد، PowerShell با دادهٔ ساختیافته خیلی چیزها رو درست حل کرده.
دو پروتکل هست که به گفتهٔ خودش داد میزنن. اول یه API چندصفحهای: الان ترمینال فقط دو تا صفحه داره (اصلی با scrollback و جایگزین برای TUIها) و او میخواد بشه بینهایت صفحه ساخت، روی هم چید و حتی یکی رو بهشکل پنجرهٔ مستقل رندر کرد — تصور کن تبهای Neovim تبهای نیتیو پنجره باشن. دوم یه پروتکل دکمه، چیزی شبیه OSC 8 که با کلیک یه پیام مشخص به برنامه بفرسته و برخلاف پروتکلهای موس فعلی، بعد از رفتن محتوا به تاریخچه هم کار کنه.
بخش تندوتیزتر گفتوگو دربارهٔ اپنسورسه. هاشیموتو صریح میگه نگهدارندههای اپنسورس هیچ تعهدی به کاربرها ندارن؛ خط اول لایسنسها همون «as is, no warranty»ه. ولی خودش دوست داره نرمافزار خوب بسازه، پس تعهد شخصی حس میکنه. به نظرش اگه فقط دنبال ایشوهای کاربرها بری، نرمافزارت پایدار ولی راکد میشه؛ اگه هر PR رو مرج کنی، تغییر میکنه ولی بیچشمانداز. میگه هر چند سال فقط یه نفر واقعاً عمق ماجرا رو میگیره و بقیهٔ مشارکتها خارش شخصی خودشونه.
راهحل پیشنهادیش هم روشنه: خیلی بیشتر فورک کنید. به گفتهٔ او نسلی بار اومده که اپنسورس رو با محصولِ سرمایهگذاریشده اشتباه میگیره، درحالیکه هستهٔ اپنسورس آزادی و حقوقه، نه پایداری و تعهد نگهداری. اگه ضمانت میخوای، پول بده و رابطهٔ فروشنده-مشتری بساز. حتی دربارهٔ آسیبپذیریها هم میگه تو هم بهاندازهٔ نگهدارنده مسئول بودی که اون کامیت رو ریویو کنی.
دربارهٔ Zig میگه میدونسته چی رو انتخاب کرده و از اینکه اندرو برای تغییرهای لازم عقب نمیکشه خوشش میاد؛ نسخهٔ ۰.۱۵ با تغییر اینترفیس writer تغییر بزرگی بود ولی API خیلی بهتر شد. جالبتر اینکه میگه با وجود سیاست ضد-هوشمصنوعی سختگیرانهٔ Zig، برای مهاجرتهای زبانی الگو رو تو چند بافت نشون داده و ۹۰٪ دیف رو مدل موقعی که تو آشپزخونه بوده انجام داده — به نظر او این یعنی سازگاری با نسخههای قبلی داره کماهمیتتر میشه، بهشرطی که بتونی مسیر A به B رو توضیح بدی.
آخر گفتوگو، توصیهش برای یادگیری زبانهای سطح پایین اینه که زبان رو هدف نگیری: مهم اینه بفهمی کامپیوتر چطور کار میکنه — زمانبندی CPU، حافظه، سلسلهمراتب کش، فایلسیستم. میگه زبانها آسونن و زبانها مهم نیستن؛ فهم زیرین مهمه. یه راه یادگیری هم اینه که پیادهسازی زبانهای سطح بالا و کد کتابخانهٔ استاندارد رو بخونی، چون بالاخره یه آدم اونا رو نوشته و تو هم میتونی.
نکات کلیدی:
- Ghostty از یه پروژهٔ تمرینی برای یادگیری GPU، برنامهنویسی سیستمی و Zig شروع شد
- مشکل ریشهای ترمینالها: سیگنالینگ درونباند PTY و نبود نهاد استانداردساز
- دو پیشنهاد پروتکلی: API چندصفحهای و دکمههای کلیکپذیر که تو تاریخچه هم زنده بمونن
- امکانات زیاد با bloat فرق داره؛ چیزی که استفاده نمیکنی نباید هزینهای بهت تحمیل کنه
- نگهدارندهٔ اپنسورس تعهدی نداره؛ اگه چیزی میخوای فورک کن یا پول بده
- توصیهٔ یادگیری: زبان مهم نیست، فهم لایهٔ زیر syscall مهمه




