وقتی قصد دارید پروژهای را اپنسورس کنید، ابتدا به مجوزی نیاز دارید تا مسائلی همچون نحوهٔ توزیع، تغییرات، استفادهٔ شخصی/تجاری و غیره را به طور خودکار حلوفصل کرده باشد. مجوزهای اپنسورس زیادی برای انتخاب وجود دارند که از جملهٔ آنها میتوان MIT ،GNU GPL ،Apache 2.0 ،Creative Commons ،BSD و غیره نام برد که هر کدام از آنها ویژگیهای مخصوص به خود را دارند که حتی مالکیت و اعتبار پروژه را نیز تعیین مینمایند. در همین راستا، در این مقاله قصد داریم به بررسی و مقایسهٔ رایجترین لایسنسهای اپنسورسی به همراه جزئیات آنها بپردازیم.
اگر بخواهید از گیتهاب برای ذخیرهٔ #سورسکد یک پروژهٔ معمولی استفاده کنید، میتوانید از هر مجوزی که خواستید بهره ببرید و تفاوت چندانی وجود ندارد چرا که کسی قرار نیست از این پروژهٔ کوچک شما در نرمافزار بزرگی استفاده کند و همچنین ایدهای در آن نیست که ترس از دست دادن آن را داشته باشید. اما وقتی میخواهید ابزار یا محصولی بسازید که بعدها دیگران بتوانند تغییراتی در آن ایجاد کنند و نسخههای کاستومایزشدهٔ خود را بسازند، باید از لایسنس (مجوز) اپنسورس مناسبی برای آن استفاده کنید. مجوزهای زیادی برای انتخاب وجود دارند که از جملهٔ مهمترین آنها میتوان به موارد زیر اشاره کرد:
- Apache License 2.0
- BSD 3-Clause “New” or “Revised” license
- BSD 2-Clause “Simplified” or “FreeBSD” license
- GNU General Public License (GPL) v3.0
- GNU Library or “Lesser” General Public License (LGPL)
- MIT license
- Mozilla Public License 2.0
- Common Development and Distribution License
- Eclipse Public License
- Creative Commons License
منظور از لایسنس چیست؟
پیش از هرچیز، بایستی ابتدا به ساکن ببینیم که اصلاً License (لایسنس به معنی مجوز) چیست؟ از مدتها پیش بحث دربارهٔ اینکه لایسنس چیست وجود داشته که گاهی اوقات باعث سردرگمی نیز میشود. وقتی کسی برای چیزی مجوز میگیرد، در واقع از حق خود دفاع میکند (مانند کپیرایت یا پتنت که هرگونه حقی را صرفاً برای دارندهٔ آن محفوظ نگاه میدارد.)
به طور کلی، یک لایسنس شامل یکسری راهنمایی و قوانینی برای استفادهٔ دیگران از کارهای شما را ارائه میدهد و این در حالی است که لایسنسهای اپنسورس به دیگران کمک میکنند تا بدون نیاز به کسب اجازهٔ شخصی و اصطلاحاً Per Case (موردی)، در پروژهٔ شما مشارکت کرده و یا از آن -بر اساس قوانین لایسنس- استفاده کنند که در ادامه به برخی از این مجوزها و ماهیتشان و همچنین شرایط توزیع، اعمال تغییرات، استفادهٔ شخصی و غیره اشاره میکنیم.
GNU General Public License
- کپی کردن سورسکد: محدودیت خاصی برای کپی کردن کدها در پروژههایی که لایسنس GPL دارند وجود نداشته و میتوانید کدهای دارای این مجوز را به سادگی کپی کنید.
- توزیع سورسکد: میتوانید آن را روی فلش یا هاردتان توزیع کنید، یا کدها را در وبسایت خود با لینک دانلود و به همراه همین لایسنس منتشر نموده و یا روی کاغذ پرینت کنید. در واقع، به هر شکلی که بخواهید میتوانید پروژههای دارای لایسنس GPL را توزیع کنید.
- هزینه: میتوانید از مخاطب برای ارائهٔ نرمافزار به او هزینه دریافت کنید ولی به خاطر داشته باشید که باید یک کپی از GNU GPL را نیز ارائه کنید که به آنها میگوید میتوانند نرمافزار را از جای دیگر بدون هزینه دریافت کنند (در کنار این کار، همچنین میتوانید دلیلی که به خاطر آن از مخاطب هزینه دریافت میکنید را نیز بیان کنید.)
- به هر طریق که بخواهید کد را تغییر دهید: اگر میخواهید تغییراتی در پروژه ایجاد کنید (اصطلاحاً آن را Fork کنید)، این امکان برای شما فراهم است؛ به عبارت دیگر، ویژگیهایی که میخواهید را حذف و اضافه نمایید اما تنها به شرطی که شما هم پروژهٔ خود را تحت مجوز GNU GPL ارائه کنید (همچنین این نکته حائز اهمیت است که تفاوت بین سورسکد پروژه و توزیع باینری آن را بدانید؛ به این دلیل که محدودیتهایی در رابطه با هر کدام وجود دارد. همچنین، اگر پروژهای از GNU GPL استفاده میکند، باید با برخی قوانین استاندارد دربارهٔ کامنتگذاری بخشهای مختلف این مجوز درون سورسکد نیز مطابقت داشته باشد.
GNU LESSER GENERAL PUBLIC LICENSE
این لایسنس حقوق کمتری را برای استفاده در مقایسه با GNU GPL نیاز دارد و معمولاً در لایبرریها و پروژههایی استفاده میشود که قصد دارند اجازهٔ لینک شدن آنها را به نرمافزارهای بدون مجوز GPL و با سورسکد بسته نیز بدهند.
در مورد مجوز GPL، هر پروژه و سورسکدی که در پروژهٔ تحت GPL عرضه میشود، خود نیز باید GPL باشد و کدهای تحت GPL نمیتواند در پروژههای اختصاصی مورد استفاده قرار بگیرد. LGPL این مورد را نادیده گرفته و نیاز به مجوز مشابه برای استفاده از کدهای دارای LGPL را از بین میبرد (به عبارتی، نسبت به GPL آزادی بیشتری در اختیار دولوپرها قرار میدهد.)
BSD License
مجوز BSD بخشی از خانوادهٔ مجوزهای نرمافزار آزاد است که در مقایسه با مجوزهای نرمافزاری دیگر، محدودیتهای کمتری دربارهٔ نحوهٔ توزیع دارد که دو نسخهٔ مهم آن عبارتاند از:
The New BSD License / The New Modified BSD License -
The Simplified BSD License / FreeBSD License -
که هر دو به عنوان مجوزهای اپنسورس توسط Open Source Initiative پذیرفته شدهاند. مجوز New BSD که با نام «مجوز سه شرطی» نیز شناخته میشود، اجازهٔ توزیع مجدد نامحدود را برای هر هدفی میدهد (البته تا وقتی که کپیرایت و رفع تعهدهای این مجوز برقرار باشند.) این مجوز یک شرط جالب نیز دارا است به این شکل که استفاده از نام مشارکتکنندگان برای تأیید کارهای انجام شده در پروژه را بدون اجازهٔ شخصی آنها ممنوع میکند!
این تبصره در واقع بدان معنا است که اگر کسی سورسکد دولوپر شناختهشدهای را فورک کرده باشد و تغییراتی را برای ساخت پروژهٔ جدید در آن انجام داده باشد، نمیتواند از نام آن فرد مطرح برای تأیید و اعتباربخشی به پروژهٔ خود استفاده کند (در حقیقت، تفاوت اصلی میان نسخهٔ جدید و نسخهٔ سادهٔ مجوز BSD در استفاده از این شرط است.)
MIT LICENSE
این مجوز، کوتاهترین و احتمالاً پراستفادهترین مورد بین تمامی لایسنسهای اپنسورس است زیرا شرایط آن آسان است و به اصطلاح از مجوزهای دیگر اُپنتر عمل میکند. اگر بخواهیم ماهیت اصلی این لایسنس را شرح دهیم، بایستی بگوییم که به وسیلهٔ این مجوز، اجازهٔ استفادهٔ بدون هزینه به هر شخصی که یک کپی از سورسکد یا نرمافزار و مستندات مربوط به آن را دریافت کرده داده میشود تا در آن نرمافزار بدون هیچگونه محدودیتی تغییرات خود را اِعمال کند که شامل استفادهٔ بدون محدودیت، کپی، تغییر، ترکیب، انتشار، توزیع، استفاده بخشی از مجوز و یا فروش کپیهایی از نرمافزار میشود و به افرادی که این نرمافزار برایشان تهیه شده نیز این موارد اجازه داده میشود به شرطی که ملاحظاتی که در بالا به آنها اشاره شد و همچنین معرفی این لایسنس را در تمامی کپیها یا بخشهای مهم این نرمافزار در معرض دید کاربران قرار دهند.
با این مجوز در واقع اجازهٔ استفاده، کپی و تغییر در نرمافزار را هر طوری که تمایل دارید خواهید داشت؛ هیچ کسی نمیتواند شما را از بهکارگیری آن در پروژههای دیگر منع کند و میتوانید نرمافزار را تحت این مجوز به صورت رایگان یا از طریق فروش آن عرضه کنید. هیچ شرطی برای این توزیع به هیچ طریقی وجود نخواهد داشت و هر کسی میتواند هر تغییری که میخواهد را در کدهای تحت لیسانس MIT انجام دهد (البته مادامی که مجدد تحت این مجوز عرضه شوند.)
CREATIVE COMMONS
مجوز Creative Commons که به اختصار CC گفته میشود، خیلی هم اپنسورس نبوده و به طور معمول در پروژههای مربوط به طراحی استفاده میشود. انواع مختلفی از این نوع لایسنس وجود دارد که هر کدام برای موارد خاصی ایجاد شده که حق و حقوق معینی را اعطا مینند به طوری که یک مجوز CC دارای چهار بخش اساسی است که عبارتند از:
- اعتباربخشی: نویسنده (مؤسس) باید به عنوان خالق اثر نام برده شود؛ سپس میتوان آن را تغییر داد، توزیع کرد، کپی نمود و طور دیگری استفاده کرد.
- انتشار تحت مجوز کریتیو کامانز: میتوان اثر را تغییر داد و توزیع کرد ولی تنها تحت مجوز CC.
- غیرتجاری: یک اثر تحت این مجوز میتواند تغییر داده شود یا توزیع شود ولی نه برای اهداف تجاری (البته عبارت Commercial بهمعنی «تجاری» کمی مبهم است و هیچ تعریف مشخصی از آن ارائه نشده است!)
- ممنوعیت اِعمال تغییرات: میتوان اثر دارای چنین مجوزی را کپی کرده یا توزیع کرد، اما نمیتوانید آن را به هیچ صورت تغییر دهید یا اثری را بر اساس طرح اصلی ایجاد کنید.
به خاطر داشته باشید که اینها قوانین الزامی موجود در همهٔ مجوزهای مبتنی بر CC نیستند؛ برخی از مجوزهای CC ممکن است این شرطها را نداشته باشند، چرا که برخی از این شرطها دو به دو ناسازگار هستند و برخی میتوانند بنا به نیاز، با هم ترکیب شوند.
APACHE LICENSE
حقوق موجود در مجوز آپاچی نسخهٔ 2.0 را میتوان برای مقولهٔ کپیرایت یا پَتِنت استفاده کرد (البته برخی مجوزها را تنها میتوان روی #کپیرایت اِعمال کرد و برای پتنتها مورد استفاده قرار نمیگیرند!) به طور کلی، قسمتی از جزئیات مجوز آپاچی به شرح زیر است:
- حقوق هیچگاه به اتمام نمیرسد: وقتی حقوقی تحت مجوز آپاچی ارائه شود، دیگر نیازی به تکرار مجوز برای آن نیست و همیشه میتوانید تحت همین مجوز از آنها استفاده کنید.
- نفوذ جهانی: حتی اگر حقوقی در یک کشور عرضه شود، به طور خودکار در همهٔ کشورها قابل استفاده میشود.
- عرضهٔ رایگان یا دریافت حق امتیاز: بدون هزینه، هزینه بر مبنای استفاده یا هر نوع دیگری اجرایی است.
- حقوق غیرقابل فَسخ است: هیچکس نمیتواند ادا کند که کار مشتق شدهٔ شما از سورسکدی که تحت این مجوز عرضه شده را دیگر نمیتوانید استفاده کنید (عبارتی در این مجوز وجود دارد که بیان میکند اگر شما از فردی به خاطر نقض پتنت یا هر چیز دیگری تحت این لایسنس شکایت کنید، مجوز شما باطل میشود، اما این قضیه فقط به کارهای پتنتشده اختصاص دارد و تا وقتی که شما از کسی شکایت نکنید، نگرانی خاصی وجود ندارد.)
به غیر از موارد فوق، آیا لایسنسهای کاربردی دیگری میشناسید که در فضای اپنسورس کاربرد داشته و مورد استفاده قرار میگیرند؟ همچنین آیا تاکنون از یکی از مجوزهای فوق در پروژههای اپنسورس خود استفاده کردهاید؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.