زکات علم

زَکاةُ العِلمِ أن تُعَلِّمَهُ عِبادَ اللّه‏ِ امام باقر (ع)
زکات علم

مطالبی در زمینه کامپیوتر و علاقه مندی های شخصی من مطالب این وبلاگ غالبا مطالبی ست که در جای جای اینترنت کتاب یا دانشته های شخصی خودم می باشد که به عنوان مرجعی برای رجوع دوباره در اینجا جمع آوری شده اند .
ehsunitd.ir personal website

پیوندها

open source یا دنیای نرم افزار آزاد

شنبه, ۲ شهریور ۱۳۹۲، ۰۱:۰۲ ق.ظ

"وقتی بچه بودم معلممان به ما می گفت: حتی اگر یک شیرینی دارید آن را با دوستتان قسمت کنید. این باعث میشود جامعه بهتر شود و شما انسان های بهتری باشید. ولی امروز معلمان به بچه ها می گویند: هر چیزی دارید آنرا فقط برای خود نگه دارید و به هیچکس ندهید چون طبق مجوزش فقط مال شماست. این کار را بکنید تا همه شما مجبور شوید یک شیرینی تنها برای خودتان بخرید تا مصرف و متعاقبا تولید بالاتر رود و اقتصاد پیشرفت کند و جامعه به سعادت برسد." ... ریچارد استالمن

   

   

تعریف نرم افزار آزاد از دیدگاه بنیاد نرم افزار های آزاد

نرم افزار آزاد طبق تعریف نرم افزاری است که چهار آزادی اساسی را به کاربران می دهد:

۱. آزادی اجرای برنامه برای هر منظوری (آزادی ۰)
۲. آزادی بررسی طرز عملکرد برنامه و تغییر آن بطوریکه کار دلخواه فرد را انجام دهد (آزادی ۱)
۳. آزادی توزیع مجدد نسخه اصلی تا دیگران نیز بتوانند از آن استفاده کنند (آزادی ۲)
۴. آزادی توزیع مجدد نسخه تغییر داده شده نسخه اصلی (آزادی ۳)

لذا به نرم افزاری نرم افزار آزاد اطلاق می شود که تمامی این آزادی ها را به شما می دهد. بنابراین شما باید آزاد باشید تغییر داده شده یا تغییر داده نشده آن را چه بصورت رایگان و یا چه در قبال دریافت هزینه به هر شخصی در هر جایی بدهید. داشتن چنین آزادی هایی باید بطوری باشد که شما هیچ نیازی به دریافت اجازه از یا هماهنگی با شخصی حقیقی یا حقوقی نداشته باشید.

چنین آزادی مستوجب آن است که شما آزاد باشید نرم افزار اصلی را حتی بدون اینکه به کسی وجود آنرا اطلاع دهید یا با شخصی حقیقی یا حقوقی هماهنگ کنید تغییر داده و آنها را بصورت خصوصی مورد استفاده قرار دهید. همچنین اگر حاصل کار خود را منتشر کنید نباید مجبور باشد تا به هیچ شخص خاصی به هیچ گونه ای اطلاع دهید.

برای آنکه آزادی شماره ۱ و ۳ دارای معنی و مفهوم باشد حتما شما باید منبع اصلی نرم افزار (سورس کد منبع) آنرا داشته باشید. دقت کنید که سورس کد پیچیده شده (به نحوی که قابل فهم و درک نباشد) سورس کد آزاد به حساب نمی آید. نکته قابل توجه آن است که آزادی توزیع مجدد نسخه اصلی یا نسخه تغییر داده شده علاوه بر فرم اجرایی شامل سورس کد اصلی نرم افزار نیز می شود.

دقت نمایید که آزادی شماره ۱ شامل آزادی استفاده از نسخه تغییر داده شده خودتان بجای نسخه اصلی می باشد به نحوی که فرد قادر باشد تا نسخه اصلی را در همان سخت افزار اصلی با نسخه تغییر یافته خودش جایگزین کند. دقت نمایید اگر نرم افزاری خاص مخصوص یک سخت افزار خاص طراحی شده باشد و به همراه سورس کد اصلی آن در اختیار شما قرار گیرد و همچنین به لحاظ حقوقی و قانونی هیچ منعی برای تغییر مجدد و یا انتشار مجدد آنها بر شما اعمال نشده باشد ولی سخت افزار مذکور شامل قفلی سخت افزاری باشد که از اجرای فایل های اجرایی حاصل از کامپایل نمودن سورس کد تغییر یافته خودداری نماید (فرایند Secure-booting یا Tivoization) آن نرم افزار چون برای آن سخت افزار خاص طراحی شده بود و اکنون بر روی آن سخت افزار خاص قابل اجرا نیست به هیچ وجه آزاد نیست.

شایان ذکر است که یکی از مصادیق تغییر سورس کد اصلی اضافه کردن ماژول ها و سورس کد هایی که خود مالک آن نیستید. پس اگر مجوز نرم افزاری تغییر سورس کد اصلی آنرا مشروط به آن کند که خود باید مالک قانونی تمام سورس کد هایی باشید که به سورس کد برنامه اصلی اضافه می کند آن نرم افزار آزاد نیست.

باید دقت شود که آزادی شماره ۳ شامل آن می شود که شما بتوانید در صورت صلاحدید به لحاظ قانونی حاصل کار خود را که از اعمال تغییرات بر سورس کد اصلی ایجاد می شود را بصورت نرم افزار آزاد منتشر کنید. پس بسادگی قابل استنباط است که مجوز هایی که انتشار مجدد حاصل تغییرات سورس کد اصلی را مشروط به آزاد نبودن توزیع جدید نمایند آزاد نیستند. پس حاصل اعمال تغییرات در سورس کد اصلی یک نرم افزار آزاد باید قابلیت آنرا داشته باشد که در صورت صلاحدید منتشر کننده بصورت نرم افزار آزاد منتشر شود ولی برای نیازی نیست که مجوز نرم افزار آزاد انتشار مجدد حاصل تغییرات در کد اصلی را مشروط بر آزاد بودن اجباری توزیع جدید نماید. (مثال: سیستم عامل های خانواده BSD از جمله FreeBSD)

باید دقت نمود که مجوز یک نرم افزار آزادی های ۰ الی ۳ را فراهم کرده باشد ولی شروطی (نه غیر قابل حصول) برای استفاده یا انتشار مجدد سورس کد نرم افزار قرار داده باشد که ناقض آزادی های شماره ۰ الی ۳ نیستند در اینصورت نرم افزار همچنان آزاد انگاشته می شود. بعنوان مثال مجوز 4.4BSD UNIX License آزادی های ۰ الی ۳ را مجاز می داند ولی شرط میکند که نرم افزار حاصله از اعمال تغییرات در سورس کد 4.4BSD UNIX باید بوضوح بیان کند که بر پایه 4.4BSD UNIX بدست آمده. پس مجوز Original BSD License با وجود اعمال محدودیت همچنان آزاد انگاشته می شود.

یا بعنوان مثالی دیگر مجوز GNU General Public License آزادی های ۰ الی ۳ را فراهم می کند ولی آنها را مشروط به آن می داند که شخص تمامی تغییرات اعمالی در کد اصلی را حتما بصورت نرم افزاری مجددا آزاد منتشر کند. با وجود این محدودیت با توجه به آنکه مجوز GPL آزادی های ۰ الی ۳ را فراهم نموده مجوزی آزاد است. به چنین مجوز هایی که آزادی های ۰ الی ۳ را بشرط آنکه محصول تغییرات در سورس کد اصلی نیز همچنان آزاد باشند فراهم می نماید مجوز های Copyleft می گویند. با وجود آنکه برای آزاد بودن یک نرم افزار شرط Copyleft اجباری نیست ولی توسط بنیاد نرم افزار های آزاد و ریچارد استالمن بشدت توصیه می شود.

برای آنکه نرم افزاری آزاد باشد آزادی های ۰ الی ۳ باید توسط مجوز آن بصورت لایزال تضمین شوند. این مساله به معنی آن است که اگر مجوز نرم افزاری با وجود فراهم کردن آزادی های ۰ الی ۳ آنها را محدود به دوره زمانی خاصی نماید یا این حق را برای منتشر کننده آن قایل باشد که بعد از گذشت مدتی آزادی های مذکور را منقضی اعلام نماید آن مجوز و نرم افزار آزاد نیست.

نرم افزار آزاد به هیچ وجه به معنی نرم افزار رایگان یا حتی غیر تجاری نیست. نرم افزار رایگان می تواند در محیط های تجاری مورد بهره برداری قرار گیرد یا در قبال دریافت هزینه توزیع شود و یا در قبال دریافت هزینه پشتیبانی شود. توزیع های تجاری نرم افزار های آزاد امروزه بسیار فراگیر شده اند. باید دقت نمود که ممکن است شما توزیع یک نرم افزار آزاد را بصورت رایگان دریافت نموده باشید و یا برای دریافت آن هزینه ای را پرداخته باشید. آزادی های ۰ الی ۳ همواره برای شما محفوظ خواهد بود و شما خواهید توانست مثلا نرم افزار دریافت شده را بصورت رایگان یا در قبال دریافت هزینه به دیگری بدهید.

با این وجود محدودیت هایی بر چگونگی ایجاد بسته های نرم افزاری حاصل از اعمال تغییرات در سورس کد اصلی به شرط آنکه اولا برای شما دردسر های بزرگ و سختی های غیر قابل تحمل ایجاد نکند و ثانیا آزادی شما در تغییر نرم افزار برای استفاده های شخصی و آزادی حق استفاده شخصی و خصوصی بی قید و شرط شما را سلب نکند پذیرفتنی است. به عنوان مثال مجوز هایی که اعمال تغییرات در سورس کد اصلی و انتشار مجدد آن را منوط به حذف Trademark ها و همچنین تغییر نام Package می دانند نیز می توانند آزاد انگاشته شوند. همچنین قواعدی مانند الزام ارسال یک نسخه از توزیع جدید تولیدی شما به توسعه دهندگان قبلی توزیع اصلی نیز قابل قبول می باشند.


تعریف نرم افزار آزاد از دیدگاه پروژه دبیان

تعریف نرم افزار آزاد از دیدگاه پروژه دبیان دارای اهمیت فوق العاده بالایی است چراکه جنبش اوپن سورس بعد ها توسط بروس پرنز رهبر سابق پروژه دبیان از جنبش نرم افزار های آزاد جدا شد. بروس پرنز زمانی که در راس پروژه دبیان بود قرارداد اجتماعی دبیان را تالیف کرد و بعد ها بر اساس آن مفهوم اوپن سورس را تالیف نمود و جنبش اوپن سورس را بوجود آورد.

قرارداد اجتماعی دبیان سندی است که در آن پروژه دبیان مبانی اخلاقی و خط مشی های کلی خود را تبیین می کند. این سند در واقع پیمانی است که پروژه دبیان با جامعه نرم افزار های باز می بندد. در این سند قواعدی کلی و چهار چوب هایی مطرح می شود که رابطه پروژه دبیان با جامعه نرم افزار های آزاد طبق آن تنظیم می گردد. از دیدگاه پروژه دبیان تولید کنندگان سیستم عامل های آزاد باید ضمانت های زیر را به کاربران بدهند تا مورد اعتماد آنها قرار گرفته و کاربران کنترل کامپیوتر های تحت اختیارشان را به سیستم عامل آزاد مورد نظر بدهند:

۱- ضمانت اینکه سیستم عامل آزاد تولیدی همواره صد درصد آزاد خواهد ماند. نرم افزار های غیر آزاد همواره توسط سیستم عامل آزاد پشتیبانی خواهند شد و با آن سازگار خواهند بود ولی هرگز نباید سیستم عامل آزاد وابسته به نرم افزار غیر آزاد گردد. پروژه دبیان نرم افزار آزاد را مستقل از بنیاد نرم افزار های آزاد تعریف می کند.

۲- ضمانت اینکه تولید کنندگان سیستم عامل نیز متقابلا به جامعه نرم افزار های آزاد کمک خواهند کرد. در پروژه دبیان این کار با تهیه و توزیع ابزار های مناسب برای کار با سیستم عامل به صورت آزاد صورت می گیرد.

۳- ضمانت اینکه اشکالات نرم افزاری و مشکلات سازمانی به هیچ وجه مخفی نخواهند شد.

۴- ضمانت اینکه اولویت تشکیلات کاربران سیستم عامل و نرم افزار های آزاد باشد.

۵- ضمانت ایکنه هدف اصلی سیستم عامل کارگشا بودن برای مسایل و مشکلات حقیقی موجود در جهان باشد. در این راستا نیاز است سیستم عامل با نرم افزار های غیر آزاد سازگار باشد. به عبارت دیگر سیستم عامل آزاد نباید از روی عمد از اجرای نرم افزار غیر آزاد سر باز زند. از طرف دیگر سیستم عامل آزاد نباید برای عملکرد صحیح وابسته به اجزای غیر آزاد باشد.

نرم افزار آزاد از دیدگاه پروژه دبیان بصورتی مستقل از بنیاد نرم افزار های آزاد تعریف شده است. در دیدگاه پروژه دبیان نرم افزار آزاد نرم افزاری است که از لحاظ حقوقی دارای ویژگی های زیر باشد:
۱- توزیع مجدد آزاد: مجوز اجزای پروژه دبیان نمی تواند کسی را از فروختن یا دادن کل نرم افزار های دبیان یا جزیی از آنها بصورت تمام و کمال و یا جزء جزء شده و حتی ترکیب شده در نرم افزار های دیگر بر حذر دارد. برای توزیع مجدد اجزاء یا کل پروژه نباید نیاز به گرفتن اجازه از هیچکسی یا پرداخت وجه به هیچ نهادی باشد.

۲- سورس کد: کلیه اجزای پروژه دبیان حتما باید به همراه سورس کد اصلی خود در دسترس قرار گیرند. توزیع مجدد آزاد علاوه بر فرمت های اجرایی باید شامل سورس کد اصلی نیز بشود.

۳- تهیه تولیدات جدید: مجوز کلیه اجزای پروژه دبیان باید حق اعمال هرگونه تغییر در سورس کد اصلی نرم افزار ها و ایجاد تولیدات جدید بر پایه نرم افزار های اصلی را بدهند. همچنین مجوز نرم افزار اصلی باید اجازه توزیع محصولات تولیدی جدید و همچنین سورس کد جدید آنها را تحت همان مجوز اولیه بدهد.

۴- حفظ یکپارچگی سورس کد اصلی: مجوز یک نرم افزار آزاد می تواند از توزیع مجدد سورس کد تغییر یافته نرم افزار آزاد ممانعت بورزد فقط و فقط در صورتیکه توزیع سورس کد های جزیی (Patch) را که قابلیت اعمال شدن بر سورس کد اصلی دست نخورده و تشکیل یک سورس کد جدید آماده برای کامپایل شدن را مجاز بداند. مجوز یک نرم افزار آزاد می تواند برنامه نویس را مجاب به تغییر نام نرم افزار و تغییر شماره نسخه آن بنماید. پروژه دبیان جلوگیری از توزیع سورس کد اصلی دستکاری شده را مجاز می داند ولی به هیچ وجه توصیه نمی نماید.

۵- مجوز نرم افزار آزاد نباید هیچ تبعیضی علیه افراد یا گروه های خاص اعمال نماید.

۶- مجوز نرم افزار آزاد نباید استفاده از نرم افزار را برای هیچ کاربردی محدود نماید. مثلا مجوز نباید استفاده از نرم افزار را برای شبیه سازی انسان ممنوع اعلام نماید.

۷- مجوز نرم افزار آزاد باید اجازه دهد که نسخه های تغییر یافته نرم افزار اصلی دارای همان ویژگی های آزاد نرم افزار اصلی و حقوق فراهم شده توسط مجوز نرم افزار اصلی باشند.

۸- مجوز نرم افزار آزاد نباید آزادی های فراهم شده را مشروط به جزیی از پروژه دبیان بودن بداند. این بدان معنی است که حتی درصورتیکه نرم افزار از پروژه دبیان جداشده و بصورت نرم افزاری مستقل یا ترکیب شده در بسته های نرم افزاری دیگر ارایه شود آزادی های فراهم شده در مجوز اصلی برای استفاده در پروژه دبیان باید همچنان پابرجا بماند.

۹- مجوز نرم افزار آزاد نباید محدودیتی بر نرم افزار های دیگر اعمال نماید. بعنوان مثال مجوز نرم افزار آزاد نباید آزادی های فراهم شده را منوط به آن بداند که تمام اجزاء و نرم افزار هایی که به همراه نرم افزار اصلی توزیع می شوند آزاد باشند. به عبارت دیگر نرم افزار آزاد نباید از توزیع آن به همراه نرم افزار های غیر آزاد جلوگیری نماید.

۱۰- بعنوان مثال نرم افزار های منتشر شده با مجوز های GNU General Public License - GPL یا Berkeley Software Distribution - BSD از دیدگاه پروژه دبیان آزاد می باشند.


ارتباط نرم افزار های اوپن سورس با نرم افزار های آزاد

یکی از موانع پیشرفت نرم افزار های آزاد مفهوم دوگانه لغت Free در زبان انگلیسی بود. یک معنی لغت Free در زبان انگلیسی آزاد و معنی دیگر رایگان می باشد. با وجود آنکه رایگان بودن در هیچ یک از مجوز های نرم افزار های آزاد ذکر نشده و هرگز اجباری بر رایگان بودن نرم افزار های آزاد وجود نداشته همین معنی دوگانه لغت Free در زبان انگلیسی باعث سوء برداشت بعضی از سرمایه گذاران شده بطوریکه آنها با وجود تحت تاثیر شدید قرارگرفتن از قدرت و پیشرفت چشم گیر نرم افزار های آزاد از سرمایه گذاری در زمینه آن خودداری می کردند. آنها ادعا می کردند که نمی توان از طریق فروش نرم افزاری رایگان تولید سرمایه نمود در صورتیکه اشتباه آنان در عدم درک ماهیت نرم افزار های آزاد و عدم اجبار این نرم افزار ها به رایگان بودن است. بعضی شرکت ها مانند Red Hat Software و Oracle Corporation با درک این مطلب به سرمایه گذاری های کلان در زمینه نرم افزار های آزاد پرداختند و به سود های بسیار کلان دست یافتند.

بروس پرنز رهبر سابق پروژه دبیان این نکته ظریف در معنی دوگانه لغت Free را درک کرد و پیشنهاد داد تا اسم جنبش نرم افزار های آزاد تغییر کند. بسیاری از صاحب نظران به بحث و تبادل نظر پرداختند و نتیجه آن شد که اسم جنبش به جنبش نرم افزار های منبع باز Open Source Movement تغییر یابد. بسیاری از دست اندرکاران پروژه های آزاد از جمله لینوس توروالدز با این پیشنهاد موافقت کردند ولی ریچارد استالمن و بنیاد نرم افزار های آزاد به دلیل آنکه لغت آزادی در اسم جدید جنبش نیست و تاکید بر مفهوم آزادی کمرنگ می شود آن را نپذیرفتند.

نرم افزار اوپن سورس تنها به معنی نرم افزاری که به همراه سورس کد اصلی آن عرضه می شود نیست بلکه نرم افزار اوپن سورس دقیقا از جنس نرم افزار های آزاد می باشد و از همان فضاهای فکری با همان آرمان ها نشات گرفته است. تنها دلیل تغییر اسم جنبش رفع سوء تفاهم سرمایه گذاران بود.

با اعمال تغییرات بسیار جزیی در تعریف نرم افزار آزاد از دیدگاه پروژه دبیان نرم افزار اوپن سورس را چنین تعریف نمود:
۱- توزیع مجدد آزاد: مجوز اجزای یک پروژه اوپن سورس نمی تواند کسی را از فروختن یا دادن کل نرم افزار های داخل پکیج یا جزیی از آنها بصورت تمام و کمال و یا جزء جزء شده و حتی ترکیب شده در نرم افزار های دیگر بر حذر دارد. برای توزیع مجدد اجزاء یا کل پروژه نباید نیاز به گرفتن اجازه از هیچکسی یا پرداخت وجه به هیچ نهادی باشد.

۲- سورس کد: کلیه اجزای پروژه های اوپن سورس حتما باید به همراه سورس کد اصلی خود در دسترس قرار گیرند. توزیع مجدد آزاد علاوه بر فرمت های اجرایی باید شامل سورس کد اصلی نیز بشود.

۳- تهیه تولیدات جدید: مجوز کلیه اجزای پروژه های اوپن سورس باید حق اعمال هرگونه تغییر در سورس کد اصلی اجزاء و ایجاد تولیدات جدید بر پایه نرم افزار های اصلی را بدهند. همچنین مجوز نرم افزار اصلی باید اجازه توزیع محصولات تولیدی جدید و همچنین سورس کد جدید آنها را تحت همان مجوز اولیه بدهد.

۴- حفظ یکپارچگی سورس کد اصلی: مجوز یک نرم افزار اوپن سورس می تواند از توزیع مجدد سورس کد تغییر یافته نرم افزار اصلی ممانعت بورزد فقط و فقط در صورتیکه توزیع سورس کد های جزیی (Patch) را که قابلیت اعمال شدن بر سورس کد اصلی دست نخورده و تشکیل یک سورس کد جدید آماده برای کامپایل شدن را مجاز بداند. مجوز یک نرم افزار اوپن سورس می تواند برنامه نویس را مجاب به تغییر نام نرم افزار و تغییر شماره نسخه آن بنماید.

۵- مجوز نرم افزار اوپن سورس نباید هیچ تبعیضی علیه افراد یا گروه های خاص اعمال نماید.

۶- مجوز نرم افزار اوپن سورس نباید استفاده از نرم افزار را برای هیچ کاربردی محدود نماید. مثلا مجوز نباید استفاده از نرم افزار را برای شبیه سازی انسان ممنوع اعلام نماید.

۷- مجوز نرم افزار اوپن سورس باید اجازه دهد که نسخه های تغییر یافته نرم افزار اصلی دارای همان ویژگی های آزاد نرم افزار اصلی و حقوق فراهم شده توسط مجوز نرم افزار اصلی باشند.

۸- مجوز نرم افزار اوپن سورس نباید آزادی های فراهم شده را مشروط به جزیی از پروژه خاصی بودن بداند. این بدان معنی است که حتی درصورتیکه نرم افزار از پروژه اصلی جداشده و بصورت نرم افزاری مستقل یا ترکیب شده در بسته های نرم افزاری دیگر ارایه شود آزادی های فراهم شده در مجوز اصلی برای استفاده در پروژه اصلی باید همچنان پابرجا بماند.

۹- مجوز نرم افزار اوپن سورس نباید محدودیتی بر نرم افزار های دیگر اعمال نماید. بعنوان مثال مجوز نرم افزار اوپن سورس نباید آزادی های فراهم شده را منوط به آن بداند که تمام اجزاء و نرم افزار هایی که به همراه نرم افزار اصلی توزیع می شوند آزاد باشند. به عبارت دیگر نرم افزار آزاد نباید از توزیع آن به همراه نرم افزار های غیر آزاد جلوگیری نماید.

۱۰- مجوز نرم افزار اوپن سورس نباید نسبت به هیچ تکنولوژی خاصی جهت گیری تبعیض آمیز داشته باشد.

باز شایان ذکر است که نرم افزار اوپن سورس تنها به معنی همراهی نرم افزار با سورس کد اصلی آن نیست بلکه نرم افزار اوپن سورس دقیقا همان نرم افزار آزاد است (که یکی از شروط لازم و نه کافی آن همراهی با سورس کد اصلی است). ریچارد استالمن با تغییر نام جنبش نرم افزار های آزاد به نام جنبش نرم افزار های اوپن سورس چندان موافق نبوده و نیست چراکه او ادعا می کند لغت آزادی حتما باید جزیی از نام جنبش باشد تا بر مفهوم آزادی تاکید بیشتری گردد.

مقاله انتقاد بنیاد نرم افزار های آزاد به جنبش اوپن سورس به قلم ریچارد استالمن:
http://www.gnu.org/philosophy/open-source-misses-the-point.html


مفهوم بسیار مهم کپی-لفت Copyleft یا حفظ اجباری آزادی تا آخرین توزیع

مفهوم کپی-لفت به معنی در نظر گرفتن مجوز هایی دارای ویژگی خاص (Copylefted Free Software License) برای نرم افزار های آزاد است تا نرم افزار آزاد همواره آزاد بماند و آزادی آن حفظ شود. طبق مجوز های Copyleft تبدیل نرم افزار آزاد به نرم افزار غیر آزاد غیر قانونی خواهد بود. بعضی مجوز های نرم افزار های آزاد مانند BSD License یا MIT License آزادی های ۰ الی ۳ را برای کاربر فراهم می کنند یعنی کاربر مجاز است تا نرم افزار را به هر شکلی تغییر دهد و باز منتشر کند ولی الزامی برای او نیست که توزیع جدید حاصل از تغییرات خود را همچنان بصورت نرم افزاری آزاد ارایه کند. از طرفی مجوز های Copyleft آزادی های ۰ الی ۳ را برای کاربر به شرطی فراهم می کنند که فرد پس از استفاده از آزادی های فراهم شده همان آزادی را برای دیگران نیز فراهم کند و بسته نرم افزاری حاصل خود را همچنان بصورت آزاد ارایه کند. برای مثال مجوز GPL License مجوزی آزاد است که نرم افزار های منتشر شده با آن قابل تبدیل به نرم افزار غیر آزاد نیستند و از اولین توزیع تا آخرین توزیع اجبارا آزاد خواهند ماند.


مجوز GNU General Public License و مفهوم کپی-لفت قوی Strong Copyleft

GNU General Public License یا به اختصار GPL مجوزی است که توسط ریچارد استالمن موسس بنیاد نرم افزار های آزاد نوشته شده و اولین مجوزی است که مفهوم کپی-لفت در آن وجود دارد. نرم افزار های آزاد دارای مجوز های بسیاری متنوعی میباشند ولی اکثر نرم افزار هایی که پدید آورندگانشان تاکید بسیاری بر آزاد بودن نرم افزار و تضمین شدن آزاد ماندن آن از اولین الی آخرین توزیع ممکن آن داشته اند از GPL استفاده کرده اند. به عنوان مثال هسته لینوکس تحت مجوز GPL منتشر شده و کاملا آزاد است و تبدیل و انتشار آن بصورت نرم افزاری غیر آزاد ممنوع می باشد.

مجوز GPL مجوزی دارای ویژگی Strong Copyleft می باشد به این معنی که سلب آزادی نرم افزار تحت هیچ شرایطی توسط GPL پذیرفته نیست.


مجوز GNU Lesser General Public License و مفهوم کپی-لفت ضعیف Weak Copyleft

مجوز دیگری که توسط ریچارد استالمن بر اساس مفهوم کپی-لفت نوشته شده مجوز GNU Lesser General Public License یا LGPL می باشد و برای توزیع توابع کتابخانه ای (Link Libraries) علی الخصوص توابع کتابخانه ای سیستم عامل GNU طراحی شده است. توابع کتابخانه ای نرم افزار هایی هستند که نرم افزار های دیگر از آنها برای انجام اعمال خاصی استفاده می کنند. تمامی سیستم عامل ها دارای توابع کتابخانه ای هستند که نرم افزار های کاربردی از آنها برای انجام اعمال مختلف تحت آن سیستم عامل و همچنین ارتباط با هسته سیستم عامل استفاده می کنند.

توابع کتابخانه ای بر دو قسم هستند. توابع کتابخانه ای پویا (Dynamic Link Libraries) نرم افزار هایی هستند که کاملا مستقل از نرم افزاری که از آنها استفاده می کند در فایل های جداگانه ای قرار دارند. از طرف دیگر توابع کتابخانه ای ایستا (Static Link Libraries) نرم افزار هایی هستند که عملا با نرم افزار بکار گیرنده ترکیب شده و عملا بطور کامل یا ناقص به درون فایل حاصل کپی می شوند.

از آنجایی که نیاز است تا نرم افزار های غیر آزاد و Proprietary قابلیت اجرا بر روی سیستم عامل های آزاد را داشته باشند نیاز است تا توابع کتابخانه ای ایستای سیستم عامل آزاد دارای مجوزی غیر از GPL باشد تا بتواند به درون نرم افزار های غیر آزاد کپی شود و توسط آنها استفاده گردد. این مساله به جهت لزوم پشتیبانی نرم افزار های غیر آزاد اجتناب ناپذیر است.

مجوز LGPL این مساله را با مفهوم کپی-لفت ضعیف حل می کند. مجوز LGPL ایجاب می کند که خود کتابخانه های ایستا به عنوان نرم افزاری مستقل همانند مجوز GPL حفاظت می شوند و تبدیل آنها به نرم افزار های غیر آزاد غیر قانونی خواهد بود ولی عمل Link کردن آنها با نرم افزار های غیر آزاد که بطور غیر مستقیم باعث کپی شدن قسمتی از کتابخانه به داخل نرم افزار غیر آزاد می باشد مجاز می باشد. یعنی نمی توان سورس کد یک کتابخانه دارای مجوز LGPL را تغییر دارد و آن را بعنوان کتابخانه ای غیر آزاد توزیع کرد ولی می توان آن را برای تهیه یک نرم افزار غیر آزاد بکار برد و سورس کد یک نرم افزار غیر آزاد را با کتابخانه آزاد لینک نمود و باینری حاصل را با مجوزی غیر آزاد منتشر کرد.


مجوز Berkeley Software Distribution و مفهوم مجوز آزاد غیر کپی-لفت Permissive Free License

بعضی از نهاد های تولید کننده نرم افزار های آزاد مانند FreeBSD Foundation با مفهوم Copyleft مخالفند. به عقیده طرفداران نرم افزار های آزاد غیر Copyleft حفظ اجباری آزادی نرم افزار از اولین توزیع تا آخرین توزیع شرطی محدود کننده است که جلوی تجاری شدن محصولات تغییر یافته بر پایه محصول اصلی را می گیرد. به عقیده این گروه قابلیت تجاری شدن و قابلیت تبدیل شدن به نرم افزار غیر آزاد بر حفظ اجباری آزادی کاربران و تشکلات Community ارجحیت دارد.

مجوز BSD مجوزی آزاد است بدان معنا که نرم افزار منتشر شده تحت مجوز BSD را می توان بدون هیچ قید و شرطی استفاده کرد و آن را تغییر داد. همچنین می توان نسخه اصلی یا نسخه های تغییر یافته را (به همراه یا بدون سورس کد اصلی) بدون هیچ مدودیتی مجددا توزیع نمود. ولی نکته حایز اهمیت آن است که هیچ اجباری برای آزاد بودن توزیع جدید نیست و توزیع جدید ممکن است دیگر آزاد نباشد! یعنی سازمانی (مانند یک شرکت تجاری) می تواند سورس کد اصلی یک پروژه دارای مجوز BSD را تغییر دهد و آنرا بصورت محصولی غیر آزاد و Proprietary درآورد و بفروشد.

دو دیدگاه راجع به مجوز BSD و خاصیت غیر کپی-لفت بودن آن مطرح است:

۱- طرفداران مجوز BSD مانند FreeBSD Foundation معتقد اند مجوز BSD و مجوز های آزاد غیر کپی-لفت از مجوز GPL و مجوز های آزاد کپی-لفت آزاد ترند چونکه قابل تبدیل شدن به نرم افزار های غیر آزاد هستند. FreeBSD در سایت خود بوضوح مخالفت خود را با مفهوم Copyleft ابراز می کند. از آنجا که سیستم عامل FreeBSD شامل اجزاء بسیاری است که از پروژه گنو به آن سیستم عامل انتقال داده شده و دارای مجوز GPL می باشند (از جمله مترجم زبان C گنو و میزکار های GNOME و KDE) عده ای اقدام به حذف این اجزاء و جایگزینی آنها با نمونه های دارای مجوز BSD کرده اند. مثلا سیستم عامل ClangBSD از حذف اجزاء دارای مجوز GPL از سیستم عامل FreeBSD حاصل شده است.

مقاله انتفاد FreeBSD Foundation به مجوز GPL:
http://www.freebsd.org/doc/en/articles/bsdl-gpl/article.html

۲- طرفداران مجوز GPL مانند Free Software Foundation و Linus Torvalds معتقد اند مجوز های کپی-لفت برای تشکیل Community ها و گروه های توسعه دهنده پر شور بسیار مناسب ترند چراکه وقتی گروهی اقدام به مشارکت در پروژه های دارای مجوز GPL می کنند می توانند اطمینان داشته باشند که مشارکت آنها مورد سوء استفاده قرار نخواهد گرفت و تمامی توزیع های آن نرم افزار ها تا آخرین آنها آزاد خواهند بود. در واقع عملا وقتی موسسه ای تجاری یا غیر تجاری نرم افزاری بر پایه نرم افزار اصلی تهیه کند الزاما آزاد خواهد بود و گروه اصلی میتوانند نسخه ای از سورس کد توزیع جدید را تهیه کنند و آزادانه به توسعه و استفاده از آن بپردازند. بسیاری از Community های بزرگ مانند Community توسعه دهنده هسته سیستم عامل گنو/لینوکس از مجوز GPL استفاده می کنند.

مقاله انتقاد Free Software Foundation به مجوز BSD:
http://www.gnu.org/philosophy/bsd.html


مفهوم سازگاری یک مجوز آزاد با GPL یعنی GPL-Compatibility

سوالی که برای توزیع کنندگان نرم افزار های آزاد علی الخصوص تهیه کنندگان توزیع های مختلف سیستم عامل گنو/لینوکس خیلی مهم است سازگاری مجوز یک بسته نرم افزاری با GPL است. توزیع کنندگان نرم افزار های آزاد محصولات خود را تحت مجوز GPL منتشر می کنند و مفهوم سازگاری با GPL به معنی تغییر مجوز یک نرم افزار آزاد از مجوز اصلی به مجوز GPL و سپس ترکیب آن با دیگر بسته های نرم افزاری دارای مجوز GPL و انتشار کل مجموعه تحت مجوز GPL است.

بعنوان مثال مجوز BSD که مجوزی غیر کپی-لفت می باشد با GPL سازگار است چرا که مجوز BSD علاوه بر آنکه اعمال تغییرات در سورس کد اصلی نرم افزار و انتشار نتیجه را مجاز می داند امکان انتشار نتیجه حاصل را با هر مجوزی حتی مجوز های غیر آزاد و Proprietary می دهد. حال که مجوز BSD هر شرایطی برای انتشار حتی تبدیل به بسته غیر آزاد شدن را می پذیرد پس خیلی طبیعی است که محدودیت Copyleft که بنیان و اساس GPL است را می پذیرد. پس در اصطلاح گفته می شود مجوز BSD با GPL سازگار است. ولی مثلا سیستم عامل OpenSolaris تحت مجوز CDDL منتشر شده که مجوزی آزاد ولی غیر سازگار با GPL می باشد. یا بعنوان مثال مجوز قدیمی Original BSD License مجوزی آزاد است و شروط ۰ الی ۳ آزادی را برآورده می کند ولی نرم افزار های حاصله از آن حتما باید دارای برچسب "حاوی قسمت هایی از کد اصلی فلان بسته" باشند که در GPL وجود ندارد. لذا نمیتوان آن بسته ها را با GPL منتشر کرد.

این مفهوم منجر به آن می شود که مثلا انتقال بسته ها از سیستم عامل FreeBSD به GNU/Linux مجاز باشد ولی از OpenSolaris به GNU/Linux مجاز نباشد.


تشخیص آزاد یا غیر آزاد بودن نرم افزار

تشخیص آزاد یا غیر آزاد بودن برنامه با بررسی مجوز آن میسر است. لیستی از مجوز های آزاد مختلف توسط بنیاد نرم افزار های آزاد منتشر شده که اکثرا از لحاظ کپی-لفت بودن و همچنین سازگاری با GPL نیز مورد بررسی قرار گرفته اند. برای بررسی یک برنامه از لحاظ آزاد بودن یا سازگاری آن با GPL باید مجوز آن در لیست http://www.gnu.org/licenses/license-list.html جستجو شود.


مقایسه نرم افزار های آزاد و غیر آزاد

نرم افزار های آزاد به دلیل ویژگی های بسیار ارزنده آنها با سرعت صرصام آوری در حال رشد و فراگیر شدن می باشند. اکثر رایانه های خادم (سرور) دنیا امروزه بر پایه نرم افزار های آزاد علی الخصوص GNU/Linux و FreeBSD به همراه وب سرور Apache و بانک های اطلاعاتی MySQL و PostgreSQL در حال فعالیت هستند. وب سرور Apache حدود ۷۰ درصد سایت های اینترنت را سرویس می دهد و سرور های ایمیل Sendmail و Postfix محبوب ترین خادم های ایمیل می باشند. امنیت شبکه های کامپیوتری در بسیاری مراکز حساس و فوق حساس بر پایه نرم افزار های آزاد و بخصوص سیستم عامل GNU/Linux می باشد. در دنیای ابر رایانه ها سیستم عامل GNU/Linux با محبوبیت ۹۵ درصدی حکم فرمایی می کند.

چند سالی است که نرم افزار های آزاد در حال تسخیر رایانه های شخصی می باشند. مجموعه OpenOffice بعنوان جانشینی مسلم برای مجموعه Office مایکروسافت مطرح شده و بسیار بهتر و پایدارتر از آن عمل میکند. مرورگر وب Firefox برتری مسلم خود را ثابت نموده و همه اینها به کنار سیستم عامل GNU/Linux در حال گسترش بسیار سریعی است.

از ویژگی های نرم افزار های آزاد می توان به امنیت فوق العاده بالا و پایداری شدید به همراه سرعتی بسیار بالا اشاره کرد.


راهکار های عملی حمایت از نرم افزار های آزاد

۱. در مورد نرم افزار های آزاد مطالعه و تحقیق نمایید و بینش و درک درستی نسبت به آنها و محاسن وجود آزادی عمل در آنها حاصل نمایید. بسیاری از مردم نرم افزار های آزاد را نرم افزار هایی رایگان می دانند که کاملا تصور غلطی است. مفهوم آزادی نرم افزار با رایگان بودن آن متفاوت است. هرچند تعداد زیادی از نرم افزار های آزاد رایگان نیز هستند (مانند Ubuntu, Firefox, OpenOffice, VLC Media Player, ...) و یا نسخه ای رایگان از آنها قابل دستیابی است (مثل توزیع CentOS که نسخه رایگان توزیع Red Hat Enterprise Linux می باشد). در مورد کیفیت بسیار بالای نرم افزار های آزاد تحقیق کنید. بعضی افراد به غلط نرم افزار های آزاد را بی کیفیت می پندارند که تصوری کاملا اشتباه است. کیفیت بسیار بالای نرم افزار های آزاد را با جستجو در اینترنت و مشاهده درصد فراگیر بودن آنها در کاربرد های حساس و پیچیده ملاحظه نمایید (مثلا ۹۵ درصد در دنیای ابر کامپیوتر ها) و خود دست بکار شوید و آنها را تجربه کرده و قدرت, کیفیت و پایداری آنها را شخصا تجربه نمایید. تجربه شخصی خود را به دوستان خود نیز بگویید.

آزادی مجوز نرم افزار های آزاد مساله ای بسیار مهم است. با وجود آنکه در ایران قانون کپی رایت اعمال نمی شود ولی آزاد بودن مجوز حتی در ایران نیز کارکرد های مهمی دارد. نرم افزار های آزاد تنها یک گزینه برای رهایی از شر نرم افزار های شرکت مایکروسافت نیستند! تفاوت ویندوز و لینوکس مثل تفاوت ویندوز و Mac OS X نیست. لینوکس آزاد است ولی Mac OS X مثل ویندوز محدود و غیر آزاد است. همچنین توزیع هایی رایگان از نرم افزار های آزاد نیز موجود است که هیچ نیازی به شماره سریال های جعلی و Crack های ویروسی و مخرب ندارد.

۲. دانش مفهوم نرم افزار های آزاد و تجربه ای که راجع به کیفیت و قدرت آنها بدست آورده اید را به دوستان, آشنایان, همکاران, همسایگان و همکلاسی های خود انتقال دهید. در مجالس خانوادگی راجع به ایده نرم افزار های آزاد و تاریخچه آن سخن بگویید. با دوستان خود راجع به نرم افزار های آزاد و محاسن عدیده آنها (شاید یکی از مهمترین آنها رهایی از Crack ها و شر ویروس ها و خرابی هایی که بدلیل Original نبودن نرم افزار ها در ایران به آنها مبتلا هستیم باشد) گپ بزنید. در محیط کار برای همکاران از انواع نرم افزار های اداری آزاد مثل مجموعه تحسین برانگیز OpenOffice و یا قدرت باورنکردنی سرور های لینوکس و محاسن آنها بگویید. همسایگان خود را با نرم افزار های آزاد آشنا کنید. وقتی کامپیوتر همسایه ای خراب می شود و از شما برای تعمیر آن و نصب مجدد سیستم عامل کمک گرفته میشود نسخه ای از یک سیستم عامل آزاد مثل لینوکس را به همسایه تان معرفی کنید. اکثر افراد با رایانه خود کاری جز مرور وب و چک کردن ایمیل ها یا گوش دادن به موسیقی و یا مشاهده فیلم و عکس و رایت سی دی ها و دی وی دی ها نمیکنند. اکثر افراد از رایانه خود فقط برای تایپ مقالات و تهیه اسلاید ها استفاده می کنند. برای اینگونه افراد واقعا فرقی نمی کند که سیستم عاملشان ویندوز است یا لینوکس. در کمتر از یک هفته کلیه این کار ها را در محیط جدید می توانند به سادگی انجام دهند.

اگر فرد مورد نظر وقت یادگیری یک سیستم عامل دیگر را ندارد نسخه ای از لینوکس را برای او بصورت Multi-boot در کنار ویندوز نصب کنید و بخوبی آنرا تنظیم کنید تا مشکلی پیش نیاید. کم کم به دلیل کنجکاوی وارد آن خواهد شد و بیشتر و بیشتر از آن استفاده خواهد کرد تا کم کم تنها سیستم عامل مورد استفاده اش شود.

اگر دانشجو هستید بعنوان پروژه های درسی خود مفهوم نرم افزار های آزاد را بصورت سمینار ارایه دهید. دانشجویان دیگر را با مفهوم نرم افزار های آزاد آشنا کنید. در محیط های علمی که در آنها حضور دارید تشکیل گروه کاربران نرم افزار های آزاد دهید و دوستان دیگر را با نرم افزار های آزاد آشنا کنید و به آنها پشتیبانی خوب بدهید. همچنین دی وی دی ها و سی دی های نرم افزار های آزاد را در صورت امکان بصورت رایگان در اختیار آنها قرار دهید.

۳. بسیاری از نرم افزار های محدود و غیر آزاد به آسانی توسط انواع آزاد آنها قابل جایگزینی هستند. مثلا OpenOffice بسادگی جایگزین Office مایکروسافت می شود و بسیار بهتر از آن عمل میکند. Firefox یا Chrome بسادگی جایگزین Internet Explorer می شوند و فوق العاده از آن امن تر هستند. VLC Media Player کیفیت و پایداری بسیار باورنکردنی دارد و جایگزین مدیاپلیر های غیر آزاد می شود. نرم افزار های آزاد را برای کارهای شخصی خود نصب کنید و مورد استفاده قرار دهید و خوب آنها را یاد بگیرید. کل سیستم عامل ویندوز و بسیاری از مجموعه نرم افزار های غیر آزاد آن را می توان با توزیع های بسیار متنوع (هر کدام برای سلیقه ای خاص بسیار مطلوب خواهد بود) سیستم عامل گنو/لینوکس جایگزین کرد. افراد بسیاری فراگیری و استفاده از لینوکس را بزرگ ترین لذت زندگی خود عنوان کرده اند.

۴. علاوه بر آشنا نمودن افرادی که با شما در تماسند با مزایای فلسفی نرم افزار های آزاد و مزایای عملی آنها و در اختیار قرار دادن سی دی ها و دی وی دی های آزاد برای دسترسی آنها, سعی کنید پشتیبانی خوبی برای آنها فراهم کنید. تا جایی که وقتتان به شما اجازه می دهد در پشتیبانی نرم افزار های آزاد فعالیت کنید. آنها را خیلی خوب یاد بگیرید و به دیگران آموزش دهید. اگر می توانید کتابی یا جزوه ای بنویسید یا کتاب یا جزوه ای مناسب را ترجمه کنید. تشکیل گروه های پشتیبانی نرم افزار های آزاد دهید. در فروم های اینترنتی نرم افزار های آزاد عضو شوید و تا میتوانید مشکلات کاربران دیگر را پاسخ بگویید. تجربیات خود را در ویکیپدیا فارسی یا سایت های مشابه و همچنین وبلاگ های شخصی خود با دیگران به اشتراک بگذارید.

۵. در صورتیکه یک متخصص کامپیوتر هستید سعی کنید به صورت حرفه ای به گسترش نرم افزار های آزاد بپردازید. نرم افزار های اداری را از ویندوز به لینوکس منتقل کنید و سیستم عامل لینوکس را در محیط های اداری و صنعتی گسترش دهید. از سرور های لینوکس در محیط های کاری خود استفاده نمایید. شبکه های مبتنی بر نرم افزار های آزاد برپا کنید و از روتر ها و اجزای شبکه ای مبتنی بر لینوکس و نرم افزار های آزاد استفاده نمایید.

۶. در گسترش نرم افزار های آزاد و همچنین فرهنگ آنها بکوشید و هرگز دلسرد نشوید.


لزوم توسعه استفاده از نرم افزار های آزاد در کشور

در کشورمان به جهت عدم اعمال قانون کپی رایت در مورد بسیاری از نرم افزار ها, نرم افزار های غیر آزاد بصورت غیر قانونی (بدون رعایت شرایط ذکر شده در مجوز آنها علی الخصوص عدم پرداخت هزینه مطالبه شده برای استفاده از آنها به شرکت تولید کننده نرم افزار) استفاده می شوند و لذا اکثرا نیاز به روش های دور زدن مجوز مانند Crack کردن و استفاده از شماره سریال های غیر معتبر می باشد و همین امر مشکلات فراوانی ایجاد می کند. اولا اکثر نرم افزار های Crack دقیقا مصداق بدافزار (Malware) می باشند که به محض استفاده سیستم رایانه ای را خراب و صدمات جبران ناپذیری به آن وارد می کنند. اکثر نرم افزار های Crack ویروسی بوده و بسیاری از آنان نیز خراب و ناتوان در فعال سازی نرم افزار بدون پرداخت هزینه میباشد. همچنین پیدا نمودن نرم افزار Crack مناسب که قادر به فعال سازی نرم افزار غیر آزاد باشد با پیشرفت روش های قفل نمودن و محافظت نرم افزار های غیر آزاد روز به روز سخت تر و مستلزم هزینه زمانی بسیاری است. ثانیا بسیاری از نرم افزار های غیر آزاد بعد از فعال شدن توسط Crack ها توسط مکانیسم های محافظتی خود طی ارتباطی با شرکت تولید کننده از طریق اینترنت غیر فعال شده و ناگهان از کار می افتند که Crack کردن دوباره آنها فوق العاده مشکل و اگر ناممکن نباشد در بسیاری از اوقات مستلزم نصب دوباره رایانه می باشد که هزینه های مادی و زمانی بسیاری را تحمیل می کند. به طور مثال ممکن است سرور یک شرکت تجاری ناگهان از کار بیفتد و موجب تعطیلی آن شرکت و وارد شدن خسارات بسیاری به آن شود.

از طرف دیگر تجربه نشان داده که نرم افزار های آزاد بسیار امن تر از انواع غیر آزاد خود هستند. سیستم عامل های مبتنی بر GNU/Linux و خانواده BSD ها امنیت بسیار بالای خود و پایداری خوب خود را طی تجربه بسیاری افراد متخصص و شرکت ها در سرتاسر جهان نشان داده اند و در بسیاری نقاط دنیا بطور گسترده بکار گرفته میشوند. مضافا سیستم عامل های آزاد دارای سورس کد اصلی باز بوده و رفتار نرم افزار کاملا قابل تجزیه و تحلیل است در حالی که نرم افزار های غیر آزاد مانند سیستم عامل ویندوز یا نرم افزار SQL Server دارای سورس کد بسته می باشند و اطلاعی از طراحی داخلی آنها و عملکرد آنها نیست و هیچ تضمینی برای رفتار امن آنها وجود ندارد.

در صورت رشد استفاده از نرم افزار های آزاد دانش فنی استفاده از آنها نیز بطور گسترده فراگیر خواهد شد و با مرور زمان دانش فنی توسعه نرم افزاری آنها و برنامه نویسی آنها در داخل کشور تولید می گردد و بسیار مثمر ثمر خواهد بود.

  • ehsan gholami

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی