بهنام بهجت مرندی
behnam@tehranavenue.com

قسمت اول

Open Source
باز متن
و
نرم افزار آزاد


در يکی از روزهای چند سال آخر دهه هفتاد ميلادی، ريچارد استالمن (Richard Stallman) در محل کار خود در آزمايشگاه هوش مصنوعی MIT مشغول کار با پرينتر ليزری جديد محصول زيراکس بود که با مشکلی روبرو شد. پرينتر کاغذ جمع می‌کرد و استالمن به اين نتيجه رسيد که بايد درايور را اصلاح کند و برای اين کار نياز به سورس کد برنامه داشت اما شرکت زيراکس اين سورس کد را در اختيار آزمايشگاه نگذاشته بود و چنين خيالی هم نداشت. تا قبل از اين مورد استالمن که دانشجوی فيزيک دانشگاه هاروارد بود و همزمان در AI Labs برای MIT کار می‌کرد با چنين موردی برخورد نکرده بود. او و همکاران دانشگاهيش از سيستم عامل ITS که خودشان ساخته بودند استفاده می‌کردند و هر بخش از آن را در اختيار هر کسی که علاقه‌مند بود، می‌گذاشتند و هيچ نشانی از کپی‌رايت در اين برنامه‌ها وجود نداشت. استالمن متوجه شد نمی‌تواند نسخه‌ای از برنامه مورد نظر را از همکاری در دانشگاه کارنگی هم بگيرد چون آن دانشگاه هم توافق‌نامه‌ای با شرکت زيراکس امضا کرده بود. مدتی بعد AI Labs سيستمهای خود را عوض کرد و آزمايشگاه مجبور به استفاده از سيستم عامل‌های تجاری شد. حلقه کوچک و صميمی برنامه‌نويسانی که استالمن می‌شناخت از هم می‌پاشيد و او در فکر يافتن جايگزينی برای آن بود. استالمن اول سعی کرد تعريفی از نرم‌افزار ارائه بدهد که از انحصاری شدن آن جلوگيری کند. با اين هدف او "نرم‌افزار آزاد" يا Free Software را با چهار ويژگی تعريف کرد:

۱. کاربر آزاد است برنامه را به هر منظوری اجرا کند.

۲. کاربر آزاد است برنامه را به سليقه خود تغيير دهد. (لازمه اين کار دسترسی به سورس‌کد برنامه است.)

۳. کاربرد آزاد است نسخه‌هايی از برنامه را توزيع مجدد کند. اين کار چه بصورت رايگان و چه در ازای دريافت پول مجاز است.

۴. کاربر آزاد است تا نسخه‌های اصلاح شده‌اش را نيز توزيع کند.

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

stallman.png

استالمن تصميم گرفت بر مبنای اين تعريف از مفهوم نرم‌افزار، يک سيستم عامل کامل خلق کند که تمام برنامه‌های لازم را به همراه داشته باشد و علاوه بر آن با Unix نيز سازگار باشد تا برنامه‌نويسان آن دوره که اکثرشان از سيستم عامل Unix ساخت ريچی و تامپسون استفاده می‌کردند براحتی با آن کار کنند. اين آغاز کار پروژه GNU بود. گنو سرنام عبارتی با اين مضمون است: "گنو يونيکس نيست."( GNU's Not Unix) که تاکيد می‌کند گنو با وجود سازگاری کامل با يونيکس، جدای از آن و يک پروژه کاملا مستقل است.

استالمن در سال ۱۹۸۴ از MIT استعفا داد و فعاليتهای خود را بر گنو متمرکز کرد. يک سال بعد ويرايشگر GNU Emacs را منتشر ساخت که مورد توجه برنامه نويسان قرار گرفت. برنامه‌نويسان زيادی از اين نرم‌افزار استفاده کردند و بعضی نقايصی در آن يافتند و اين ايراد‌ها را گزارش دادند، بعضی پيشتهاداتی برای رفع اين نقايص ارائه دادند و برخی سورس کدهای تغيير داده شده نرم‌افزار را برای استالمن ارسال کردند. پس نرم‌افزار با کدهای فرستاده شده توسط ديگران بهينه‌سازی شد و دوباره منتشر گشت.

اما مشکلی که بروز کرد امکان انحصاری کردن نرم‌افزارهای آزاد بود. به اين معنا که ممکن بود کسی از اين نرم‌افزارها در محصول خود استفاده کند و با انحصاری کردن آن (عدم انتشار سورس کد برنامه) از تشخيص و اصلاح نقايص آن توسط ديگران و همچنين افزودن ويژگيهای جديد به آن جلوگيری نمايد. برای حل اين مشکل استالمن Copyleft را تعريف کرد. Copyleft به معنای قرار دادن نرم‌افزارهای آزاد تحت قانون Copyright است. با اين تفاوت که قوانينی برای استفاده، تغيير و توزيع مجدد آن نرم‌افزار اضافه گشته و شرط شده که اين قوانين برای آن نرم‌افزار بدون تغيير باقی بمانند. به عبارت ديگر در اين روش سعی شده از Copyright بجای محدود کردن آزادی کاربران برای تضمين اين آزاديها استفاده شود. مجوز ويژه‌ای که برای Copyleft کردن گنو بکار رفته GNUGPL (GNU General Public License) نام دارد که نسخه دوم آن که در حال حاضر نيز معتبر است به سال ۱۹۹۱ منتشر شد.

سال ۱۹۹۱ استالمن و دوستان برنامه‌نويسش تمام برنامه‌های لازم برای گنو را نوشته بودند و تنها به يک چيز نياز داشتند: "کرنل". تا تمام اجزای سيستم عامل را با آن به هم مرتبط کرده و به کار اندازند. از اينجاست که يک جوان ۲۱ ساله، دانشجوی سال دوم علوم کامپيوتر دانشگاه هلسينکی فنلاند و يک هکر خود آموخته به نام "لينوس بنديکت توروالدز" (Linus Benedict Torvaldes) با پيامی که به گروه خبری MINIX فرستاد وارد داستان ما می‌شود.

دو نکته در حاشيه نظرهای وارد بر قسمت اول مقاله:

يکی از دوستان در قسمت نظر خواهی چند سؤال در زمينه پروژه‌های بازمتن داشتند که اگر سؤالات ديگری مطرح نشد در پايان آخرين قسمت مقاله به اين سؤالات در حد معلومات محدود خودم پاسخگو خواهم بود اما اگر سؤالات ديگری هم مطرح شد، امکان اختصاص يک شماره از بخش اينترنت برای پاسخ دادن به اين سؤالات با مسئولان مجله قابل بررسی است.

ديگر اينکه دوست ناشناسی با کمی پرخاشگری - که با وجود ناخوشايندی چندان مهم نيست - اشاره کرده که مثال خريد اتومبيل برای توضيح اين مقوله - يعنی خريد نرم‌افزار - نارساست و مثال خريد آلبوم موسيقی برای اين منظور مناسب‌تر است. اگر از اين بگذريم که «در مثل مناقشه نيست» زيرا برای ارائه توضيح قابل درک از يک موضوع پيچيده، معمولا روش ساده‌سازی در مثال بکار می‌رود و اين باعث از دست رفتن گوشه‌های ظريف - و شايد مهمی - از موضوع مورد بحث می‌شود. در عين حال با احترام بايد عرض کنم که من با دلايلی که ايشان آروده‌اند قانع نشدم که مثال اتومبيل برای اين منظور بهتر از مثال آلبوم موسيقی نيست. بحث ما بيشتر بر جنبه‌های حقوق کاربر و در مرحله بعدی کيفيت فنی نرم‌افزار متمرکز است. شايد اگر درباره زيبايی رابط گرافيکی يا مسائل مربوط به آن بحث می‌کرديم مثال آلبوم موسيقی مناسب‌تر بود، ولی در جايی که از ضايع شدن حق کاربر صحبت می‌کنيم يا می‌خواهيم راهی برای اطمينان از کارايی نرم‌افزارها پيدا کنيم و در نتيجه از روشهای منطقی و استدلالی برای اثبات ادعاهايمان استفاده می‌کنيم، جايی برای ارزيابی «جوهره‌های خلاقانه و ذهنی» وجود ندارد. بد نيست برای روشن شدن موضوع دوباره مفهوم سيستم‌عامل را - که محور اصلی بحث در اين اين مقاله چند قسمتی و از جمله مثال خريد اتومبيل است - در ذهن خود مرور کنيم. سيستم‌عامل نرم‌افزاری است برای تسهيل ارتباط کاربر انسانی با کامپيوتری که تنها زبان باينری می‌داند، و برای بروز «جوهره‌های خلاقانه و ذهنی» «در گستره وسيع ايده‌های خلاقانه» ساخته نشده. يک نرم‌افزار مجموعه‌ای از اجزاست که با رابطه‌ای منطقی (Logical) هدف يا اهداف خاصی را دنبال می‌کنند در حالی که يک قطعه موسيقی مجموعه‌ای از سازهای گوناگون است که به توليد اصواتی بصورت ملودی، ريتم و... می‌پردازند که ممکن است هم جهت باشند يا نباشند و هدف خاصی را دنبال بکنند يا نکنند. و اين کاملا به نظر آهنگساز و کار «خلاقه» او بستگی دارد. هر کسی هم دوست نداشت می‌تواند آن آلبوم موسيقی را خريداری نکند. ولی آيا يک برنامه‌نويس می‌تواند برنامه‌ای مثلا برای ويرايش متن بنويسد که در آن هر بار عمل ذخيره (Save) انجام شود، تمام محتوای فايل پاک (Clear All) گردد؟! و برای در اختيار گذاردن اين نرم‌افزار از ديگران پول هم بگيرد و بگويد هر کسی از کارکرد اين نرم‌افزار ناراضی است می‌تواند نرم‌افزار ديگری بخرد!؟ مسأله اين است که نتيجه عملکرد نرم‌افزار وی - پاک شدن فايل نوشتاری - خلاف هدف نرم‌افزار - اديتور متن - است و بنابراين کارش غيرمنطقی و قابل انتقاد است در حالی که کار آهنگسازی که دو ملودی يا دو ساز را در يک قطعه برضد هم بکار می‌گيرد قابل انتقاد نيست هر چند که ممکن است منطقی به‌نظر نرسد. توجه داريد که در جمله قبلی منظور از «انتقاد»، نقد هنری - که موضوعی خارج از بحث ماست - نمی‌باشد.