چگونه (نه) برای پیدا کردن قهرمانان ناخوشایند جاوا اسکریپت

شما این طنز XKCD را دیده اید – همان چیزی که کل اینترنت در یک پروژه اجرا می شود ، برخی از توسعه دهندگان تصادفی از سال 2003 به شکلی بی نظیر حفظ کرده اند. خنده دار است زیرا درست است. و در [insert current year here]، هنوز هم درست است.
من جورج هستم ، یک دانشمند داده تبدیل به مهندس نرم افزار شد که بیشتر در اکوسیستم JavaScript/TypeScript کار می کند. من می خواستم مشکل پشت طنز را برطرف کنم – یا حداقل آن نگهدارنده های نامرئی را که اکوسیستم را با نوار مجرای و کافئین نگه می دارند ، پیدا کنم. شما احتمالاً هر روز به کار آنها بستگی دارید. من قطعاً انجام دهید.
اما در اینجا اتفاقاتی رخ داده است: من هزاران بسته NPM بی فایده پیدا کردم ، یک پروتکل blockchain اشتباه از بین رفته است و درسی که چرا اهداف نجیب کافی نیستند. بیایید در مورد اهداف خوب ، مشوق های بد و اینکه چرا کد شما – و حرفه شما – در خانه کارت ساخته شده است صحبت کنیم.
جستجوی نگهبانان نامرئی JavaScript
اگر بپرسید ، “چه کسی در اینجا سزاوار بودجه برای کار منبع باز آنها است؟” همه دست خود را بالا می برند. این مشکل است. بلندترین صداها – یا بدترین بازاریابان – همیشه آنهایی نیستند که کد شما را از بین می برد. از این گذشته ، بیشتر نگهدارنده های منبع باز کارهای بهتری نسبت به خود بازاریابی دارند ، مانند رفع اشکالات ، بررسی PRS و نگه داشتن چراغ ها.
بنابراین من چیز ساده ای را امتحان کردم: سر و صدا را نادیده بگیرید. به جای گوش دادن سازمان بهداشت جهانی از پول می خواستم ، می خواستم ببینم چه اکوسیستم در واقع به آن بستگی داشت. از این گذشته ، نمودارهای وابستگی JavaScript عمومی هستند. چقدر سخت می تواند باشد؟
من زباله ابرداده NPM را بارگیری کردم – هر بسته ، هر وابستگی ، هر نگهدارنده – و شماره ها را اجرا کردم. هدف: یافتن پروژه هایی با وابستگان بالا اما دید کم. به کتابخانه ها فکر کنید ipaddr.js
، ابزاری برای دستکاری آدرس های IP با 44 میلیون بارگیری هفتگی یا long
، کتابخانه ای برای کار با عدد صحیح 64 بیتی با 28 میلیون بارگیری هفتگی. این ابزارها در همه جا وجود دارد ، اما نگهبانان آنها غالباً مورد توجه قرار نمی گیرند – بی سر و صدا در پشت صحنه کار می کنند تا اکوسیستم را اجرا کند.
منطق صدا بود. اگر یک بسته دارای هزاران وابستگان باشد اما فقط یک نگهدارنده و تقریباً هیچ مشارکت کننده ای ندارد ، این احتمالاً نبراسکان معروف ما است. اگر این یک وابستگی گذرا باشد – چیزی که کد شما به طور غیرمستقیم ، سه لایه عمق استفاده می کند – حتی بیشتر.
در ابتدا ، کار کرد. من نه تنها بسته های شناخته شده ای را پیدا کردم بلکه دیگران را نیز دوست داشتم anakjalanan
با nitroteh
وت acertea
– هرکدام با هزاران و هزاران نفر از وابستگان ، یک نگهدارنده واحد و نام هایی که هرگز از آنها نشنیده ام. اینها باید قهرمانان ناخوشایند باشند.
سپس مخازن را بررسی کردم.
برخی باعث شدند که من به طور کامل کد های کد را خالی کنم. برخی دیگر فقط شامل برنامه های Next.js یا node.js بدون هیچ گونه قابلیت اضافی بودند. آنها فقط غیرقابل تحمل نبودند. آنها به معنای واقعی کلمه بی فایده بودند.
اینجا چه خبر است؟ چرا هزاران پروژه به مخازن خالی و چنگال های متروکه بستگی دارد؟
اما بعد متوجه شدم که تمام آن مخازن یک چیز مشترک دارند: پرونده ای به نام tea.xyz
بشر
به همین دلیل ما نمی توانیم چیزهای خوبی داشته باشیم
با پروتکل چای ملاقات کنید-یک تلاش مبتنی بر blockchain برای تأمین بودجه منبع باز. هدف آنها شبیه به کاری بود که من سعی در انجام آن داشتم ، اما با استفاده از cryptocurrency در بالا: از نمودار وابستگی برای اندازه گیری تأثیر یک بسته استفاده کنید و به طور خودکار نگهدارنده را با نشانه ها پاداش دهید. ساده
خیلی ساده
مدل “اثبات مشارکت” چای بودجه را به تعداد وابستگی ها گره زد. هرچه پروژه های بیشتری به شما بستگی داشته باشد ، بیشتر درآمد کسب می کنید. عادلانه به نظر می رسد – تا زمانی که متوجه نشوید ، جعل وابستگی چقدر آسان است.
ناگهان ، آن مخازن خالی حس کردند. هرزنامه ها NPM را با بسته های بی اهمیت آب گرفتند ، هر کدام حاوی a tea.xyz
پرونده با تورم مصنوعی تعداد وابستگی آنها ، آنها می توانند پروتکل را برای پرداخت آنها برای “تأثیر” فریب دهند.
حتی بدتر ، برخی از کلاهبرداران سعی کردند خودشان را دزدکی کنند tea.xyz
مانند بسته های منبع باز به طور گسترده استفاده کنید ، مانند node-bin-gen
، از طریق درخواست کشش نگهبانان آن را خاموش می کنند ، اما قبل از کشف تعداد بیشماری از PR های مشابه که سایر مخازن تأسیس شده را هدف قرار می دهند. همین سوءاستفاده در سایر ثبت های بسته بندی مانند PYPI و Rubygems ظاهر شد ، و بسته های بی فایده اکوسیستم را مسدود می کند.
به اعتبار چای ، آنها به سرعت واکنش نشان دادند. تا اواسط سال 2012 ، آنها ثبت نام اجباری و نگهبان در برابر هرزنامه اضافه کردند. بارگذاری NPM به حالت عادی بازگشت. اما این آسیب قبلاً انجام شده است: رجیستری NPM هنوز با آن بسته ها پر شده است.
نیت خوب ، مشوق های بد
قانون گودارت بیان می کند: “هنگامی که یک اندازه گیری به یک هدف تبدیل می شود ، یک اقدام خوب متوقف می شود.” به زبان ساده تر ، لحظه ای که پول را به یک متریک – مانند ستاره های GitHub ، تعداد وابستگی یا بارگیری ها می پیوندید – انگیزه ای برای بهینه سازی متریک ایجاد می کنید ، نه ارزش اساسی.
پروتکل چای این روش سخت را آموخت. و به خاطر داشته باشید ، وقتی این اتفاق افتاد ، چای حتی یک تخصیص مهم بودجه هنوز نبود. اگر سازمان های بزرگ صدها هزار دلار در سیستم ریخته بودند ، هرج و مرج را تصور کنید.
یک حفره را برطرف کنید ، و دیگری ظهور می کند. این برای چای منحصر به فرد نیست – نبردهای بودجه درجه دوم Gitcoin حملات Sybil ، رتبه بندی فروشگاه های App به طور مداوم دستکاری می شوند و حتی معیارهای استناد به دانشگاه نیز بازی می شوند. بسترهای نرم افزاری مانند حامیان مالی GitHub و Thanks.Dev رویکرد متفاوتی را اتخاذ می کنند و شرکت ها را قادر می سازد تا پروژه هایی را که به آنها وابسته هستند – حتی وابستگی های گذرا – تأمین کنند. در حالی که کمتر مستعد دستکاری هستند ، آنها مصون نیستند. توسعه دهندگان هنوز هم می توانند سیستم را با تکه تکه کردن کد به وابستگی های کم عمق بازی کنند. در نهایت هر مدل بودجه مبتنی بر اتوماسیون مورد سوء استفاده قرار می گیرد.
اما بیایید برای لحظه ای فرض کنیم که متریک عالی را پیدا می کنید. بیایید بگوییم که پروتکل چای غیر قابل قبول 2.0 را اختراع می کنید. حالا چی؟
پول از کجا می آید؟
توکنومیک چای به قیمت cryptocurrency آن وابسته است. اما اگر تنها ابزار توکن به نگهدارنده ها پرداخت شود – صرف نمی شود – تقاضای واقعی وجود ندارد. مقدار مؤثر آن صفر است. تنها راه برای حفظ قیمت بالا ، تعادل مصنوعی با عرضه بیش از حد با استفاده از فشار اجباری و تورم داخلی ، ایجاد تقاضا از طریق گمانه زنی های مالی است.
اما بودجه پایدار و طولانی مدت منبع باز نمی تواند بر روی گمانه زنی ها ساخته شود. در پایان روز ، کسی مجبور است کیف پول خود را باز کند و بپردازد. در مجموع ، ما به نظر می رسد موافقیم که این باید کسانی باشند که از کار منبع باز از نظر مالی سود می برند. اما این سیستم دارای یک نقص اساسی است.
چرا شرکت ها بودجه نمی کنند؟
بگذارید این سوال را دوباره بیان کنم: چرا باید؟ از دیدگاه یک شرکت ، سیستم فعلی کامل نیست ، اما بیشتر کار می کند (👀 log4j) و از همه مهمتر ، این برنامه رایگان است. به عنوان یک بازیگر منطقی ، فقط دو دلیل وجود دارد که شما می توانید منبع باز را تأمین کنید:
- پروژه منبع باز برای محصول تجاری شما اصلی است. اما در این حالت ، چرا وقتی می توانستید نگهدارنده را استخدام کنید ، آن را تأمین کنید؟ به این ترتیب ، شما بر پروژه تأثیر می گذارید و اطمینان حاصل می کنید که آن با استراتژی تجاری خود هماهنگ است.
- محصول شما توسعه دهندگان را هدف قرار می دهد و بودجه پروژه های منبع باز PR خوب است. حمایت از یک کتابخانه یا چارچوب مرسوم ، مد روز می تواند قلب های جامعه توسعه دهنده را جلب کند ، که برای استخدام و بازاریابی بسیار عالی است.
اشتباه نکنید – هر دو دلیل معتبر هستند. بودجه با یک انگیزه شخصی هنوز بی نهایت بهتر از بودجه نیست. اما هیچ یک از سناریو مشکل نبراسکا را حل نمی کند. پروژه های بحرانی اما غیر جنسی کمبود بودجه باقی می مانند.
خوب ، حالا چی؟
طنز XKCD دوام می آورد زیرا این یک شوخی نیست – این یک بازتاب واقعیت است. ما کمک های مالی (خیلی کوچک) ، حمایت مالی شرکت ها (خیلی انتخابی) و آزمایش های blockchain (خیلی بازی) را امتحان کرده ایم. هیچ مقیاس
شاید جواب فنی نباشد. شاید این یک تغییر فرهنگی باشد-شناختی که زیرساخت های منبع باز به اندازه جاده ها یا برق بسیار حیاتی است ، و این که ما نمی توانیم آن را در زمانی که عملکرد کل دنیای مدرن ما به آن بستگی دارد ، غفلت کنیم. یا شاید ما در اینجا گیر کرده ایم ، برای همیشه بلوک دیگری در بالای برج Jenga خود را جمع می کنیم.
برداشت شما چیست؟ آیا یک مدل بودجه دیده اید که در واقع برای پروژه های نامرئی کار می کند؟
در نظرات به من اطلاع دهید.