در استفاده از یک کد (مثلاً در سایت پرسش و پاسخ stackoverflow) و یا GitHub و غیره، اولین چیزی که به ذهنم میآید آن است که لایسنس آن چیست. آرزو نمیکنم شما هم اینگونه باشید. راستش را بخواهید، این دغدغهها در این ممکلت شما را به پوچی میرساند. در هر حال، در این نوشته کمی در این رابطه صحبت میکنم. توجه کنید که متن زیر صرفاً انباشتی از ترجمه مطالبی است که در اینترنت وجود دارد و مثلاً راهنمای حقوقی نیست.
اول معنای حقتکثیر یا copyright را با هم مرور کنیم. وقتی شعری میسرایید، داستانی مینویسید، طرحی را میکشید، فیلمی را میسازید، نوشتهای را در اینترنت میگذارید، نرمافزای را مینویسید و غیره، باید از آنها محافظت کنید. کپی کردن شعر و نرمافزار غیره با هزینهٔ بسیار کمی امکانپذیر است. البته وقتی میگویم هزینه، آنرا در مقایسه با هزینه سراییدن، نوشتن، طراحی کردن، ساختن و غیره ببینید. اینها، مثل خانه یا ماشین نیست که فیزیکی باشند و کپیکردن آنها موضوعیت نداشته باشد. البته برای داراییهای فیزیکی هم بحث دزدی مطرح است و حفاظت معنا و مفهوم دیگری دارد (که بحث ما نیست). ولی در همینجا، منظور نقشه خانه و طراحی ماشین نیست؛ خود فیزیک آنهاست، و گرنه هزینه کپی کردن آنها نیز ناچیز است و نیاز به حفاظت خاص دارند. همچنین، اینگونه هم نیست که همه داراییهای غیرفیزیکی هم شامل حقتکثیر (از منظر حقوقی) شوند. آنها باید یک فرم محسوس یا tangible داشته باشند. طبیعی هم هست. اگر محسوس نباشند، مثلاً آنها را جایی ننوشته باشید، چگونه میتوانید از وجود آنها صحبت کنید و کموکیف آنها را توضیح دهید؟!
وقتی هزینه استفاده یکنفر دیگر از این داراییها صفر است، چرا استفاده از آنرا محدود کنیم؟ چرا اصلاً دولت باید به من اجازه دهد که از این داراییها حفاظت کنم؟ پاسخ ساده است: اگر امکان حفاظت وجود نداشته باشد، انگیزه افراد برای ساختن اینگونه داراییها از بین میرود. بنابراین، دولت نهتنها نباید اجازه حفاظت را نگیرد، بلکه از آن طرف باید با وضع قوانین و مقررات، امکان حفاظت را فراهم کند.
فرض کنید یکی یک کتاب نوشته است. شما هم یک انتشاراتی هستید و حقتکثیر آنرا از او خریدهاید. همانطور که از معنای واژهٔ حقتکثیر بر میآید، شما و تنها شما هستید که میتوانید آنرا کپی کنید. من نمیتوانم کتاب را بخرم و ببرم زیراکسی و مثلاً برای دانشجوهایم کل یا بخشی از آنرا کپی بگیرم. یعنی من یک جلد از کتاب را خریدهام و نه کلمات داخل آنرا. اگر کتاب من مثلاً گم شد، نمیتوانم ادعا کنم که شما باید مجانی آنرا را برایم بفرستید، چون من «کتاب شما» را خریدهام.
در پرانتز بگویم که آن سالهای دور درگیر همین بحث برای خرید سیدی موسیقی بودم. آنرا میخریدم و در گوشهای میگذاشتم و سپس فایلهایش را از اینترنت دانلود میکردم و از روی فلش پخش میکردم.
البته حقتکثیر یک مجموعه از قانونها هست و مادههای کم و زیادی دارد. یعنی فقط بحث کپی کردن مطرح نیست. اینکه در ایران دقیقاً چه قوانینی هست، فکر کنم این صفحه ویکیپدیا مفید باشد. در هر حال، حقتکثیر کافی نیست و همه نیازها را پوشش نمیدهد. مثلاً این سوالها را در نظر بگیرید. آیا من میتوانم بخشی از کتاب شما را در کتاب خودم استفاده کنم؟ شرایط استفاده از مثلاً یک نمودار از کتاب شما در مقاله خوم چیست؟ شرایط ترجمه کردن کتاب شما چیست؟
شما در سوالهایی نظیر سوالهای فوق میتوانید «کتاب» را بردارید و مثلاً «فیلم» یا «کد» یا غیره قرار دهید.
ممکن است پاسخ برخی از این سوالها در قانون کپیرایت یافت شود، اما برخی هم ممکن است جزئیتر باشد و مثلاً به روش تجاری شرکت یا انتشارات مربوط شود. یعنی یک انتشارات نسبت به انتشارات دیگر نیاز متفاوتی داشته باشد. یکی بهخاطر جذب مشتری اعلام کند که مثلاً عکسهای کتابهای من را میتوانید کپی کنید، دیگری بگوید نه. اینجا هست که بحث جواز یا license یا لایسنس بهعنوان مکمل حقتکثیر مطرح میشود. یعنی قانون کپیرایت یک مجموعه اصول کلی را مشخص میکند، اینها بسته به نیاز موارد دیگری را مطرح میکنند. طبیعی است که نباید با مجموعه اصول کلی تناقض داشته باشند. مثلاً اگر در قانون کپیرایت بگویند که بعد از آنکه ۷۰ سال از فوت پدیدآورنده اثر بگذرد، کپیرایت آن عمومی میشود، در لایسنس نمیشود آنرا تغییر داد.
یک مثال خوب زمانی است که شما مالکیت یک خانه را دارید و آنرا اجاره میدهید. کپیرایت بهمنزله همان مالکیت شماست. اینکه سند خانه به نام شماست، یک مجموعه حقوق و مسئولیتهایی را برای مطرح میکند. قرارداد اجاره بهمنزله لایسنس است. شما در آن جزئیات را استفاده میکنید، مثلاً اینکه هزینه شارژ ماهیانه یا قبض تلفن را باید مستأجر پرداخت کند.
یعنی، لایسنس تقریباً طریقه استفاده را شرح میدهد. فرض کنید شما میخواهید یک کد را از GitHub دانلود کنید و کمی آنرا توسعه دهید. اگر در لایسنس آن بخوانید که «فروش هر کدی که از توسعه این کد ایجاد شده است، ممنوع است»، از این کار منصرف میشود. این هم ممکن است شما را منصرف کند: «اگر این کد یا هر کدی که از توسعه این کد ایجاد میشود را استفاده کردید، حتماً باید به صورت عمومی برچسب شرکت ما را در سایت خود بگذارید».
تقسیمبندی لاینسنها به «آزاد» و «تجاری» دقیق نیست و شما را گمراه میکند. خیلی از لایسنسهای آزاد محدودیتهای زیادی دارند. جدولی در این صفحه پنج گروه را مشخص کرده است.
در پایان این بخش، این را هم بنویسم که بحث اخلاقی با بحث حقوقی متفاوت است. مثالی که به ذهنم میآید همان «ایده» است. شما ممکن است ایدهای را از یک نفر بشنوید و آنرا زودتر بنویسید. فارغ از آنکه این از بیاحتیاطی و اطمینان بیجای رفیقتان بوده است، از لحاظ حقوقی (احتمالاً) حق با شما باشد، اما از لحاظ اخلاقی موضوع متفاوت است.
مقدمه طولانی فوق را نوشتم تا به اینجا برسیم و در مورد لایسنس کدهای R را صحبت کنیم. بخشی از بحثی که میخواهم مطرح کنم (مخصوصاً نتیجهگیری) در این لینک هست. نویسنده در اینجا میگوید از ۴ وکیل نرمافزار مشاوره گرفته است.
نرمافزار R و بسیاری از پکیجهای آن تحت لایسنس GPL (یکی از ورژنهایش) منتشر شدهاند. این لاینس در گروه کپیلفت یا copyleftها قرار دارد، به این معنی که کارهایی که از آن نشئت میگیرد، باید همان لایسنس را داشته باشند. بهعبارت دیگر، مثلِ MIT، BSD و یا Apache در گروه لایسنسهای آسانگیر یا permissive نیست.
بنابراین شما اگر یک کد GPL را توسعه دهید، باید آنرا با لایسنس GPL منتشر کنید. درست است؟ خُب، راستش را بخواهید کمی پیچیدگی دارد و موضوع به این سادگی نیست. اصلاً به این دلیل است که به وکلای نرمافزار نیاز داریم.
آیا شما میتوانید از کد R استفاده کنید و نرمافزار تجاری منتشر کنید؟ گویا جواب مثبت است. یعنی مشکلی نیست، اما اینکه آنچه ایجاد میشود دیگر نامش تجاری است یا نه را باید احتیاط کنید. یعنی شرایط اینکه از R بتوانید نرمافزار تجاری بسازید بسیار سخت است (صفحهای که گفتم را بخوانید). اصلاً ماهیت وجودی این لایسنس همین است که نرمافزار تجاری از آنها تولید نکنید (البته یک گروه نزدیک noncommercial هم داریم). این هست که مثلاً سرمایهگذارها تمایلی ندارند که برای توسعه اینگونه کدها سرمایهگذاری کنند. ممکن است شما بتوانید شرایط توسعه یک نرمافزار تجاری از این لایسنسها را هم فراهم کنید، اما توجیه سرمایهگذارها ساده نیست. توجه کنید که مشکل فقط این نیست که مثلاً اگر شما یک پکیج را توسعه دادید، صرفاً باید همان پکیج را با لایسنس غیرتجاری GPL منتشر کنید. واژهای که شنیدهام «مسریبودن» است، یعنی اینکه این کدها ممکن است همه کدهای شما (تحت یک شرایطی) GPL کند.
حال، آیا این یعنی کدهای GPL بدرد نمیخورند؟ بههیچوجه اینگونه نیست. بحث من آن است که لایسنس را باید با هدفتان همسو کنید.
موضوع دیگری که باید به آن توجه کرد، بحث «تکثیر یا propagate» است. شما میتوانید کدهای GPL را تغییر دهید و هر بلای دیگری که میخواهید بر سرش بیاورید و به کسی هم ندهید، اما اگر خواستید آنرا «پخش» کنید، باید آنرا تحت لایسنس GPL پخش کنید. این را از GPLv3 بخوانیم:
To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
(قسمتهای تیره را خودم ادیت کردم). این یعنی که بحث فوق زمانی مطرح میشود که استراتژی شما تکثیر نرمافزار باشد. این تکثیر هم شامل کپی کردن، پخش کردن، و عمومیکردن میشود. اگر شما یک شرکت هستید و کد GPL را در یک کامپیوتر تغییر دادید، اگر خواستید آنرا به کامپیوتر همکارتان منتقل کنید، باید آنرا GPL کنید. البته حالا که بحث شرکت مطرح شد، این را هم از FSQ بخوانید:
The GPL does not require you to release your modified version, or any part of it. You are free to make modifications and use them privately, without ever releasing them. This applies to organizations (including companies), too; an organization can make a modified version and use it internally without ever releasing it outside the organization.
یعنی ممکن است این کد هیچوقت از شرکت شما خارج نشود. ولی نکته واژه organization این است که شما به افراد اطمینان دارید. وگرنه هیچ فرقی بین یک همکار و غیره وجود ندارد. یعنی اهمیتی ندارد که شما از لحاظ حقوقی قرارداد کار داشته باشید یا نه. اگر از کامپیوتر خودتان به دیگری منتقل شد، باید GPL باشد. بحث همکاری تحت شبکه برای توسعه یک نرمافزار را من نمیدانم، ولی احتمال قوی تحت همان واژه توزیع قرار میگیرد.
خلاصه آنکه این آپشن GPL (یعنی این خصوصیتوسعه دادن یک کد) شاید برای یک کد کوچک و کاملاً خصوصی مطرح باشد، ولی برای یک کار جدی عملاً امتیاز خاصی نیست. بنابراین بحث قبلی و عدم تمایل سرمایهگذارها برای سرمایهگذاری در این موارد مطرح است. این را هم توجه کنید که اگر شما با GPL کدتان را به همکارتان فرستاید، او میتواند آنرا توزیع کند (مگر در قرارداد کار آمده باشد). همچنین این را هم توجه کنید که شما در کنار کدهای GPL ممکن است مجبور شوید بقیه کدها را GPL توزیع کنید.
خلاصه کلام اینکه GPL برای یک هدفی نوشته شده است و بهتر است به جنگ با آن نروید. این را از FAQ بخوانیم:
Using the GNU GPL will require that all the released improved versions be free software. This means you can avoid the risk of having to compete with a proprietary modified version of your own work. However, in some special situations it can be better to use a more permissive license.
پسانکته اول اینکه مدتی قبل به این فکر کردم که LDT به بلوغ لازم رسیده است و باید برایش فکری کنم. مستقل از آن دغدغه، ماجرا بهگونهای رقم خورد که امروز آنرا برای دکتر محمدی ارائه کردم. بحث بر سر لایسنس و اینها شد و تصمیم گرفتم این متن را بنویسم.
پسانکته دوم اینکه، الان که متن را برای تصحیح مرور کردم، چند قدم دیگر به پوچی نزدیکتر شدم.