مجوز AGPLv3 (GNU Affero General Public License version 3) یک مجوز نرمافزار آزاد و متنباز است که توسط بنیاد نرمافزار آزاد (FSF) منتشر شده است. این مجوز مبتنی بر GPLv3 است، اما یک بند اضافی دارد که به طور خاص برای نرمافزارهایی که از طریق شبکه (مثل وب) اجرا میشوند، طراحی شده است. هدف اصلی AGPLv3 اطمینان از این است که کاربرانی که با نرمافزار تعامل دارند (حتی از راه دور) به کد منبع آن دسترسی داشته باشند.
ویژگیهای کلیدی AGPLv3:
- آزادی استفاده، تغییر و توزیع: کاربران میتوانند نرمافزار را آزادانه استفاده، اصلاح و توزیع کنند.
- الزام به انتشار کد منبع: اگر نرمافزاری که تحت AGPLv3 است را تغییر یا توزیع کنید، باید کد منبع تغییرات را تحت همان مجوز منتشر کنید.
- بند خاص شبکه: اگر نرمافزار تحت AGPLv3 روی سرور اجرا شود و کاربران از طریق شبکه (مثل مرورگر) با آن تعامل کنند، باید کد منبع نرمافزار (شامل تغییرات) به کاربران ارائه شود. این بند حتی اگر نرمافزار را "توزیع" نکنید، اعمال میشود.
استفاده از کتابخانه AGPLv3 در نرمافزار تجاری غیرمتنباز:
اگر از یک کتابخانه با مجوز AGPLv3 در یک نرمافزار تجاری غیرمتنباز استفاده کنید، موارد زیر اعمال میشود:
- الزام به انتشار کد منبع: به دلیل ماهیت "ویروسی" (copyleft) مجوز AGPLv3، هر نرمافزاری که از این کتابخانه استفاده کند، به طور کلی باید تحت همان مجوز (AGPLv3) منتشر شود. این یعنی شما باید کل کد منبع نرمافزار (نه فقط کتابخانه) را به کاربران ارائه دهید، حتی اگر نرمافزار روی سرور اجرا شود و کاربران از طریق شبکه به آن دسترسی داشته باشند.
- نرمافزار تجاری غیرمتنباز: اگر نرمافزار شما غیرمتنباز باشد (یعنی نمیخواهید کد منبع آن را منتشر کنید)، استفاده از کتابخانه AGPLv3 معمولاً با این هدف سازگار نیست. شما نمیتوانید کد منبع را مخفی نگه دارید، چون این کار نقض شرایط مجوز AGPLv3 خواهد بود.
- توزیع یا اجرا روی سرور: حتی اگر نرمافزار را توزیع نکنید و فقط روی سرور خودتان اجرا کنید، بند شبکه AGPLv3 شما را ملزم میکند که کد منبع را به کاربرانی که از طریق شبکه با نرمافزار تعامل دارند، ارائه دهید.
راهحلهای ممکن:
- جایگزینی کتابخانه: اگر نمیخواهید کد منبع نرمافزار خود را منتشر کنید، میتوانید از کتابخانهای با مجوز کمتر محدودکننده (مثل MIT، Apache 2.0 یا LGPL) استفاده کنید که الزامات کمتری برای انتشار کد منبع دارند.
- جداسازی ماژولها: اگر امکانپذیر باشد، میتوانید بخشهایی از نرمافزار که از کتابخانه AGPLv3 استفاده میکنند را به صورت جداگانه (مثلاً به عنوان یک سرویس مستقل) پیادهسازی کنید تا کل نرمافزار تحت تأثیر مجوز AGPLv3 قرار نگیرد. با این حال، این روش پیچیده است و نیاز به بررسی حقوقی دقیق دارد.
- متنباز کردن نرمافزار: اگر مشکلی با انتشار کد منبع ندارید، میتوانید نرمافزار خود را تحت AGPLv3 یا مجوز سازگار دیگری منتشر کنید.
نتیجه:
استفاده از یک کتابخانه AGPLv3 در یک نرمافزار تجاری غیرمتنباز معمولاً شما را ملزم میکند که کل کد منبع نرمافزار (شامل تغییرات) را تحت AGPLv3 منتشر کنید، چه نرمافزار را توزیع کنید و چه روی سرور اجرا کنید. اگر نمیخواهید کد منبع را منتشر کنید، بهتر است از کتابخانهای با مجوز متفاوت استفاده کنید یا با یک وکیل متخصص در حوزه نرمافزار مشورت کنید.
مشاهده مطلب اصلی