VPN इंटरफेस, GPL इंजिन आणि इन्स्टॉलर: काय वितरित होते?
GPL आणि OpenSSL अटी तुमच्या VPN इंटरफेस बंडलवर कशा लागू होतात हे ठरवण्यापूर्वी काय वितरित होते, काय बदलले आणि भाग कसे बोलतात याचा नकाशा तयार करा।
प्रश्न लायसन्सिंगचा येतो, पण उत्तर सूचीने सुरू होते। VPN इंटरफेस, तो चालवणारे OpenVPN इंजिन, TLS लायब्ररी आणि इन्स्टॉलर यांचे चार वेगवेगळे अटसंच असू शकतात, आणि उत्पादनाचे स्वरूप कोणती फाईल कोणत्या संचाची आहे हे तुम्हाला सांगत नाही। कलाकृती वितरित होण्याच्या क्रमाने पाहा, आणि उत्तर देण्यास सक्षम अशा व्यक्तीकडे सोपवेपर्यंत कायदेशीर प्रश्न खूपच संकुचित होतो। प्रत्येक टप्पा तो अधिक संकुचित करतो: काय वितरित होते, काय बदलले आणि भाग कसे संवाद साधतात।
इन्स्टॉलर डिस्कवर काय ठेवतो त्यापासून सुरुवात करा
प्रकाशित इन्स्टॉलर किंवा पॅकेज घ्या, विकास प्रत नाही, आणि स्वच्छ मशीनवर तो ठेवणारी प्रत्येक फाईल यादीत लिहा। इंटरफेस, इंजिन आणि TLS लायब्ररीच्या आवृत्त्या नोंदवा, आणि इंजिन स्वतंत्र एक्झिक्युटेबल आहे की त्याच प्रक्रियेत लोड होणारी लायब्ररी हे नमूद करा।
ही शेवटची गोष्ट पुढील सर्व गोष्टी घडवते। सॉकेटद्वारे सुरू होणारे स्वतंत्र एक्झिक्युटेबल एका बायनरीमध्ये संकलित केलेल्या कोडपेक्षा वेगळे प्रश्न उपस्थित करते, आणि फक्त दोन्ही शेजारी ठेवणारा इन्स्टॉलर कोणत्याही दिशेने प्रश्न सोडवत नाही। बंडलिंग हा पॅकेजिंगचा निर्णय आहे, तर कार्यक्रमांमधील नाते स्थापत्यशास्त्रीय आहे।
यादी आवृत्त्यांसह लिहा, कारण मुख्य प्रकाशनांमध्ये अटी बदलतात।
dpkg -L openvpn | head -n 40
openssl version -aइंटरफेस इंजिनपासून वेगळा करा
OpenVPN कॉपी फाईल GPL आवृत्ती 2 सांगते आणि OpenSSL साठी लिंकिंग अपवाद नोंदवते, जो ठरवलेल्या व्याप्तीची विशिष्ट परवानगी आहे, अटी मिसळण्याचा सामान्य परवाना नाही।
तुमच्या बिल्डसोबत वितरित होणारा परवाना मजकूर घ्या, आजच्या प्रकल्प वेबसाईटवरील नाही। जुन्या शाखेला पिन केलेले प्रकाशन त्या शाखेचा दस्तऐवज बाळगते। रेपॉझिटरी पृष्ठाचे स्क्रीनशॉट पर्याय नाहीत, कारण तुम्हाला हवी असलेली फाईल कलाकृतीच्या आतली आहे। पॅकेज पूर्ण राहण्यासाठी ती इन्स्टॉलरजवळ ठेवा।
मग एकत्रीकरणाचे प्रामाणिक वर्णन करा: इंटरफेस इंजिनला चाइल्ड प्रक्रिया म्हणून सुरू करून मजकूर प्रोटोकॉल बोलतो, की लायब्ररी लिंक करून अंतर्गत रचनांची देवघेव करतो? दुसरी मांडणी पहिली नसलेल्या पद्धतीने जवळची आहे, आणि समीक्षक सर्वप्रथम हाच फरक विचारेल।
तुम्ही कोणत्या फाईली बदलल्या ते नोंदवा
बदललेला स्रोत कोड कोणत्याही पॅकेजिंग तपशिलापेक्षा विश्लेषण अधिक बदलतो। जर तुम्ही इंजिनला पॅच केले असेल, तर पॅच स्वतः व्युत्पन्न कार्य आहे, आणि जबाबदारी निकाल वितरित करणाऱ्यावर येते।
प्रत्येक पॅच, त्याचा उद्देश आणि तो अपस्ट्रीम पाठवला गेला का हे नोंदवा, कारण तुमच्या रेपॉझिटरीतून कधीच न गेलेला पॅचही तुम्ही बायनरी वितरित करत असाल तर वितरणाचा भाग राहतो।
कॉन्फिगरेशन फाईली, थीम आणि भाषांतरे सहसा इंटरफेससोबत राहतात, पण इंजिनच्या स्रोत स्ट्रिंग्ज समाविष्ट करणारे भाषांतर ही सीमा डिरेक्टरीनुसार नाही तर फाईलनुसार आहे याची छोटी आठवण आहे। अपस्ट्रीम प्रकाशन आणि तुमच्या बिल्डमधील फरक ठेवा, जेणेकरून उत्तर नंतर पुन्हा तयार करण्याऐवजी मागणीनुसार उपलब्ध असेल। तोच फरक ऑडिटरने काय बदलले असे विचारल्यावर सर्वात उपयुक्त कलाकृती असतो।
OpenSSL आवृत्ती स्वतंत्रपणे तपासा
OpenSSL 3.0 आणि नंतरच्या आवृत्त्या Apache License 2.0 अंतर्गत वितरित होतात, तर जुन्या प्रकाशनांमध्ये OpenSSL/SSLeay अटी असतात। ही वेगवेगळ्या जबाबदाऱ्यांची वेगवेगळी दस्तऐवजे आहेत, आणि बंडल केलेले इंजिन तुमच्या बिल्ड सिस्टमला सापडलेल्यापैकी कोणतेही लिंक करू शकते।
बिल्ड स्क्रिप्टमध्ये नाव दिलेली नाही, प्रत्यक्षात वितरित होणारी आवृत्ती पुष्टी करा।
OpenVPN वरचे अवलंबित्व OpenSSL मधील प्रत्येक बदल GPL कोड करत नाही, आणि लिंकिंग अपवाद लायब्ररीच्या पुनर्वितरणासोबत येणाऱ्या इतर जबाबदाऱ्या दूर करत नाही। अपवादाकडे मोठ्या विश्लेषणातील एक कलम म्हणून पाहा, आणि TLS लायब्ररीच्या स्वतःच्या सूचना बाकी सर्वांसोबत नोंदवा।
पुरावा पॅकेज एकत्र करा
पॅकेजचे चार भाग आहेत: आवृत्त्यांसह फाईल यादी, एकत्रीकरणाचे वर्णन, फरकांसह बदलांची यादी आणि वितरित स्वरूपातील परवाना मजकूर। तुम्ही वितरित करत असलेली सूचना फाईल आणि जबाबदाऱ्यांना प्रस्ताव आवश्यक असल्यास स्रोत कोड देऊ केला जाणारा ठिकाण जोडा।
पॅकेज एका मालकाकडे ठेवा, जेणेकरून त्याशिवाय कोणतेही प्रकाशन बाहेर पडू शकणार नाही।
यापैकी काहीही कायदेशीर प्रश्न ठरवत नाही, आणि तोच मुद्दा आहे: ते सक्षम समीक्षकाला कोणी स्मरणातून जुळवलेल्या सारांशाऐवजी तथ्ये देते। विक्रेत्याचे विपणन वर्णन त्यांच्या स्थापत्याचा पुरावा नाही, आणि त्याबद्दलची तुमची स्वतःची धारणाही पुरावा नाही।