در دنیای مدرن برنامهنویسی امروز همانند دیگر کسبوکارها در حوزههای مختلف، برنامهنویسی و توسعهٔ نرمافزار دارای قوانین و چهارچوبهای تقریباً مشخصی است که توسعهدهندگان حقوقی و حقیقی باید در بارهٔ آنها بدانند تا در میدان دردسرهای پیشبینینشده و ناخواسته سقوط نکنند. در این مقاله به انواع مجوزها و همچنین قوانین حاکم بر آنها اشاره میشود که شما را دعوت به مطالعهٔ آن میکنیم.
در بسیاری از مواقع، نوشتن یک برنامهٔ کاربردی، بدون استفاده از انوع کتابخانههای از قبل نوشته شده (کدهایی که دیگران نوشتهاند)، تقریباً غیرممکن است. مهمترین چیزی که پیش از دست زدن به کدها و تصاویر آمادهٔ گرافیکی، یا استفاده از کتابخانهها باید بررسی کنید، مجوز، یا به اصطلاح (لایسنسی) است که اثر را تحت آن توزیع کردهاند. برای اطلاع از آن، معمولاً باید به دنبال فایلی با نام license.txt
بگردید یا صفحهٔ مربوط به مجوزها (Legal/Licensing
) را در سایت اصلی بیابید.
برخی از تفکرات غلط که باید به آنها توجه شود
قرار است شما کتابخانهای را بنویسید و یا محصولی را توسعه دهید، در توسعهٔ آن شما نیاز به استفاده از کتابخانهها و یا تکهکدهایی هستید که دیگران آنها را توسعه دادهاند، با توجه به اینکه محصول شما قرار نیست منبعباز باشد (تجاری) بنابراین نباید اینگونه فکر کنید که چون محصول من تجاری است و قرار نیست کسی کد آن را ببیند، پس نیازی به حفظ حقوق توسعهدهنده و یا عنوان کردن کتابخانهها و توسعهدهندگان دیگر باشم! این یک تفکر غلظ است (چرا که محصول شما بدون وجود کدهای نوع سوم (Third-Party) قادر به انجام کارهایی که از آن انتظار دارید را نخواهد داشت (مگر اینکه محصول شما به صورت کامل توسط خود شما توسعه داده شده باشد) که این کار در بسیاری از مواقع تقریباً غیرممکن است.
برای مثال اگر نیاز است شما در رابطه با مباحث امنیتی از کتابخانهای مانند OpenSSL استفاده کنید، دیگر نوشتن یک کتابخانهٔ عظیمی مانند آن حماقتی بیش نیست چرا که چنین کتابخانههایی توسط شرکتها، سازمانها و توسعهدهندگان بسیاری از قبل توسعه و مورد استفاده قرار گرفتهاند و از لحاظ پایداری و اطمینان استفاده مورد تایید قرار گرفتهاند.
دقت کنید که استفاده از کتابخانهها و حتی هدف از نوشتن یک کتابخانه باید تحت شرایط حاکم بر مجوزها را در نظر داشته باشد. برای مثال، اگر شما قصد دارید کتابخانهای را مورد استفاده قرار دهید و یا قرار است کتابخانهای را ایجاد و توسعه دهید بهترین کار قبل از شروع توسعه آن است که بدانید هدف شما از توسعهٔ آن کتابخانه چه چیزی است؟ آیا قرار است کتابخانهٔ مورد نظر شما به صورت انحصاری و تجاری در اختیار کاربران قرار بگیرد و یا قرار است به صورت کاملاً رایگان به اشتراک گذاشته شود؟
شاید ابتدا به این فکر کنیم که چرا باید کدی را که برای آن زحمت کشدهایم به صورت رایگان در اختیار دیگران قرار دهیم، چرا که ممکن است آن را بدون حفظ نام نویسنده تغییر، توسعه و بازنشر و برای استفاده در مصارف تجاری (غیر رایگان) قرار دهند؟ برای پاسخ به این سوألها پیشنهاد میکنیم به ویژگیهای مجوزهای موجود دقت کنید چرا که حتی وقتی شما یک تکه کد را به صورت رایگان در اختیار دیگران قرار میدهید استفاده کننده موظف است تا طبق قوانین از پیش تعریف شدهٔ مجوزهای منبعباز (Open Source) آن را مورد استفاده قرار دهد که به حفظ حقوق چاپ و تکثیر، توسعه و دیگر موارد پرداخته است.
انواع مجوزهای نرمافزاری و ویژگیهای آن
نرم افزارهای متن باز (Open Source Software)
نرم افزار متن باز را میتوان نرمافزاری معرفی کرد که تحت یک مجوز (Licence) دارای موافقتنامهٔ انتشار یافته، که اجازهٔ به اشتراکگذاری کد منبع (کد کامپیوتری) را جهت مشاهده و انجام تغییرات در آن توسط کاربران و سازمانهای دیگر میدهد.
مثالهایی از این نوع نرم افزارها میتوان به مرورگر موزیلا، لینوکس، جوملا، وردپرس و غیره اشاره کرد.
نرم افزارهای اختصاصی (متن بسته) (Closed Source Software)
اینگونه نرمافزارها، نرمافزارهایی اختصاصی هستند که تحت یک مجوز دارای موافقتنامه برای انجام تغییرات، توزیع، کپی و انتشار محدود و کنترل شده در اختیار کاربران و سازمانها قرار میگیرند. یا به صورت ساده تر نرمافزارهایی که برای دریافت آنها باید پول پرداخت کنید و اجازه دسترسی به کد منبع برنامه را ندارید.
مثالهایی از این نوع نرمافزارها میتوان به محصولات مایکروسافت مانند Office یا شرکت Adobe مانند Photoshop و غیره اشاره کرد.
مجوز آزاد (CopyFree)
کدهایی که تحت این نوع مجوز توزیع میشوند، هیچ محدودیتی بر برنامهٔ نهایی شما ایجاد نمیکنند. شما آزاد هستید که هر تغییری در آنها ایجاد کنید و لزومی ندارد کدهای تغییریافته یا استفادهشده را بازنشر دهید. حتی منبعی برای استفادهٔ تجاری از این کدها نیز وجود ندارد.
انواع اصلی این لایسنسها عبارتند از Apache، BSD، MIT/X11 و Academic Free Licence مجوزهای BSD و MIT بسیار مختصر هستند و تنها به مثابهٔ اعلامیهای برای سلب مسئولیت از نویسنده به کار میروند و گزینهٔ مناسبی برای کامپوننتها و کدهای کوچک قلمداد میشوند. در حالی که Apache و AFL، متنهای حقوقی و کاملی هستند که تکلیف مسائلی نظیر سرنوشت پتنتها را نیز مشخص کردهاند. برنامههای کامل، ترجیحاً با مجوزهای Apache عرضه میشوند. به عنوان مثال، برنامههای معروفی که از این نوع لایسنسها استفاده میکنند، میتوان به LLVM/Clang، X11، FreeBSD، OpenSSL، Apache Server، اپل وبکیت و کرومیوم، و قسمتهای یوزرلند اندروید اشاره نمود.
مجوز تجاری (Copyrighted/Proprietary) کپیرایت شده
همهٔ برنامههای تجاری با این عنوان عرضه میشوند. این کدها بدون تهیهٔ مجوز لازم از توزیعکننده، در کدهای شما قابل استفاده نیستند. استفاده از این کدها یا لینک کردن به آنها، معمولاً در ازای پرداخت پول مجاز است. پس از دریافت مجوز، ممکن است فایلهای کامپایلشده (سورسبسته) یا کدهای اصلی (همراه سورس) را در اختیار شما قرار دهند، اما به شما اجازهٔ توزیع آن کدها را نخواهند داد. از گروه سورسبسته میتوان به ویندوز و مایکروسافت آفیس، و از گروه همراه با سورس میتوان به vBulletin، Unix و کامپوننتهای DevExpress اشاره کردبر خلاف مجوزهای متنباز لزوماً همراه داشتن سورس به معنی متنباز (opensource) بودن نرمافزار نیست. بلکه شرایط دیگری مثل شرایط بازنشر نیز لحاظ میشود. عملاً فقط مجوزهای آزاد و کپیلفت تحت این عنوان قرار میگیرند، استاندارد رایجی برای مجوزهای کپیرایت تجاری وجود ندارد و توصیه میشود فایل لایسنس، بهدقت مطالعه شود.
مجوزهای کپیلِفت قوی (Strong Copylefted)
کدهایی که تحت این عنوان توزیع میشوند، لایسنس خود را به برنامهٔ شما تحمیل مینمایند. حتی اگر یک خط از آنها را وارد برنامهٔ خود کنید، ناچار خواهید بود کل برنامهتان را به صورت کپیلفت، در اختیار سایرین قرار دهید. این مجوزها به شما اجازهٔ تجاریسازی یا فروش برنامه و کدتان را نمیدهند. سختگیری مجوزهای کپیلفت تنها به استفاده از کدها ختم نمیشود. حتی لینک کردن به نسخهٔ کامپایلشدهٔ آنها نیز، چه به صورت استاتیک انجام شود و چه به صورت دینامیک، همهٔ کدهایتان تحت این مجوزها قرار خواهد گرفت. بنابراین اگر قصد ندارید بدون انتشار همهٔ کدهای خود برنامهتان را توزیع کنید و یا از فروش آن کسب درآمد نمایید.
جهت اطلاع از روشهای درآمدزایی از پروژههای متن-باز به این سند مراجعه کنید. البته کسب درآمد از طریق ارائهٔ خدمات پشتیبانی و نصب و راهانداری قانونیست و مدل تجاری شرکتهای بزرگی همچون ردهت بر این اساس بنا نهاده شده است.انواع اصلی این لایسنسها GPL و AGPL هستند که هر کدام چندین نسخه دارند. در میان برنامههای معروفی که با این نوع لایسنس عرضه میشوند، میتوان به لینوکس (کرنل) و یوزرلند اصلی آن، GNU، و همچنین MySQL، وردپرس، جوملا، لیبرآفیس(LibreOffice)، کامپایلر GCC، فریمورک Qt و… اشاره نمود.
معدودی از این برنامهها و کدها، همزمان با لایسنس تجاری هم عرضه شدهاند که اگر بخواهید از برنامهای که نوشتهاید، از طریق فروش نرمافزار و بدون انتشار سورس کد کسب درآمد کنید، میبایست نسخهٔ تجاری آنها را خریداری نمایید. فریمورک Qt و بانک اطلاعاتی MySQL از این دسته برنامهها هستند.
مجوزهای کپیلفت ضعیف (Weak Copylefted)
تنها تفاوت انواع ضعیف مجوزهای کپیلفت با انواع قوی آن، در این است که اجازهٔ لینک دینامیک به کتابخانههای کامپایلشده با این لایسنس را میدهد. برای مثال، Glibc، کتابخانهٔ پوزیکس و زبان سی POSIX / Standard C Library در لینوکس، که عملاً دروازهٔ هستهٔ لینوکس برای همهٔ برنامههای کاربردیست، با این مجوز توزیع شده است و اگر به خاطر همین مجوز کپیلفت ضعیف نبود، اساساً امکان عرضهٔ برنامههای تجاری برای لینوکس وجود نداشت.
به عنوان انواع اصلی این مجوز ها، میتوان به LGPL و MPL (موزیلا) اشاره کرد.برنامههای Firefox و VLC و کتابخانهٔ معروف FFmpeg نیز نمونهٔ دیگری از این گروه مجوزهاست. اگرچه برخی اجزای کتابخانه FFmpeg تحت لیسانس GPL منتشر شدهاند. در صورت فعال شدن همان اجزا، کل کتابخانه تحت GPL قرار خواهد گرفت.در سیستم عامل اندروید، برای آن که کوچکترین نگرانی برای برنامهسازان تجاری باقی نماند و از سرایت لایسنس هستهٔ اصلی لینوکس به بقیهٔ نرمافزارها جلوگیری شود، کتابخانهٔ پوزیکس/سی اختصاصی آن به نام Bionic، با لایسنس BSD عرضه شده است.
مجوزهای کرییتیو کامنز (Creative Commons, CC)
نوعی مجوز آزاد و رایگان که برای آثار گرافیکی و نوشتاری رایج است و بر اساس ویژگی (Types) آن میتوانند مجاز یا ممنوع برای استفادهٔ تجاری باشند. اگر برنامهٔ تجاری مینویسید، تنها از کارهای گرافیکی استفاده کنید که استفادهٔ تجاری را آزاد گذاشتهاند.این مجوز میتواند ویژگیهای دیگری نظیر عدم اجازهٔ تغییر در کار اصلی را همراه خود داشته باشد که باید به آنها نیز توجه نمایید.
آیا میتوانم با نرمافزارهای کپیلفت، محتوای تجاری تولید کنم؟
جامعهٔ متنباز، مراقب این موضوع بوده که مجوز برنامههایشان محتوای شما را تحت تأثیر قرار ندهند و در صورت لزوم این موضوع را به صراحت نیز قید کردهاند. بنابراین میتوانید با برنامهای نظیر LibreOffice که تحت GPL توزیع شده، محتوای تجاری تولید کنید، یا برنامهٔ تجاری خود را توسط GCC کامپایل نمایید. اطلاعات سایتهایی که تحت نرمافزارهای کپیلفت هستند تحت تأثیر این لایسنس قرار نخواهند داشت (چرایی آن از نظر حقوقی خود یک مقاله است). در واقع، سایتهای خبررسانی زیادی نظیر CNN از این سرویسها استفاده میکنند.
از نرمافزاری با مجوز GPL (مثل وردپرس) برای راهاندازی سایت خود استفاده کردهام. تکلیف چیست؟
این گونه برنامهها همراه سورس هست و آزادید آنها را تغییر بدهید. خیالتان راحت باشد که محتوای سایت شما تحت این نوع مجوز قرار نخواهد گرفت و تنها کدهاست که شامل لایسنس میشوند. حتی اگر چیزی به سورس آن اضافه کنید یا تغییر دهید، ولی قصد توزیع آن را نداشته باشید، به این کار مجبور نمیشوید. ولی توجه داشته باشید که پلاگینها و تمهای وردپرسی که شما تهیه میکنید، یا تغییراتی که بهاصطلاح هاردکد میکنید، تحت مجوز GPL قرار میگیرند و تنها در صورتی که بخواهید آنها را به فرد دیگری بدهید، حتی یک نفر دیگر، مجبورید سورسشان را به رایگان برای همه منتشر کنید. در واقع این موضوع، یکی از بزرگترین معضلات حقوقیست که تهیهکنندگان پلاگینها و تمهای تجاری وردپرس با آن درگیرند. اگرچه مجوز GPL شما را مجبور نمیکند که تغییراتی که برای استفادهٔ شخصی دادهاید منتشر کنید، اما این مجوز خواهرخواندهای به نام AGPL دارد که در صورتی که کد تغییر یافته را روی سرور اجرا کنید، باید منتشرش نمایید.
آیا میتوانم کدی که تحت مجوز MIT یا BSD منتشر شده را در برنامهٔ تحت GPL استفاده کنم؟
احتمال زیادی وجود دارد که هر قسمت از یک پروژهٔ بزرگ، تحت لایسنس جداگانهای توزیع شده باشد. برای مثال در اندروید، هستهٔ لینوکس تحت GPL، بیونیک (کتابخانهٔ پوزیکس/سی) تحت BSD و بقیهٔ قسمتها عمدتاً بر اساس آپاچی منتشر شدهاند. در سیستم عامل MacOSX، هستهٔ Darwin و برخی اجزا تحت BSD و بقیه به صورت تجاری و سورس بسته هستند.
بنا بر یک قاعدهٔ کلی، شما میتوانید مجوز یک کد را از یک لایسنس بازتر نظیر MIT، به لایسنس محدودتر نظیر GPL تغییر دهید، حتی اگر صاحب آن نباشید. ولی روند معکوس آن تنها برای صاحب اصلی اثر امکانپذیر است[ref]برای نمونه برنامهٔ VLC ابتدا تحت GPL قرار داشت اما در نهایت به دلیل ناسازگاری آن با استور آیتونز توسط شرکت سازنده به لایسنس بازتر MPL/LGPL منتقل شد.
یا نرمافزار ToyBox که تحت لایسنس LPGL بود اما برای اینکه بتواند روی دستگاههای موبایل قرار گیرد تحت BSD قرار گرفت و اندرویید مارشملو از BusyBox به آن سوییچ کرد.به عنوان مثال، با این که مجوز آپاچی همانند MIT آزاد است، ولی از نوع محدودتر قلمداد میشود، پس نمیتوان کدهای تحت آپاچی را با مجوز MIT بازنشر کرد.به طور مختصر ترتیب مجوزهای متنباز، از بازترین به محدودترین، به شکل زیر است:
Public Domain -> MIT/X11 -> BSD -> Apache -> LGPL/MPL -> GPL -> AGPL
آیا برنامهٔ تحت ویندوز، شامل لیسانس تجاری مایکروسافت خواهد شد؟
مایکروسافت به شما این اجازه را میدهد که در چارچوب سیستم عامل ویندوز، به dllهای سیستمعامل لینک دهید و از آنها استفاده نمایید، اما این بدان معنا نیست که شما اجازه داشته باشید dllها را به برنامهٔ خود اضافه نمایید. بنابراین استفاده از dllهای خود ویندوز، در سیستمعاملها و شبیهسازهای غیرمایکروسافتی (نظیر ReactOS یا Wine)، غیرقانونی است و اینها به طور مستقل، پیادهسازی کدهایی را انجام دادهاند که با اینترفیس برنامهنویسی ویندوز (Win32 API) سازگار هستند.
در ایران که قانون کپیرایت وجود ندارد، باز هم ملزم به رعایت و توجه به این موارد هستیم؟
صرف نظر از مسائل اخلاقی که ما را ناگزیر از رعایت این موارد میکنند، باید توجه داشته باشیم که اگر بخواهیم برنامهٔ خود را در اپاستورهایی همچون آیتونز یا گوگل پلی منتشر کنیم، رعایت این موارد ضروری است چرا که در صورت عدم رعایت، برنامههای شما را از فروشگاه حذف میشود. همچنین، گرچه جامعهٔ متنباز اهل شکایت و دادگاه نیستند، ولی از فردای روزی که ایران به سازمان تجارت جهانی بپیوندد، مسائل حقوقی ناشی از آن، همچون شمشیر داموکلس، بر سرکدهای شما خواهند بود.
بسیاری از توسعهدهندگان تازهکار متأسفانه بدون در نظر گرفتن قوانین و شرایط توسعه وارد نشر و تکثیر کدها و محصولاتی میشوند که شاید به صورت ناخودآگان تمامی قوانین حقوقی و مجوزهای مربوطه را نقض میکنند. همچنین اپاستورهای معروف ایرانی تعهدی از توسعهدهنده دربارهٔ عدم استفاده از کدهای بدون مجوز اخذ نمیکنند و رویهای برای شکایت از ناقضین ندارند و علاوه بر آن، خود نیز رأساً اقدام به بازتوزیع برنامههای خارجی، بدون اخذ رضایت از صاحب اثر مینمایند و اگر این رویهٔ خود را مورد بازبینی قرار ندهند، ممکن است در آیندهای نزدیک مجبور به پرداخت خسارتهای هنگفتی شوند.
باید توجه داشت که توزیع رایگان یک برنامه، به این معنا نیست که دریافتکننده حق توزیع مجدد آن را، حتی به صورت رایگان، داشته باشد. نمونهٔ بارز آن یونیکس است که به همراه سورس توزیع شود و برای دانشگاهها رایگان است، اما این قبیل استفاده از آن بدون پرداخت هزینههای مربوطه ممکن نیست. بنابراین حتی بازتوزیع نرمافزارهای رایگان خارجی در استورهای ایرانی نیز احتمالاً بدون عواقب نیست.
منابع و مستندات
ویرایش شده در توسط کامبیز اسدزاده
نظرهای پیشنهاد شده
هیچ دیدگاهی برای نمایش وجود دارد.