اگر در حوزه IT فعالیت می کنید تا کنون حتما اسم Linux و open-source software به گوشتان رسیده است.بالای 70 درصد سرور های عمومی اینترنتی ای که امروزه استفاده می کنیم روی Linux فعالیت می کند. از 500 ابر کامپیوتر مشهور جهان بیش از 99 درصدشان از Linux به عنوان سیستم عامل استفاده می کنند.
این آمار نشان دهنده محبوبیت سیستم عامل لینوکس در میان شرکت های بزرگ و میزان اهمیت آن در محیط های enterprise است. این اهمیت به حدی است که می توانیم بگوییم اینترنتی که امروز چنین گسترده شده است مدیون لینوکس و جامعه فعال open-source است.
در این مقاله به علل موفقیت سیستم عامل لینوکس و منطق نرم افزار های منبع باز می پردازیم.
تاریخچه Linux/Unix و Open-source به صورت خلاصه :
لینوکس در اوایل سال 1990 توسط لاینس توروالدز و The free software foundation ساخته شد. لاینس زمانی که هنوز دانشجوی دانشگاه هلسینکی بود توسعه سیستم عاملی مشابه MINIX را آغاز کرد به نام UNIX. ورژن 1 کرنل لینوکسی در سال 1994 عرضه شد.
در همان سال ریچارد استالمن و FSF تلاش بسیاری برای ساخت یک سیستم عامل جهان باز مشابه UNIX به نام GNU کردند. بر خلاف اقای توروالدز این دوستان کار خود را ابتدا با توسعه ابزار هایی برای سیستم عامل اغاز کردند نه توسعه خوده کرنل.
بعد ها این ابزار ها با کرنل لینوکس تلفیق شدند و سیستم عامل GNU/Linux یا به اختصار Linux ایجاد شد.
توسعه برنا مه ها بر اساس اشتراک و تلفیق اطلاعات سابقه ای به طولانی سابقه خوده برنامه نویسی دارد. اصطلاح Open-source مدتی بعد از معرفی source code برنامه Netscape در سال 1998 ساخته شد.
جامعه برنامه نویسان open source تا کنون کمک زیادی به جامعه داشته است و بسیاری از پیشرفت های امروزه در IT مدیون فعالان این حوزه است.
منطق open-source چیست ؟
بسیاری از مردم تصور می کنند که open-source بودن یک برنامه تنها به معنای رایگان بودن آن برنامه است در صورتی که open source تعریفی بسیار بزرگ تر دارد.
در open-source لایسنس های گوناگونی وجود دارد که با توجه به آن ها خط منش نرم افزار مشخص می شود ولی به طور کلی می توان گفت در open source ما به کاربران و سایر برنامه نویسان اجازه می دهیم به سورس کد ما دسترسی داشته باشند و با توجه به نوع لایسنس حتی می توانند در سورس کد تغییر ایجاد کنند و حتی در بعضی لایسنس ها می توانند برنامه ای که ما بصورت رایگان منتشر کرده ایم را تغییر داده و بفروشند. بخش زیادی از برنامه های open source رایگان هستند ولی در open source برنامه های پولی هم وجود دارد به عنوان مثال شرکت red hat یکی از سیستم عامل های خود را به صورت پولی عرضه کرده و در ازای مبلغی که دریافت می کند کاربران خود را پشتیبانی می کند.
نمی توان در مورد تمام برنامه های open source بطور مطلق صحبت کرد ولی بسیاری از این برنامه ها رایگان یا ارزان, امن و پایدار هستند و به علت ساپورت خوب باگ های کمی دارند و یا باگ هایشان را می شود راحت تر برطرف کرد.
انواع لایسنس های open-source :
ساده ترین تعریف این است که لایسنس ها قوانین و قرداد هایی هستند بین توسعه دهنده ها و کاربر های برنامه های open-source هستند که مشخص می کنند برنامه تحت چه شرایطی می تواند در محیط های مختلف مورد استفاده قرار بگیرد. لایسنس چیزی است که کد را تبدیل به برنامه open-source می کند.
هر لایسنس مشخص می کند کاربر اجازه دارد با هر قسمت برنامه چه کاری انجام دهد و همچنین چه کار هایی اجازه ندارد انجام دهد.
GNU General public license (GPL)
معروف ترین و پر استفاده ترین لایسنس GPL است. ریچارد استالمن این لایسنس را درست کرده. GPL یک لایسنس copyleft هست. یعنی هر برنامه ای که تحت این لایسنس هست باید به عنوان open-source منتشر شود و سورس کد برنامه باید بطور کامل منتشر شود و همه مجوز های تغییر و انتشار آن به کاربر داده شود.
The Apache License
لایسنس Apache توسط شرکتی به همین نام ساخته شده است. اپاچی لایسنسی پرطرفدار است که توسط جامعه ای قدرتمند پشتیبانی می شود. این لایسنس به شما اجازه می دهد که آزادانه از برنامه استفاده کنید,آن را تغییر دهید و منتشر کنید, اما منوط به رعایت شرایط اپاچی هستید. اولین نسخه این لایسنس در سال 1995 منتشر شد. اما امروز پیدا کردن برنامه ای که از این لایسنس ورژن 1 استفاده کند سخت است. در سال 2000 اپاچی نسخه 1.1 این لایسنس را معرفی کرد و در آن advertisement clause خود را برداشت.
در سال 2004 نسخه 2 این لایسنس معرفی شد.
Berkeley Software Distribution (BSD)
گروهی از لایسنس های مجوز ازاد (permission free) هستند. این لایسنس به شما اجازه می دهد که آزادانه سورس کد را تغییر دهید و منتشر کنیم تا زمانی که یک کپی از copyright notice و لیست شرایط و رفع کننده مسعولیت را نگهداریم.
Ms-PL و CDDL و EPL و MIT
و … از دیگر لاینس های معروف هستند. بحث لایسنس ها بیشتر بحث های حقوقی است.
علت تمایز Kernel Linux چیست ؟
کرنل قلب تپده هر سیستم عامل است. تمام کارهایی که در سیستم عامل انجام می دهیم توسط کرنل انجام می شود.
کرنل لینوکس با الهام از Minix kernel نوشته شده. Minix kernel کلونی از Unix kernel است که هدفش استفاده اموزشی است.
علت قدرتمند بودن کرنل لینوکس گروه بندی قوی و متد ساده طبقه بندی در آن است. در اصل لینوکس سیستم عامل پیچیده ای نیست. و بخاطر همین سادگی در صورت ایجاد مشکل برطرف کردن آن مشکل ساده تر است.
همچینین این سیستم به شدت توسعه پذیر (scalable) است یعنی از کامپیوتر های ضعیف داخل لوازم خانگی تا ابر کامپیوتر ها می توانند از این سیستم عامل به صورت بهینه استفاده کنند.
تعدادی از ابزار open-source های معروف لینوکس
Thunderbird:
نرم افزار مدیریت ایمیل بسیار قدرتمند و رایگان است که به راحتی قابل مدیریت است. با این برنامه می توان به طور همزمان چند حساب ایمیل را مدیریت کرد و نامه هارو مرتبط و طبقه بندی کرد.
LibreOffice:
مجموعه نرم افزار هایی بسیار قدرتمند و رایگان که مشابه Office Microsoft است.
GIMP:
برنامه ای رایگان مشابه فوتوشاب که به شما توان استفاده از layer ها و افکت های تصویری و .. را می دهد.
VIM:
ادیتور مشهور و قدرتمند vim که بسیار پایداره. 100 ها زبان برنامه نویسی, فرمت را پشتیبانی کرده و سرچ سریع و قدرتمندی دارد.
VIRTUAL BOX:
یک ماشین مجازی ساز رایگان و Open-source که صاحب آن Oracle است. که اجازه می دهد چندین سیستم عامل روی یک کامپیوتر اجرا شوند.
VLC PLAYERو ClamAVو Rsyncو Timeshiftو Delungو ...
از ابزار های قدرتمند لینوکس هستند که open-source هم می باشند.
نصب کردن نرم افزار ها در لینوکس در صورتی که ریپازیتوری موجود باشد بسیار آسان است و با نوشتن یک خط کد انجام می شود.
انواع Shell و GUI Shell ها معروف:
شل(Shell) مانند پوسته صدف است و اولین برنامه ای است که اجرا می شود و بطور مستقیم با Kernel در ارتباط است.
Shell CLI: SH, CSH, KSH, TSCH, ZSH, BASH, …
این Shell ها غیر گرافیکال بوده و به صورت خط فرمان می باشند. از معروف ترین و کامل ترین Shell های بالا BASH می باشد که تمام ویژگی های خوب Shell های قبلی را دارد.
GUI Shell: Gnome, KDE, XFCX, LXDE, Unity, MATE
این Shell ها گرافیکال هستند.
توزیع های معروف Linux :
تعداد distro های لینوکس واقعا زیاد است. اما دو شاخه پرطرفدار Debian base , Red hat است.
از Debian base ها می توان Ubuntu و Linux Mint وPureOS و Kali Linux را نام برد.
از RedHat Base ها می توان CentOS و Fedora و Oracle Linux را نام برد.
هر یک از توزیع های Linux با ابزار های مختص کاری خاص عرضه می شود. حتی کرنل بعضی از این توزیع ها متفاوت است. بعضی از این توزیع ها یک کرنل همراه ابزار های مختص آن توزیع و یک یا چند Shell هستند.
Ubuntu:
از توزیع های بسیار پرطرفدار Debian base است که به صورت گسترده توسط تعداد زیادی از افراد استفاده می شود. نسخه گرافیکی آن از Gnome Shell استفاده می کند و نسخه کامل آن همراه تعداد زیادی از ابزار های معروف مثل Firefox و Thunderbird و LibreOffice عرضه می شود. هم نسخه Desktop دارد و هم نسخه Server.
Kali Linux:
یک Debian base Linux است که برای مقاصد امنیتی و تست نفوذ توسعه داده شده است و برای همین با ابزار های مربوط به امنیت و نفوذ عرضه می شود.
Linux Mint:
یک Debian base لینوکس هست که می توان آن را نسخه سبک تر ubuntu دانست به طوری که Package repository های مشابه Ubuntu دارد. اخرین نسخه این سیستم عامل قابل دانلود با سه GUI Shell گوناگون MATE, Xfce, Cinnamon است.
CentOS:
یک Red hat لینوکس است که رایگان است و توسط جامعه open-source توسعه یافته است. توزیع بسیار توانمند و پرطرفدار است. یک جایگزین رایگان بسیار مناسب برای RHEL است زیرا بسیار پایدار و قدرتمند و در عین حال رایگان است. این سیستم عامل در سرور های زیادی در حال اجرا می باشد.
Fedora:
یک red hat base لینوکس است که رایگان است و توسط RHEL ساپورت می شود. بخاطر رایگان بودنش کاربران زیادی دارد و شرکت RHEL ابزار ها رو قبل از عرضه در نسخه Enterprise خود ابتدا در این سیستم عامل عرضه کرده و در صورت گرفتن بازخورد مناسب و پیدا کردن باگ های در نسخه Enterprise عرضه می کند. امنیت این نسخه بسیار بالاست و با SELinux عرضه می شود.
در پایان باید بگوییم با توجه به صحبت هایی که کردیم لینوکس سیستم عاملی پرطرفدار و قدرتمند و پایدار است که از امنیت بالایی برخوردار است. اکثر نسخه های این سیستم عامل رایگان است و برنامه های آن توسط جامعه open-source پشتیبانی می شود. لینوکس و open-source به ما اجازه می دهد ابزار ها و حتی خود کرنل را با توجه به نیازمان تغییر و توسعه دهیم و حتی ابزار های جدید ایجاد کنیم.
تنوع و وسعت این فضا انقدر زیاد است که براحتی برای اکثر اپلیکیشن ها می توان پلتفرمی مناسب پیدا کرد.
منابع :
www.tecmint.com
www.suse.com
www.geeksforgeeks.org
Linux Nutshell book
www.toolbox.com
دانشجو آرمان نقی زاده
استاد مریم حاج اسمعیلی
دانشگاه ازاد اسلامی تهران مرکزی واحد هاشمی رفسنجانی
کلاس اصول طراحی نرم افزار