एनपीएम में सेमांटिक वर्जनिंग का एक बड़े पैमाने पर विश्लेषण
Author
Venue
माइनिंग सॉफ़्टवेयर रिपॉजिटरीज़ (MSR) 2023
Abstract
एनपीएम पैकेज रिपॉजिटरी में दो मिलियन से अधिक पैकेज हैं और यह प्रति सप्ताह अरबों डाउनलोड प्रदान करती है। लगभग हर जावास्क्रिप्ट एप्लिकेशन एनपीएम रिपॉजिटरी से पैकेज इंस्टॉल करने के लिए एनपीएम पैकेज मैनेजर का उपयोग करता है। एनपीएम एक स्वस्थ इकोसिस्टम बनाए रखने के लिए "सेमैन्टिक वर्शनिंग" ('semver') योजना पर निर्भर करता है, जहाँ बग-फिक्स को डाउनस्ट्रीम पैकेजों तक यथासंभव शीघ्रता से विश्वसनीय रूप से पहुँचाया जाता है, जबकि ब्रेकिंग चेंजेज के लिए डाउनस्ट्रीम पैकेज मेंटेनर्स द्वारा मैन्युअल हस्तक्षेप की आवश्यकता होती है। यह समझने के लिए कि डेवलपर्स semver का उपयोग कैसे करते हैं, हमने NPM पर हर पैकेज के हर संस्करण वाले एक डेटासेट का निर्माण किया और पूरे इकोसिस्टम में अपडेट के प्रवाह का विश्लेषण किया। हमने NPM के लिए एक टाइम-ट्रैवलिंग डिपेंडेंसी रिज़ॉल्वर बनाया, जो हमें यह निर्धारित करने की अनुमति देता है कि विभिन्न समयों पर प्रत्येक डिपेंडेंसी के कौन से संस्करण रिज़ॉल्व हुए होते। हम अपने विश्लेषण को विभाजित करते हैं ताकि इकोसिस्टम के बाकी हिस्सों की तुलना में सुरक्षा-संबंधी अपडेट (जो कमजोरियों को पेश करते हैं या पैच करते हैं) का सीधा विश्लेषण किया जा सके। हम पाते हैं कि जब डेवलपर semver का सही उपयोग करते हैं, तो सुरक्षा पैच जैसी महत्वपूर्ण अपडेट अधिकांश मामलों (90.09%) में डाउनस्ट्रीम डिपेंडेंसी तक काफी तेजी से पहुँच सकती हैं, लेकिन ऐसा हमेशा नहीं होता है, क्योंकि डेवलपर semver संस्करण प्रतिबंधों और semver संस्करण संख्या वृद्धि, दोनों का अपूर्ण उपयोग करते हैं। हमारे निष्कर्षों का प्रभाव डेवलपर्स और शोधकर्ताओं, दोनों पर पड़ता है। हम अपने इंफ्रास्ट्रक्चर और डेटासेट को एक ओपन सोर्स लाइसेंस के तहत सार्वजनिक रूप से उपलब्ध कराते हैं।
