NPM-এ সেম্যান্টিক ভার্সনিং-এর একটি বৃহৎ পরিসরের বিশ্লেষণ
Author
Venue
Mining Software Repositories (MSR) 2023
Abstract
NPM প্যাকেজ রিপোজিটরিতে দুই মিলিয়নেরও বেশি প্যাকেজ রয়েছে এবং এটি প্রতি সপ্তাহে কয়েক বিলিয়ন ডাউনলোড সরবরাহ করে। প্রায় প্রতিটি জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন NPM প্যাকেজ ম্যানেজার ব্যবহার করে NPM রিপোজিটরি থেকে প্যাকেজ ইনস্টল করে। NPM একটি "সeman্টিক ভার্সনিং" ('semver') স্কিমের ওপর নির্ভর করে একটি সুস্থ ইকোসিস্টেম বজায় রাখতে, যেখানে বাগ-ফিক্সগুলো যত দ্রুত সম্ভব ডাউনস্ট্রিম প্যাকেজগুলোতে নির্ভরযোগ্যভাবে পৌঁছে যায়, আর ব্রেকিং চেঞ্জের ক্ষেত্রে ডাউনস্ট্রিম প্যাকেজ রক্ষণাবেক্ষণকারীদের ম্যানুয়াল হস্তক্ষেপ প্রয়োজন হয়। ডেভেলপাররা semver কীভাবে ব্যবহার করে তা বুঝতে, আমরা NPM-এ প্রতিটি প্যাকেজের প্রতিটি সংস্করণ ধারণকারী একটি ডেটাসেট তৈরি করি এবং পুরো ইকোসিস্টেমে আপডেটের প্রবাহ বিশ্লেষণ করি। আমরা NPM-এর জন্য একটি টাইম-ট্র্যাভেলিং ডিপেন্ডেন্সি রিজলভার তৈরি করি, যা আমাদের সঠিকভাবে নির্ধারণ করতে দেয় যে বিভিন্ন সময়ে প্রতিটি ডিপেন্ডেন্সির কোন সংস্করণগুলো রিজলভ হতো। আমরা আমাদের বিশ্লেষণকে ভাগ করি যাতে ইকোসিস্টেমের বাকি অংশের তুলনায় নিরাপত্তা-সংক্রান্ত আপডেট (যেগুলো দুর্বলতা প্রবর্তন বা প্যাচ করে) সরাসরি বিশ্লেষণ করা যায়। আমরা দেখতে পাই যে, যখন ডেভেলপাররা semver সঠিকভাবে ব্যবহার করেন, তখন নিরাপত্তা প্যাচের মতো গুরুত্বপূর্ণ আপডেটগুলো অধিকাংশ ক্ষেত্রে (৯০.০৯%) দ্রুত নিচের দিকের নির্ভরশীলতাগুলোতে প্রবাহিত হতে পারে, তবে semver সংস্করণ সীমাবদ্ধতা এবং সংস্করণ নম্বর বৃদ্ধির উভয়ই ডেভেলপারদের অসম্পূর্ণ ব্যবহারের কারণে এটি সবসময় ঘটে না। আমাদের ফলাফলগুলি ডেভেলপার এবং গবেষকদের জন্যই তাৎপর্যপূর্ণ। আমরা আমাদের অবকাঠামো এবং ডেটাসেটটি ওপেন সোর্স লাইসেন্সের অধীনে সর্বজনীনভাবে উপলব্ধ করেছি।
