پرسش به‌صورت یک مسئلهٔ مجوز مطرح می‌شود، اما پاسخ با یک فهرست آغاز می‌شود. یک رابط VPN، موتور OpenVPN که آن را می‌گرداند، یک کتابخانهٔ TLS و یک نصب‌کننده می‌توانند چهار مجموعهٔ متفاوت از شرایط داشته باشند، و ظاهر محصول هیچ چیزی درباره اینکه کدام فایل به کدام مجموعه تعلق دارد نمی‌گوید. مصنوعات را به ترتیبی که توزیع می‌شوند بررسی کنید، و پرسش حقوقی تا زمانی که آن را به فردی واجد صلاحیت برای پاسخ بسپارید بسیار باریک‌تر می‌شود. هر گام آن را بیشتر محدود می‌کند: چه چیزی توزیع می‌شود، چه چیزی تغییر کرده و بخش‌ها چگونه ارتباط برقرار می‌کنند.

با آنچه نصب‌کننده روی دیسک می‌گذارد شروع کنید

نصب‌کننده یا بستهٔ منتشرشده را بردارید، نه یک نسخهٔ توسعه، و هر فایلی را که روی یک ماشین پاک قرار می‌دهد فهرست کنید. نسخه‌های رابط، موتور و کتابخانهٔ TLS را ثبت کنید و توجه کنید که موتور یک فایل اجرایی جداگانه است یا کتابخانه‌ای که در همان فرایند بارگذاری می‌شود.

این حقیقت آخر همهٔ آنچه در پی می‌آید را شکل می‌دهد. یک فایل اجرایی جداگانه که از طریق سوکت اجرا می‌شود مجموعهٔ متفاوتی از پرسش‌ها را با کدی که در یک فایل دودویی کامپایل شده مطرح می‌کند، و نصب‌کننده‌ای که فقط هر دو را کنار هم می‌گذارد به هیچ سمتی مسئله را فیصله نمی‌دهد. بسته‌بندی یک تصمیم بسته‌بندی است، در حالی که رابطهٔ میان برنامه‌ها یک تصمیم معماری است.

فهرست را همراه با نسخه‌ها بنویسید، چون شرایط میان انتشارهای اصلی متفاوت است.

dpkg -L openvpn | head -n 40
openssl version -a

رابط را از موتور جدا کنید

فایل کپی OpenVPN نسخهٔ 2 GPL را ذکر می‌کند و یک استثنای پیوند برای OpenSSL را مستند می‌کند، که اجازه‌ای مشخص با دامنهٔ تعریف‌شده است و نه مجوزی عمومی برای آمیختن شرایط.

متنی از مجوز را که با ساخت شما توزیع می‌شود ثبت کنید، نه آن را که امروز روی وب‌سایت پروژه است. انتشاری که شاخهٔ قدیمی‌تری را تثبیت کرده، سند همان شاخه را با خود دارد. تصاویر صفحهٔ یک مخزن جایگزین نیستند، چون فایلی که نیاز دارید همانی است که درون مصنوع است. آن را کنار نصب‌کننده نگه دارید تا بسته کامل باشد.

سپس یکپارچگی را صادقانه توصیف کنید: آیا رابط موتور را به‌عنوان فرایند فرزند اجرا می‌کند و با پروتکل متنی صحبت می‌کند، یا کتابخانه‌ای را پیوند می‌دهد و ساختارهای درونی را مبادله می‌کند؟ آرایش دوم به‌گونه‌ای نزدیک است که اولی نیست، و همین تمایز نخستین چیزی است که یک بازبین می‌پرسد.

یادداشت کنید کدام فایل‌ها را تغییر داده‌اید

کد منبع تغییریافته تحلیل را بیش از هر جزئیات بسته‌بندی تغییر می‌دهد. اگر موتور را وصله کرده‌اید، خود وصله اثر مشتق است و تعهد بر عهدهٔ کسی است که نتیجه را توزیع می‌کند.

هر وصله، هدف آن و اینکه آیا به بالادست فرستاده شده را ثبت کنید، چون وصله‌ای که هرگز مخزن شما را ترک نکرده، اگر فایل دودویی را توزیع کنید همچنان بخشی از آنچه توزیع می‌کنید است.

فایل‌های پیکربندی، پوسته‌ها و ترجمه‌ها معمولاً همراه رابط زندگی می‌کنند، اما ترجمه‌ای که رشته‌های کد موتور را جاسازی می‌کند یادآور کوچکی است که مرز بر اساس فایل است نه پوشه. تفاوتی میان انتشار بالادست و ساخت خود نگه دارید تا پاسخ در صورت درخواست در دسترس باشد نه اینکه بعداً بازسازی شود. همین تفاوت مفیدترین مصنوع است وقتی بازرس می‌پرسد چه چیزی تغییر کرده.

نسخهٔ OpenSSL را جداگانه بررسی کنید

OpenSSL 3.0 و نسخه‌های بعدی تحت مجوز Apache 2.0 توزیع می‌شوند، در حالی که انتشارهای قدیمی‌تر شرایط OpenSSL/SSLeay را دارند. این‌ها اسناد متفاوتی با تعهدات متفاوت هستند، و موتور بسته‌بندی‌شده ممکن است هرکدام را که سیستم ساخت شما یافته پیوند دهد.

نسخهٔ واقعاً توزیع‌شده را تأیید کنید، نه نسخهٔ نام‌برده در اسکریپت ساخت.

وابستگی به OpenVPN هر اصلاح OpenSSL را به کد GPL تبدیل نمی‌کند، و استثنای پیوند سایر تعهداتی را که با توزیع مجدد کتابخانه می‌آید برنمی‌دارد. استثنا را یک بند در تحلیلی بزرگ‌تر بدانید، و اعلان‌های خود کتابخانهٔ TLS را در کنار همه چیز دیگر ثبت کنید.

بستهٔ شواهد را گرد آورید

بسته چهار بخش دارد: فهرست فایل‌ها با نسخه‌ها، توصیف یکپارچگی، فهرست تغییرات با تفاوت‌ها، و متن‌های مجوز به همان شکلی که توزیع می‌شوند. فایل اعلانی را که توزیع می‌کنید و جایی که کد منبع عرضه می‌شود اضافه کنید، اگر تعهدات شما عرضه‌ای را الزامی می‌کند.

بسته را زیر یک مالک نگه دارید تا هیچ انتشاری بدون آن بیرون نرود.

هیچ‌یک از این‌ها مسئلهٔ حقوقی را فیصله نمی‌دهد، و نکته همین است: به بازبین واجد صلاحیت واقعیت‌ها را می‌دهد نه خلاصه‌ای که کسی از حافظه گرد آورده است. توصیف بازاریابی یک فروشنده مدرکی دربارهٔ معماری آن نیست، و حدس خود شما دربارهٔ آن هم مدرک نیست.

مقالات مرتبط