
نرمافزار آزاد چیه؟
نرمافزار آزاد به نرمافزاری گفته میشود که آزادی و جامعه کاربران را محترم میشمارد. به طور خلاصه، کاربران آزادند که نرمافزار را اجرا کنند، کپی کنند، توزیع کنند، مطالعه کنند، تغییر دهند و بهبود بخشند. «آزاد» در اینجا به معنای آزادی است، نه قیمت. باید به «آزاد» مانند «آزادی بیان» فکر کنید، نه «آبجو رایگان». گاهی آن را «LIbre Software» مینامیم، از کلمه فرانسوی یا اسپانیایی «آزاد» به معنای آزادی، تا نشان دهیم منظورمان رایگان بودن نیست.
- تعریف نرمافزار آزاد
- روشن کردن مرز بین آزاد و غیرآزاد
- آزادی اجرای برنامه به دلخواه شما
- آزادی مطالعه کد منبع و ایجاد تغییرات
- آزادی توزیع مجدد در صورت تمایل: الزامات اساسی
- کپیلفت
- قوانین مربوط به جزئیات بستهبندی و توزیع
- مقررات صادرات
- ملاحظات قانونی
- مجوزهای مبتنی بر قرارداد
- تعریف نرمافزار آزاد در عمل
ممکن است برای دریافت کپیهای یک برنامه آزاد پول پرداخته باشید یا آن را بدون هزینه گرفته باشید. اما در هر صورت، همیشه آزادید که نرمافزار را کپی کنید، تغییر دهید و حتی کپیها را بفروشید.
ما برای این آزادیها مبارزه میکنیم چون همه شایسته آنها هستند. با این آزادیها، کاربران (چه بهصورت فردی یا جمعی) کنترل برنامه و عملکرد آن را دارند. وقتی کاربران برنامه را کنترل نمیکنند، آن را «غیرآزاد» یا «اختصاصی» مینامیم. برنامه غیرآزاد کاربران را کنترل میکند و توسعهدهنده برنامه را، که این برنامه را ابزاری برای قدرت ناعادلانه میکند.
متنباز چیز متفاوتی است با فلسفه و ارزشهای متفاوت. تعریف عملی آن هم متفاوت است، اما تقریباً همه برنامههای متنباز در واقع آزاد هستند. تفاوت را در مقاله «چرا متنباز هدف نرمافزار آزاد را نادیده میگیرد» توضیح دادهایم.
تعریف نرمافزار آزاد
تعریف نرمافزار آزاد معیارهایی را ارائه میدهد که مشخص میکند یک برنامه نرمافزار آزاد است یا نه. گاهی این تعریف را برای شفافسازی یا رفع مسائل ظریف بازنگری میکنیم.
چهار آزادی اساسی
یک برنامه نرمافزار آزاد است اگر کاربران آن این چهار آزادی اساسی را داشته باشند
- آزادی اجرای برنامه به هر شکلی که میخواهید، برای هر هدفی (آزادی ۰).
- آزادی مطالعه نحوه کار برنامه و تغییر آن برای انجام محاسبات مورد نظر شما (آزادی ۱). دسترسی به کد منبع پیشنیاز این آزادی است.
- آزادی توزیع کپیها برای کمک به دیگران (آزادی ۲).
- آزادی توزیع کپیهای نسخههای تغییریافته به دیگران (آزادی ۳). با این کار، کل جامعه میتواند از تغییرات شما بهرهمند شود. دسترسی به کد منبع پیشنیاز این آزادی است.
یک برنامه اگر این آزادیها را بهطور کامل فراهم کند، آزاد است. در غیر این صورت، غیرآزاد است. طرحهای توزیع غیرآزاد از نظر میزان محدودیت متفاوتاند، اما همه به یک اندازه غیراخلاقیاند.
این آزادیها باید برای هر کدی که قصد استفاده یا توزیع آن را داریم اعمال شوند. مثلاً، اگر برنامه A برای برخی موارد برنامه B را اجرا کند و ما بخواهیم A را توزیع کنیم، باید بررسی کنیم که هر دو برنامه A و B آزاد هستند. اما اگر A را تغییر دهیم تا از B استفاده نکند، فقط A باید آزاد باشد.
نرمافزار آزاد میتواند تجاری باشد
نرمافزار آزاد به معنای غیرتجاری نیست. برعکس، یک برنامه آزاد باید برای استفاده تجاری، توسعه تجاری و توزیع تجاری در دسترس باشد. این سیاست برای دستیابی به اهداف نرمافزار آزاد حیاتی است.
ما میخواهیم همه، از جمله کسبوکارها، از سیستم گنو استفاده کنند. این نیازمند اجازه استفاده تجاری است. امیدواریم برنامههای آزاد جایگزین برنامههای اختصاصی شوند، اما اگر استفاده تجاری ممنوع باشد، این ممکن نیست. محصولات تجاری که شامل نرمافزار هستند باید بتوانند سیستم گنو را شامل شوند. توسعه تجاری نرمافزار آزاد دیگر غیرمعمول نیست و پشتیبانی حرفهای پولی برای نرمافزار آزاد نیاز مهمی را برآورده میکند.
محدود کردن استفاده تجاری، توسعه تجاری یا توزیع تجاری، جامعه نرمافزار آزاد را تضعیف میکند و مانع موفقیت آن میشود. برنامهای با چنین محدودیتهایی نرمافزار آزاد نیست.
بنابراین، حذف استفاده تجاری، توسعه تجاری یا توزیع تجاری، جامعه نرمافزار آزاد را با مشکل مواجه کرده و مسیر موفقیت آن را مسدود میکند. باید نتیجه بگیریم که برنامهای که دارای چنین محدودیتهایی باشد، واجد شرایط نرمافزار آزاد نیست.
یک برنامهی آزاد باید چهار آزادی را به هر کاربری که قصد دارد یک نسخه از نرمافزار را دریافت کند، ارائه دهد، البته کاربری که تاکنون شرایط مجوز آزاد مربوط به نرمافزار را در هر توزیع قبلی آن رعایت کرده باشد. محدود کردن برخی از آزادیها برای برخی از کاربران، یا الزام کاربران به پرداخت هزینه، چه به صورت نقدی و چه به صورت غیرنقدی، برای استفاده از آنها، به منزلهی عدم اعطای آزادیهای مورد نظر است و بنابراین برنامه را غیرآزاد میکند.
روشن کردن مرز بین آزاد و غیرآزاد
در ادامهی این مقاله، به طور دقیقتر توضیح میدهیم که آزادیهای مختلف، در مورد مسائل مختلف، تا چه حد باید گسترش یابند تا یک برنامه آزاد باشد.
آزادی اجرای برنامه به دلخواه شما
آزادی اجرای برنامه به معنای آزادی هر شخص یا سازمانی برای استفاده از آن بر روی هر نوع سیستم کامپیوتری، برای هر نوع کار و هدف کلی، بدون نیاز به اطلاعرسانی در مورد آن به توسعهدهنده یا هر نهاد خاص دیگری است. در این آزادی، هدف کاربر مهم است، نه هدف توسعهدهنده ؛ شما به عنوان یک کاربر آزاد هستید که برنامه را برای اهداف خود اجرا کنید و اگر آن را در اختیار دیگران قرار دهید، آنها نیز آزاد هستند که آن را برای اهداف خود اجرا کنند، اما شما حق ندارید اهداف خود را به آنها تحمیل کنید.
آزادی اجرای برنامه به دلخواه شما به این معنی است که شما از اجرای آن منع یا متوقف نشدهاید. این هیچ ارتباطی با عملکرد برنامه، اینکه آیا از نظر فنی قادر به کار در هر محیط معینی است یا خیر، یا اینکه آیا برای هر فعالیت محاسباتی خاصی مفید است یا خیر، ندارد.
برای مثال، اگر کد به طور دلخواه ورودیهای معنادار خاصی را رد کند - یا حتی بدون قید و شرط شکست بخورد - ممکن است برنامه را کمتر مفید، شاید حتی کاملاً بیفایده کند، اما آزادی کاربران برای اجرای برنامه را سلب نمیکند، بنابراین با آزادی ۰ در تضاد نیست. اگر برنامه آزاد باشد، کاربران میتوانند بر فقدان مفید بودن غلبه کنند، زیرا آزادیهای ۱ و ۳ به کاربران و جوامع اجازه میدهند نسخههای اصلاحشده را بدون کد مزاحم دلخواه ایجاد و توزیع کنند.
«هر طور که مایل باشید» به صورت اختیاری شامل «اصلاً» هم میشود، البته اگر چنین چیزی مد نظر شما باشد. بنابراین نیازی به «آزادی عدم اجرای یک برنامه» جداگانه نیست.
آزادی مطالعه کد منبع و ایجاد تغییرات
برای اینکه آزادیهای ۱ و ۳ (آزادی ایجاد تغییرات و آزادی انتشار نسخههای تغییر یافته) معنادار باشند، باید به کد منبع برنامه دسترسی داشته باشید. بنابراین، دسترسی به کد منبع شرط لازم برای نرمافزار آزاد است. «کد منبع» مبهم، کد منبع واقعی نیست و به عنوان کد منبع محسوب نمیشود.
کد منبع به عنوان شکل ترجیحی برنامه برای ایجاد تغییرات تعریف میشود. بنابراین، هر شکلی که یک توسعهدهنده برای توسعه برنامه تغییر میدهد، کد منبع نسخه آن توسعهدهنده محسوب میشود.
آزادی ۱ شامل آزادی استفاده از نسخه تغییر یافته شما به جای نسخه اصلی است. اگر برنامه در محصولی ارائه شود که برای اجرای نسخههای اصلاح شده شخص دیگری طراحی شده باشد اما از اجرای نسخه شما امتناع ورزد - عملی که به عنوان "tivoization" یا "lockdown" یا (در اصطلاحات نادرست متخصصان آن) به عنوان "secure boot" شناخته میشود - آزادی ۱ به جای یک واقعیت عملی، به یک تظاهر توخالی تبدیل میشود. این فایلهای باینری حتی اگر کد منبعی که از آن کامپایل شدهاند رایگان باشد، نرمافزار آزاد نیستند.
یک راه مهم برای تغییر یک برنامه، ادغام زیرروالها و ماژولهای رایگان موجود است. اگر مجوز برنامه میگوید که شما نمیتوانید یک ماژول موجود دارای مجوز مناسب را ادغام کنید - برای مثال، اگر از شما بخواهد که صاحب حق چاپ هر کدی باشید که اضافه میکنید - در این صورت مجوز بیش از حد محدودکننده است تا واجد شرایط رایگان بودن باشد.
اینکه آیا یک تغییر، بهبود محسوب میشود یا خیر، موضوعی سلیقهای است. اگر حق شما برای تغییر یک برنامه، در اصل، محدود به تغییراتی باشد که شخص دیگری آن را بهبود میداند، آن برنامه آزاد نیست.
یک مورد خاص از آزادی ۱ این است که کد برنامه را حذف کنید تا پس از انجام هیچ کاری، نتیجه را برگرداند، یا کاری کنید که برنامه دیگری را فراخوانی کند. بنابراین، آزادی ۱ شامل «آزادی حذف برنامه» میشود.
آزادی توزیع مجدد در صورت تمایل: الزامات اساسی
آزادی توزیع (آزادیهای ۲ و ۳) به این معنی است که شما آزاد هستید نسخههایی را، چه با تغییر و چه بدون تغییر، چه به صورت رایگان و چه با دریافت هزینه برای توزیع، به هر کسی در هر کجا توزیع کنید. آزادی در انجام این کارها (از جمله موارد دیگر) به این معنی است که شما مجبور نیستید برای انجام این کار اجازه بگیرید یا هزینهای بپردازید.
شما همچنین باید آزادی ایجاد تغییرات و استفاده خصوصی از آنها در کار یا بازی خود را داشته باشید، بدون اینکه حتی به وجود آنها اشاره کنید. اگر تغییرات خود را منتشر کردید، نباید ملزم باشید که به شخص خاصی یا به هر طریقی اطلاع دهید.
آزادی ۳ شامل آزادی انتشار نسخههای اصلاحشده شما به عنوان نرمافزار آزاد است. یک مجوز آزاد همچنین ممکن است روشهای دیگری برای انتشار آنها را مجاز بداند؛ به عبارت دیگر، لازم نیست مجوز کپیلفت باشد . با این حال، مجوزی که نسخههای اصلاحشده را غیرآزاد میداند، واجد شرایط مجوز آزاد نیست.
آزادی توزیع مجدد نسخهها باید شامل اشکال دودویی یا اجرایی برنامه و همچنین کد منبع، برای نسخههای اصلاحشده و اصلاحنشده باشد. (توزیع برنامهها به شکل قابل اجرا برای سیستمعاملهای آزاد با قابلیت نصب آسان ضروری است.) اگر راهی برای تولید شکل دودویی یا اجرایی برای یک برنامه خاص وجود ندارد (زیرا برخی از زبانها از این ویژگی پشتیبانی نمیکنند)، اشکالی ندارد، اما در صورت یافتن یا توسعه راهی برای ایجاد چنین اشکالی، باید آزادی توزیع مجدد آنها را داشته باشید.
کپیلفت
انواع خاصی از قوانین در مورد نحوه توزیع نرمافزار آزاد، زمانی که با آزادیهای اصلی در تضاد نباشند، قابل قبول هستند. به عنوان مثال، کپیلفت (به بیان بسیار ساده) قانونی است که میگوید هنگام توزیع مجدد برنامه، نمیتوانید محدودیتهایی برای سلب آزادیهای اصلی دیگران اضافه کنید. این قانون با آزادیهای اصلی در تضاد نیست؛ بلکه از آنها محافظت میکند.
در پروژه گنو، ما از کپیلفت برای محافظت قانونی از چهار آزادی برای همه استفاده میکنیم. ما معتقدیم دلایل مهمی وجود دارد که چرا بهتر است از کپیلفت استفاده شود . با این حال، نرمافزارهای آزاد بدون کپیلفت نیز اخلاقی هستند. برای توضیح چگونگی ارتباط «نرمافزار آزاد»، «نرمافزار کپیلفت» و سایر دستهبندیهای نرمافزار، به دستهبندیهای نرمافزار آزاد مراجعه کنید.
قوانین مربوط به جزئیات بستهبندی و توزیع
قوانین مربوط به نحوه بستهبندی یک نسخه اصلاحشده، در صورتی که آزادی شما برای انتشار نسخههای اصلاحشده یا آزادی شما برای ایجاد و استفاده خصوصی از نسخههای اصلاحشده را بهطور اساسی محدود نکنند، قابل قبول هستند. بنابراین، برای مجوز قابل قبول است که شما را ملزم به تغییر نام نسخه اصلاحشده، حذف لوگو یا شناسایی تغییرات خود به عنوان تغییرات خود کند. تا زمانی که این الزامات آنقدر سنگین نباشند که عملاً مانع انتشار تغییرات شما شوند، قابل قبول هستند. شما در حال حاضر تغییرات دیگری را در برنامه ایجاد میکنید، بنابراین برای ایجاد چند تغییر دیگر مشکلی نخواهید داشت.
قوانینی که میگویند «اگر نسخه خود را به این روش در دسترس قرار میدهید، باید آن را به آن روش نیز در دسترس قرار دهید» نیز میتوانند با همین شرط قابل قبول باشند. نمونهای از چنین قانون قابل قبولی این است که اگر نسخهای اصلاحشده را توزیع کردهاید و توسعهدهنده قبلی درخواست نسخهای از آن را کرده است، باید آن را ارسال کنید. (توجه داشته باشید که چنین قانونی همچنان به شما این حق انتخاب را میدهد که آیا اصلاً نسخه خود را توزیع کنید یا خیر.) قوانینی که مستلزم انتشار کد منبع برای کاربران برای نسخههایی هستند که برای استفاده عمومی قرار میدهید نیز قابل قبول هستند.
یک مشکل خاص زمانی پیش میآید که یک مجوز، تغییر نامی را که برنامه توسط آن از برنامههای دیگر فراخوانی میشود، الزامی کند. این امر عملاً مانع از انتشار نسخه تغییر یافته شما میشود تا بتواند هنگام فراخوانی توسط برنامههای دیگر، جایگزین نسخه اصلی شود. این نوع الزام تنها در صورتی قابل قبول است که امکان نامگذاری مستعار مناسبی وجود داشته باشد که به شما امکان دهد نام برنامه اصلی را به عنوان نام مستعار برای نسخه اصلاح شده مشخص کنید.
مقررات صادرات
گاهی اوقات مقررات کنترل صادرات دولتی و تحریمهای تجاری میتوانند آزادی شما برای توزیع بینالمللی نسخههایی از برنامهها را محدود کنند.(مشابه همین مورد در ایران کاملا آشکاره) توسعهدهندگان نرمافزار قدرت حذف یا لغو این محدودیتها را ندارند، اما کاری که میتوانند و باید انجام دهند این است که از اعمال آنها به عنوان شرایط استفاده از برنامه خودداری کنند. به این ترتیب، این محدودیتها بر فعالیتها و افراد خارج از حوزه قضایی این دولتها تأثیری نخواهد گذاشت. بنابراین، مجوزهای نرمافزار آزاد نباید به عنوان شرط اعمال هیچ یک از آزادیهای اساسی، اطاعت از هیچ یک از مقررات صادراتی غیرمهم را الزامی کنند.
صرفاً اشاره به وجود مقررات صادرات، بدون اینکه آنها را به عنوان شرط خود مجوز قرار دهد، قابل قبول است زیرا کاربران را محدود نمیکند. اگر یک مقررات صادرات در واقع برای نرمافزار آزاد بیاهمیت باشد، الزام آن به عنوان یک شرط، یک مشکل واقعی نیست؛ با این حال، این یک مشکل بالقوه است، زیرا تغییر بعدی در قانون صادرات میتواند این الزام را غیر بیاهمیت کند و در نتیجه نرمافزار را غیرآزاد کند.
ملاحظات قانونی
برای اینکه این آزادیها واقعی باشند، باید دائمی و غیرقابل فسخ باشند، مادامی که شما هیچ کار اشتباهی انجام ندهید؛ اگر توسعهدهنده نرمافزار قدرت لغو مجوز یا اضافه کردن محدودیتهای عطف به ماسبق به شرایط آن را داشته باشد، بدون اینکه شما کار اشتباهی انجام داده باشید که منجر به این امر شود، آن نرمافزار آزاد نیست.
یک مجوز رایگان ممکن است نیازی به رعایت مجوز یک برنامه غیرآزاد نداشته باشد. بنابراین، برای مثال، اگر مجوزی شما را ملزم به رعایت مجوزهای «تمام برنامههایی که استفاده میکنید» کند، در مورد کاربری که برنامههای غیرآزاد را اجرا میکند، این امر مستلزم رعایت مجوزهای آن برنامههای غیرآزاد خواهد بود؛ این امر مجوز را غیرآزاد میکند.
برای یک مجوز رایگان قابل قبول است که مشخص کند قانون کدام حوزه قضایی اعمال میشود، یا کجا باید اقامه دعوی شود، یا هر دو.
مجوزهای مبتنی بر قرارداد
بیشتر مجوزهای نرمافزار آزاد مبتنی بر حق نشر هستند و محدودیتهایی در مورد نوع الزاماتی که میتوانند از طریق حق نشر اعمال شوند، وجود دارد. اگر یک مجوز مبتنی بر حق نشر به آزادی به روشهایی که در بالا توضیح داده شد احترام بگذارد، بعید است که با مشکل دیگری که هرگز پیشبینی نکردهایم مواجه شود (هرچند این اتفاق گاهی اوقات میافتد). با این حال، برخی از مجوزهای نرمافزار آزاد مبتنی بر قراردادها هستند و قراردادها میتوانند طیف بسیار وسیعتری از محدودیتهای ممکن را اعمال کنند. این بدان معناست که راههای ممکن زیادی وجود دارد که چنین مجوزی میتواند به طور غیرقابل قبولی محدودکننده و غیرآزاد باشد.
ما نمیتوانیم تمام راههایی را که ممکن است اتفاق بیفتد فهرست کنیم. اگر یک مجوز مبتنی بر قرارداد، کاربر را به شیوهای غیرمعمول که مجوزهای مبتنی بر حق نشر نمیتوانند، محدود کند و در اینجا به عنوان قانونی ذکر نشده باشد، باید در مورد آن فکر کنیم و احتمالاً نتیجه میگیریم که غیرآزاد است.
تعریف نرمافزار آزاد در عمل
چگونه این معیارها را تفسیر میکنیم
توجه داشته باشید که معیارهایی مانند آنچه در این تعریف نرمافزار آزاد ذکر شده است، نیاز به تفکر دقیق برای تفسیر خود دارند. برای تصمیمگیری در مورد اینکه آیا یک مجوز نرمافزار خاص واجد شرایط مجوز نرمافزار آزاد است یا خیر، ما آن را بر اساس این معیارها قضاوت میکنیم تا مشخص کنیم که آیا با روح آنها و همچنین کلمات دقیق مطابقت دارد یا خیر. اگر مجوزی شامل محدودیتهای غیرمنطقی باشد، ما آن را رد میکنیم، حتی اگر مسئله را در این معیارها پیشبینی نکرده باشیم. گاهی اوقات یک الزام مجوز، مسئلهای را مطرح میکند که نیاز به تفکر گسترده، از جمله بحث با یک وکیل، قبل از اینکه بتوانیم تصمیم بگیریم که آیا این الزام قابل قبول است یا خیر، دارد. وقتی در مورد یک مسئله جدید به نتیجه میرسیم، اغلب این معیارها را بهروزرسانی میکنیم تا راحتتر ببینیم که چرا مجوزهای خاص واجد شرایط هستند یا نیستند.
دریافت کمک در مورد مجوزهای رایگان
اگر علاقهمند به دانستن این هستید که آیا یک مجوز خاص به عنوان مجوز نرمافزار آزاد واجد شرایط است یا خیر، به فهرست مجوزهای ما مراجعه کنید. اگر مجوزی که مد نظر شماست در آنجا ذکر نشده است، میتوانید با ارسال ایمیل به آدرس
اگر در حال بررسی نوشتن یک مجوز جدید هستید، لطفاً ابتدا با بنیاد نرمافزار آزاد از طریق نوشتن ایمیل تماس بگیرید. افزایش مجوزهای نرمافزار آزاد مختلف به معنای افزایش کار کاربران در درک مجوزها است؛ ما ممکن است بتوانیم به شما در یافتن یک مجوز نرمافزار آزاد موجود که نیازهای شما را برآورده کند، کمک کنیم.
اگر این امکان وجود ندارد، اگر واقعاً به یک مجوز جدید نیاز دارید، با کمک ما میتوانید مطمئن شوید که مجوز واقعاً یک مجوز نرمافزار آزاد است و از مشکلات عملی مختلف جلوگیری کنید.
هنگام صحبت در مورد نرمافزار آزاد از کلمات مناسب استفاده کنید
هنگام صحبت در مورد نرمافزار آزاد، بهتر است از استفاده از اصطلاحاتی مانند «هدیه رایگان» یا «به صورت رایگان» خودداری کنید، زیرا این اصطلاحات دلالت بر این دارند که مسئله مربوط به قیمت است، نه آزادی. برخی از اصطلاحات رایج مانند «دزدی ادبی» شامل نظراتی هستند که امیدواریم آنها را تأیید نکنید. برای بحث در مورد این اصطلاحات، به بخش «کلمات و عبارات گیجکنندهای که ارزش اجتناب دارند» مراجعه کنید . ما همچنین فهرستی از ترجمههای صحیح «نرمافزار آزاد» به زبانهای مختلف داریم.
گروه دیگری از اصطلاح «متنباز» به معنای چیزی نزدیک (اما نه دقیقاً یکسان) به «نرمافزار آزاد» استفاده میکنند. ما اصطلاح «نرمافزار آزاد» را ترجیح میدهیم، زیرا وقتی میشنوید که به جای قیمت، به آزادی اشاره دارد، آزادی را به ذهن متبادر میکند. کلمه «باز» هرگز به آزادی اشاره نمیکند.
پاورقیها
دلیل اینکه آنها با شمارههای ۰، ۱، ۲ و ۳ شمارهگذاری شدهاند، تاریخی است. حدود سال ۱۹۹۰ سه آزادی وجود داشت که با شمارههای ۱، ۲ و ۳ شمارهگذاری شده بودند. سپس متوجه شدیم که آزادی اجرای برنامه باید به صراحت ذکر شود. این آزادی به وضوح اساسیتر از سه آزادی دیگر بود، بنابراین باید به درستی قبل از آنها قرار میگرفت. به جای اینکه شماره بقیه را تغییر دهیم، آن را آزادی ۰ قرار دادیم.
ثبت نظر و دیدگاه