npm v12 के लिए आने वाले ब्रेकिंग बदलाव

स्वामित्व, Microsoft, और भरोसा

  • कई टिप्पणीकारों को यह देखकर आश्चर्य या नाराज़गी हुई कि npm का स्वामित्व GitHub/Microsoft के पास है; दूसरों ने बताया कि यह 2020 से सच है और उससे पहले npm “खराब” था।
  • इस पर बहस हुई कि क्या Microsoft सचमुच बदल गया है या “embrace, extend, extinguish” पैटर्न दोहरा रहा है; कुछ लोग GitHub/VS Code को व्यावहारिक मानते हैं, जबकि अन्य इसे लॉक-इन और “open washing” समझते हैं।
  • npm अधिग्रहण के आसपास की छंटनियों और बाद में GitHub के AI फोकस को कॉर्पोरेट प्राथमिकताओं को इकोसिस्टम की सेहत पर तरजीह देने के सबूत के रूप में उद्धृत किया गया।

Core npm v12 बदलाव (allowScripts, postinstall)

  • मुख्य बदलाव: install scripts (जैसे postinstall) डिफ़ॉल्ट रूप से बंद हैं और उन्हें स्पष्ट रूप से अनुमति देनी होगी (allowScripts in config/package.json)।
  • इससे npm, pnpm के अधिक करीब आता है और प्रति-पैकेज whitelisting जोड़ता है, जिसमें version-pinned allowlists भी शामिल हैं।
  • native module authors और npm के जरिए binaries ship करने वाले लोगों ने पूछा कि उनके workflows पर इसका क्या असर होगा; जवाबों से पता चलता है कि सभी install scripts डिफ़ॉल्ट रूप से बंद हैं, लेकिन मौजूदा patterns (os/cpu/optionalDependencies) अभी भी काम करने लायक हैं।

सुरक्षा प्रभाव और शेष जोखिम

  • कई लोगों का मानना है कि यह एक बड़ा security win है: इससे supply-chain का एक आम vector हट जाता है, खासकर frontend-only packages के लिए जहाँ code server-side कभी नहीं चलता।
  • संशयवादी तर्क देते हैं कि malware install scripts से हटकर module runtime code, tests, या build tooling में चला जाएगा, इसलिए attack surface कम हुआ है लेकिन समाप्त नहीं।
  • कुछ लोगों ने नोट किया कि यह fix लगभग 10 साल पहले रिपोर्ट की गई एक vulnerability को संबोधित करता है और कई high-profile exploits, जिनमें Microsoft को प्रभावित करने वाली घटनाएँ भी शामिल हैं, के बाद जाकर आया है।

मज़बूत सुरक्षा के लिए प्रस्ताव

  • सुझावों में शामिल हैं:
    • नई releases installable होने से पहले age delays (जैसे डिफ़ॉल्ट 1 दिन)।
    • publishers के लिए अनिवार्य 2FA या मजबूत identity (government ID + smartphone approval)।
    • अधिक Debian-जैसे staged repos, human QA और paid corporate support के साथ।
    • Sandboxing, simulation runs, और बेहतर provenance/permissions (जहाँ Deno को एक मजबूत model के रूप में cited किया गया)।

Ecosystem comparisons (pnpm, yarn, others)

  • कई टिप्पणीकार कहते हैं कि npm अब “basically pnpm now” है, लेकिन pnpm को तेज़ और अधिक space-efficient माना जाता है, और समान protections पहले से enabled हैं।
  • Yarn के बारे में बताया गया कि उसमें comparable security और performance है, साथ ही Plug’n’Play जैसी features भी हैं; कुछ teams ecosystem friction के कारण pnpm पर migrate हुईं।
  • Deno और Node की अपनी permission system पर runtime isolation के अधिक principled approaches के रूप में चर्चा हुई, हालांकि Node के defaults की आलोचना की गई।

विविध प्रतिक्रियाएँ

  • बदलाव पर मिली-जुली प्रतिक्रियाएँ: “finally” और “aw geez, enough is enough” से लेकर “pointless” और “just shifting blame” तक।
  • GitHub के लाल “RETIRED” badge और confusing terminology पर UI शिकायतें।
  • सामान्य भावना: कुछ न होने से बेहतर, बहुत देर से, और अभी भी fragile JS supply chain में केवल एक कदम।