ایک 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 لائبریری کے اپنے نوٹس باقی سب کے ساتھ درج کریں۔
ثبوت کا پیکج جمع کریں
پیکج کے چار حصے ہیں: ورژن کے ساتھ فائل فہرست، انضمام کی تفصیل، فرق کے ساتھ تبدیلیوں کی فہرست اور تقسیم شدہ شکل میں لائسنس متن۔ آپ جو نوٹس فائل تقسیم کرتے ہیں اور جہاں سورس کوڈ پیش کیا جاتا ہے وہ شامل کریں، اگر آپ کی ذمہ داریاں پیشکش کا تقاضا کریں۔
پیکج کو ایک مالک کے تحت رکھیں تاکہ اس کے بغیر کوئی ریلیز باہر نہ نکلے۔
ان میں سے کوئی بھی قانونی سوال طے نہیں کرتا، اور یہی بات ہے: یہ اہل جائزہ لینے والے کو کسی کے حافظے سے جوڑے گئے خلاصے کے بجائے حقائق دیتا ہے۔ فروخت کنندہ کی مارکیٹنگ تفصیل اس کی معماری کا ثبوت نہیں، اور اس بارے میں آپ کا اپنا قیاس بھی ثبوت نہیں ہے۔