Detecting and Fixing Violations of Modification Terms in Open Source Licenses during Forking
यह शोध पत्र LiVo को प्रस्तुत करता है, जो एक ऐसा टूल है जिसे फ़ोर्किंग के दौरान ओपन सोर्स लाइसेंस के संशोधन संबंधी शर्तों (modification terms) के उल्लंघन को स्वचालित रूप से पहचानने और ठीक करने के लिए डिज़ाइन किया गया है, जो 47 लाइसेंसों के अनुभवजन्य लक्षण वर्णन (empirical characterization) और मर्ज किए गए पुल रिक्वेस्ट के माध्यम से सफल सत्यापन द्वारा कानूनी जोखिम न्यूनीकरण के एक पूर्व में अनछुए अंतराल को संबोधित करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
ओपन-सोर्स सॉफ्टवेयर की दुनिया की कल्पना एक विशाल, हलचल भरी लाइब्रेरी के रूप में करें जहाँ कोई भी किताबें उधार ले सकता है, उन्हें पढ़ सकता है, और यहाँ तक कि अपनी नई कहानियाँ बनाने के लिए उनके अध्याय भी फिर से लिख सकता है। यह रचनात्मकता के लिए बहुत अच्छा है, लेकिन इसमें एक पेंच है: इस लाइब्रेरी की हर किताब के साथ एक विशिष्ट सेट के नियम (एक लाइसेंस) आते हैं जो मूल लेखक द्वारा लिखे गए होते हैं।
ज्यादातर लोग बड़े नियमों को जानते हैं, जैसे "आपको श्रेय देना चाहिए" या "आपको अपना नया संस्करण मुफ्त में साझा करना चाहिए।" लेकिन इन लाइसेंसों में छिपे कई नियमों में से एक चालाकी भरा, अक्सर अनदेखा किया जाने वाला नियम है जिसे मॉडिफिकेशन टर्म (परिवर्तन की शर्त) कहा जाता है।
द "चेंज लॉग" रूल (परिवर्तन का नियम)
"चेंज लॉग" नियम को एक सख्त लाइब्रेरियन के नियम के रूप में सोचें: "यदि आप हमारी लाइब्रेरी से एक किताब लेते हैं, उसके कुछ पन्ने बदलते हैं, और उसका एक नया संस्करण बनाते हैं, तो आपको एक स्टिकी नोट लिखना होगा जिसमें स्पष्ट रूप से बताया गया हो कि आपने क्या बदला, किसने बदला, और कब बदला।"
कुछ लाइसेंस कहते हैं कि स्टिकी नोट हर उस पन्ने पर होना चाहिए जिसे आपने छुआ है। कुछ कहते हैं कि आप इसे किताब के सामने एक अलग "चेंजेस" नोटबुक में रख सकते हैं। कुछ बस इतना कहते हैं, "सुनिश्चित करें कि किसी को पता चले कि आपने इसे बदला है।"
समस्या क्या है? अधिकांश डेवलपर्स कोड लिखने में इतने व्यस्त होते हैं कि वे ये स्टिकी नोट्स लिखना भूल जाते हैं। वे एक "फोर्क" (उनके द्वारा संशोधित किए गए प्रोजेक्ट की एक प्रति) बनाते हैं लेकिन अपने द्वारा किए गए कार्यों का कोई निशान छोड़ने में विफल रहते हैं। यह एक कानूनी उल्लंघन है, जैसे कि बिना यह बताए कि पन्ने क्यों फटे हैं, लाइब्रेरी की किताब वापस करना कि आपने पन्ने क्यों बदले।
समस्या: "साइलेंट" उल्लंघन (मौन उल्लंघन)
फुदान यूनिवर्सिटी के शोधकर्ताओं ने महसूस किया कि जबकि हमारे पास यह जांचने के उपकरण हैं कि आप सही किताब का उपयोग कर रहे हैं या नहीं, हमारे पास यह जांचने के लिए कोई उपकरण नहीं है कि क्या आप अपना स्टिकी नोट लिखना भूल गए हैं। उन्होंने पूछा:
- ये नियम वास्तव में क्या कहते हैं?
- लोग कितनी बार इन्हें तोड़ रहे हैं?
- क्या हम इसे ठीक करने के लिए एक रोबोट बना सकते हैं?
समाधान: मिलिए "LiVo" से (द लाइब्रेरी विजिलेंटे)
इस समस्या को हल करने के लिए, टीम ने LiVo नामक एक टूल बनाया। आप LiVo को एक सुपर-स्मार्ट, स्वचालित लाइब्रेरियन के रूप में देख सकते हैं जो "फोर्क्ड" (विभाजित) लाइब्रेरी की निगरानी करता है।
LiVo इस प्रकार काम करता है, चरण-दर-चरण:
- जासूसी कार्य (परिवर्तनों को खोजना): LiVo मूल लाइब्रेरी बुक और नए, संशोधित संस्करण को देखता है। यह देखने के लिए कि वास्तव में किन फाइलों को छुआ गया था, यह प्रत्येक "कमिट" (कोड में एक सहेजा गया परिवर्तन) को स्कैन करता है। यह उबाऊ चीजों को फ़िल्टर कर देता है, जैसे जब कोई मूल पेज को बिना बदले बस कॉपी करता है।
- खोज (नोट की तलाश करना): एक बार जब LiVo जान जाता है कि कौन सी फाइलें बदली गई हैं, तो वह "स्टिकी नोट" की तलाश में निकल पड़ता है। वह दो जगहों पर खोजता है:
- स्वयं संशोधित फाइलों के अंदर।
- एक अलग "चेंज लॉग" फाइल में (जैसे कि
CHANGELOG.md), जो सॉफ्टवेयर प्रोजेक्ट्स में आम है।
- मिलान (क्या उन्होंने इसे सही किया?): LiVo "कमिट मैसेज" (वह क्या किया जो डेवलपर ने बदलाव को सेव करते समय कहा था) की तुलना "चेंज लॉग" (स्टिकी नोट) से करता है।
- क्या उन्होंने परिवर्तन का उल्लेख किया?
- क्या उन्होंने तारीख शामिल की?
- क्या उन्होंने अपना नाम शामिल किया?
यदि इनमें से किसी भी चीज़ के लिए उत्तर "नहीं" है, तो LiVo इसे उल्लंघन के रूप में चिह्नित करता है।
- सुधार (ऑटो-पायलट): यदि LiVo को कोई गायब नोट मिलता है, तो वह केवल चिल्लाता नहीं है; वह इसे ठीक करने की कोशिश करता है। यह डेवलपर के मूल कमिट मैसेज के आधार पर गायब स्टिकी नोट को स्वचालित रूप से लिखता है और उसे प्रोजेक्ट में जोड़ने का सुझाव देता है।
उन्होंने क्या पाया (वास्तविकता की जाँच)
टीम ने LiVo का परीक्षण वास्तविक दुनिया के 178 सॉफ्टवेयर प्रोजेक्ट्स के जोड़ों (एक बेस प्रोजेक्ट और उसका फोर्क) पर किया। परिणाम आंखें खोलने वाले थे:
- यह एक आम गलती है: संशोधित किए गए प्रोजेक्ट्स में से लगभग 51% इन नियमों को तोड़ रहे थे। उन्होंने कोड को बदला था लेकिन आवश्यक नोट्स लिखना भूल गए थे।
- पैमाना: उन्होंने 51,000 से अधिक विशिष्ट मामले पाए जहाँ डेवलपर्स अपने परिवर्तनों को दस्तावेज़ बनाना भूल गए थे।
- सोर्स कोड ही अपराधी है: गायब नोट्स में से अधिकांश वास्तविक "सोर्स कोड" (निर्देश जो प्रोग्राम चलाते हैं) में किए गए परिवर्तनों के लिए थे, न कि डॉक्यूमेंटेशन या स्क्रिप्ट के लिए।
क्या यह काम आया?
LiVo केवल एक सिद्धांत नहीं है; उन्होंने इसे वास्तविक दुनिया में परखा।
- उन्होंने प्रोजेक्ट मालिकों को 91 "पुल रिक्वेस्ट" (कोड को ठीक करने के आधिकारिक सुझाव) भेजे।
- 18 डेवलपर्स ने सकारात्मक प्रतिक्रिया दी, और कहा, "ओह, आप सही हैं! हम यह भूल गए थे।"
- उनमें से 8 सुधारों को मुख्य कोड में मर्ज किया गया, जिसका अर्थ है कि कानूनी जोखिम आधिकारिक तौर पर हल हो गया।
निचोड़
यह पेपर सबसे पहले यह कहता है कि, "हे, हमें ओपन-सोर्स कोड को बदलते समय नोट्स लिखने के नियम को अनदेखा करना बंद करने की आवश्यकता है।" उन्होंने मानचित्रित किया कि 47 विभिन्न लाइसेंसों में ये नियम वास्तव में कैसे दिखते हैं और एक टूल, LiVo बनाया, जो एक सहायक लाइब्रेरियन की तरह कार्य करता है, गायब नोट्स को ढूंढता है और आपके लिए उन्हें लिखता है।
यह कोड बदलने से रोकने के बारे में नहीं है; यह सुनिश्चित करने के बारे में है कि "पेपर ट्रेल" (दस्तावेजी प्रमाण) मौजूद रहे ताकि सभी को पता चल सके कि किसने क्या बदला, जिससे कानूनी लाइब्रेरी सुरक्षित और व्यवस्थित बनी रहे।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।