اگه npm روی AT Protocol ساخته میشد چی؟
خلاصهٔ کاملتر
جیمز اسنل تو این پست میگه ایدهٔ ماجرا وسط Web Engines Hackfest به سرش زده و تو مسیر طولانی برگشت روش کار کرده: اگه یه رجیستری پکیج بهجای معماری متمرکز، روی AT Protocol — همون پروتکل فدرالی که Bluesky رو میچرخونه — ساخته میشد چی میشد؟ خودش تأکید میکنه متخصص رجیستری نیست و این یه تمرین فکریه، نه نقشهٔ راه محصول.
نگاشت مفاهیم بهطور عجیبی تمیز درمیاد: هویت کاربر با DID و هندلهای تأییدشده با دامنه، متادیتای پکیج به شکل رکوردهای lexicon تو مخزن شخصی کاربر (PDS)، فایل tarball بهعنوان blob، و خود «رجیستری» تبدیل میشه به یه App View که دادهها رو از فایرهوز جمع میکنه. تغییر فلسفی اصلی همینه: دیگه روی یه رجیستری منتشر نمیکنی، تو مخزن خودت منتشر میکنی و رجیستریها پیدات میکنن.
فضای نام سراسری هم حذف میشه. هر پکیج به یه DID محدوده، پس @jsnell.dev/lodash و @someone-else.dev/lodash اصلاً با هم برخورد ندارن — چیزی که به گفتهٔ نویسنده JSR کاملاً درست انجامش داده. lockfile هم بهجای هندل، DID رو پین میکنه، برای همین عوضشدن دامنه یه مسئلهٔ نمایشیه نه امنیتی.
جذابترین بخش، الگوی تصدیق دوطرفهست: موقع انتشار هم یه رکورد نسخه تو مخزن سازمان ساخته میشه و هم یه گواهی جدا تو مخزن شخصی خود توسعهدهنده، هر دو با کلید متفاوت امضا شده. اگه PDS سازمان لو بره، مهاجم میتونه رکورد نسخه بسازه ولی گواهی فردی رو نه؛ یعنی حمله قابلتشخیص میشه. به گفتهٔ نویسنده npm امروز همچین خاصیتی نداره و لو رفتن یه توکن کافیه.
نویسنده سختیها رو هم لاپوشونی نمیکنه: بیشتر آدمها PDS میزبانیشده استفاده میکنن و کلید امضاشون دست ارائهدهندهست، یعنی همون اعتمادی که الان به npmjs.com دارن. رزولوشن اسم توسط App View خودش یه نقطهٔ حملهست که با تصدیق دوطرفه قابل ممیزی میشه، انتشار ابطال کندتر از حالت متمرکزه، و کارایی هنوز اندازهگیری نشده. پکیجهای خصوصی هم چون مخزنهای atproto عمومیان، باید روی یه شبکهٔ کاملاً جدا اجرا بشن.
نکات کلیدی:
- ایدهٔ اصلی: انتشار پکیج تو مخزن شخصی خودت، و رجیستری فقط بهعنوان ایندکسر و نه مرجع
- نامگذاری به DID گره میخوره، پس فضای نام سراسری و دعواهای مالکیت اسم حذف میشه
- تصدیق دوطرفه یعنی هک شدن یکی از دو سیستم برای جعل نسخه کافی نیست
- برچسبها (labels) جای پایگاه دادهٔ متمرکز advisory رو میگیرن و هر تیم امنیتی میتونه labeler خودش رو داشته باشه
- امضای atproto جای Sigstore رو نمیگیره؛ پیوند «هویت به سورس» رو اضافه میکنه که Sigstore تنهایی نداره
- مشکلات باز: کلید دست ارائهدهندهٔ PDS، تأخیر انتشار ابطال، و کارایی اثباتنشده




