একটি 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 লাইব্রেরির নিজস্ব নোটিশগুলি সবকিছুর সঙ্গে লিপিবদ্ধ করুন।
প্রমাণের প্যাকেট একত্র করুন
প্যাকেটের চারটি অংশ: সংস্করণসহ ফাইল তালিকা, ইন্টিগ্রেশনের বর্ণনা, ডিফসহ পরিবর্তনের তালিকা এবং বিতরণকৃত অবস্থায় লাইসেন্স পাঠ। আপনি যে নোটিশ ফাইল বিতরণ করেন এবং সোর্স যেখানে প্রস্তাব করা হয় তা যোগ করুন, যদি আপনার বাধ্যবাধকতায় প্রস্তাব প্রয়োজন হয়।
প্যাকেটটি এক মালিকের অধীনে রাখুন, যাতে এটি ছাড়া কোনো প্রকাশ বেরোতে না পারে।
এর কোনওটিই আইনি প্রশ্ন নির্ধারণ করে না, আর সেটাই মূল কথা: এটি যোগ্য পর্যালোচককে কেউ স্মৃতি থেকে জোড়া দেওয়া সারাংশের বদলে তথ্য দেয়। বিক্রেতার বিপণন বর্ণনা তাদের স্থাপত্যের প্রমাণ নয়, আর সে সম্পর্কে আপনার নিজের অনুমানও প্রমাণ নয়।