داستان سخت افزار آزاد

روزگاری، در دنیایی که رو به پیشرفت های صنعتی بود و هرکسی داشت روی چیزی کار می‌کرد تا این دنیا رو جای بهتری برای زندگی کنه، عده‌ای هم بودند که نرم افزار درست می‌کردند. عده‌ای که ریاضیات و برق و علوم کامپیوتر خونده بودن و داشتند چیزهایی که در دانشگاه یاد گرفته بودند رو به مرحله عمل می‌رسوندند. بعضی‌هاشون حتی پا رو فراتر گذاشتن و مفاهیم جدیدی وارد این عرصه کردند. کامپیوترهای رومیزی ساختند و بسیاری از فرایندهای حوصله سربر دستی رو، به فرایندهای اتوماتیک و نیمه‌اتوماتیک کامپیوتری تبدیل کردند. در اون دوران، بسیاری از کامپیوترها رابط کاربریشون مفسر BASIC بود و شما برای اجرای یک نرم افزار، نیاز داشتید که کد اون رو بدونید. پس اگر نرم افزاری می‌خریدید، احتمالا فروشنده کد منبع رو به شما می‌داد (حالا به فرم فلاپی و ... یا کد نوشته شده روی کاغذ که خودتون برید تایپ کنید و اجراش کنید). بعضی نرم افزارها هم، کد منبعشون به عنوان منبع آموزشی برای دانشجویان و یا علاقمندان به برنامه نویسی در دسترس بود و میتونستند بعد از تهیه یک کپی از اون نرم افزار، سورسش هم داشتید. یا اصلا اون نرم افزار رو نیاز نبود بخرید، احتمالا یه استاد دانشگاه خوش ذوقی، شروع کرده بود کامنت گذاشتن روی کدها تا دانشجوهاش رو با اون نرم افزار آشنا کنه و اون کامنت ها در قالب کتاب یا مقاله در دسترس بودند. اما در این دنیای گل و بلبل، یک باره شرکتهایی که داشتند نرم افزار تولید می‌کردند، دیدن که خیلی به نفعشون نیست که کد نرم افزار رو بدن دست مشتری ها. گذشته از اون سیستم های عامل مثل یونیکس، مکینتاس (نسخه های اولیه مکینتاش بر پایه یونیکس نبودند)، داس و ... ؛ همه قابلیت اجرای برنامه های دودویی (باینری) رو داشتند. پس تصمیم خیلی ها این شد که کد رو نه در اختیار مشتری بذارن، نه در اختیار دانشگاهها. همین باعث شد که خیلی از برنامه نویس‌ها، عصبانی بشن. عصبانی از این که شاهکارهای صنعت نرم افزار کدشون بسته شده و امکان دسترسی بهش نیست. عصبانی از این که نمی‌تونن نرم افزارها رو طوری تغییر بدن که بهتر کار کنه و این تغییرات رو به تولید کننده اصلی بدن. عصبانی از این که دیگه نمی‌تونن برای سخت‌افزارهاشون درایور بسازن و اون رو به سیستم اضافه کنن. همه اینها باعث شد که توسعه دهنده‌ها به فکر جایگزین هایی بیفتن. مثلا آقای اندرو استوارت تنن باوم؛ برای مقابله با این انحصار در دانشگاه، شروع به نوشتن سیستم عاملی کرد و مینیکس رو برای آموزش درس سیستم عامل به دانشجوهاش ساخت. سورس کد مینیکس به همراه تمام تعاریف و مستندات و راهنماهاش رو در کتابی منتشر کرد و به این شکل، یک حرکت اعتراضی نسبت به سیاست های AT&T رو به کرسی نشوند. اما ماجرا به اینجا ختم نشد. در اواسط دهه ۸۰ میلادی، آقایی شروع کرد به کار کردن در دانشگاه MIT. پروژه‌ای داشت و در این پروژه بارها به مشکل خوردند. مشکلاتی که واضحا مرتبط با کد نرم افزارها و درایورها می‌شد ولی دانشگاه و تولید کننده نرم افزار، حاضر به ارائه کد منبع نبودند. این آقا هم عصبانی شد، عصبانی تر از هر شخص دیگری. نتیجتا از انجام اون پروژه ها انصراف داد و با خودش فکر کرد که : وقتی غذا درست می‌کنیم و دوستامون خوششون میاد، احتمالا دستورش رو بهشون میگیم. احتمالا هم وقتی پیش خودشون مهمون می‌شیم و می‌بینیم همون غذا رو درست کردن، خوشحال میشیم. چون ممکنه تغییری داده باشن درونش. ممکنه که یه ادویه جدید بهش اضافه کرده باشن. اینطوری هرچقدر زمان بگذره دستور غذای ما بهتر میشه. حالا فکر کنید من دستور غذام رو پیش خودم نگه دارم. به کسی هم ندم. کسی هم دستور این غذا رو جایی پخش کرد تهدیدش کنم و به زندان بندازمش و حتی ازش غرامت بگیرم و بهش بگم دزد. به نظر من، نرم افزار مثل دستور غذا میمونه ... این آقا، شخصی نبود جز «ریچارد متیو استالمن» یا همون ریچارد استالمن معروف. ایشون بعد از انصراف از این پروژه‌ها، شروع کرد به ساختن ابزارهایی که اون زمان کد منبعشون در دسترس نبود، شروع کرد به تدوین تعداد زیادی مجوز عمومی (که معروفترینش GPL عه) و شرایط آزادی نرم افزار رو تعیین کرد. و اینطور بود که جنبشی به نام «نرم افزار آزاد» شکل گرفت. نرم افزار آزاد سالها توسعه یافت. ابزارهای گنو، هسته لینوکس، سیستم عامل های خانواده BSD، نمونه های آزاد از نرم افزارهای انحصاری موجود و ... . همه پا به عرصه وجود گذاشتند و افراد زیادی شروع کردند به توسعه دادن به هرشکلی. یکی ابزارهای مورد نیاز رو میساخت، یکی پیشنهاد فیچر میداد، یکی اون فیچر رو میساخت و به کد اصلی پیشنهادش میکرد، یکی شروع میکرد ترجمه اون نرم‌افزار به زبان خودش و هیچ کدوم هم قانونا مشکلی ایجاد که نمی‌کرد هیچ، حتی باعث تشویق هم می‌شد. اما در این سالها که نرم افزار با چنین شتابی رو به جلو داشت حرکت می‌کرد، یک دغدغه جدید مطرح شد. علیرغم این که نرم افزارهای آزاد بسیاری وجود داشتند، کسی اهمیت چندانی به سخت افزار نمی‌داد. سخت افزارهای بی‌شماری در بازار موجود بودند که بدون مشکل می‌تونستند نرم‌افزارها و سیستم‌عامل‌های آزاد رو اجرا کنند. شاید همین باعث شده بود که طراحان سخت افزار، به فکر ساختن سخت افزار متن‌باز یا آزادی نیفتند. در سال ۱۹۹۷، سندی با عنوان «تعریف متن‌باز» منتشر شد که باعث شد تاجرها و صنایع بزرگ هم مایل به این بشن که به این جنبش بپیوندند. در این سالها، از ۹۷ تا ۲۰۰۲ خیلی از اسامی آشنای دنیای تکنولوژی (که در عین حال به انحصارگری هم معروفند) به سمت «متن‌باز» آمدند. نرم افزارهای خودشون رو بر پایه نرم‌افزارهای متن‌باز ساختند و یا حتی به این دست نرم‌افزارها کمک مالی و فنی و ... کردند. در همین سالها، عده‌ای به خودشون اومدند و دیدن که لازمه در دنیای سخت افزار هم چنین اتفاقی بیفته. چرا نباید کسی بتونه خودش سخت افزارش رو بسازه؟! چرا نباید دیزاین سخت افزاری آزاد داشته باشیم؟ و از این دست «چرا» های شگفت انگیز که باعث شد سخت افزار آزاد پا به عرصه وجود بذاره. چرا به سخت‌افزار آزاد نیاز داریم؟این سوال خوبیه، حقیقتا نیاز به سخت افزار آزاد از دو جهت مطرحه : من حق دارم بدونم که کامپیوترم، گوشی موبایلم، بردی که پریروز برای شرکتی طراحی کردم، چراغ خواب هوشمندم و ... چطور دارن کار میکنند. این یک حقه، نه یک امتیاز. پس حداقل چیزی که تولیدکننده این سخت‌افزارها باید در اختیارم بذارن، معماری سیستمه. من حق دارم بدونم داده‌ای که این سخت افزارهای خاص پردازش می‌کنند، کجا میره و کجا ذخیره میشه و ... . در مورد حق اول، احتمالا سوال شما اینه که از کجا معلوم این چیزی که روی سیستم شما قرار گرفته همونیه که سورسش رو بهت دادن؟ باید پاسخ بدم که درسته، حق با شماست. اما مجوز آزاد به شما امکان مهندسی معکوس و همچنین زدن ردهای مشکوک (که در کد منبع یا مستندات بهش اشاره نشده) رو میده. پس جای نگرانی نیست. در واقع، ما باید این حق رو داشته باشیم که بتونیم به موقعش، مهندسی معکوس کنیم و ابزارهامون رو بشناسیم. در مورد دوم هم خیلی ها می‌پرسن مگه سخت افزار هم در پشتی داره؟ بله داره. بخصوص این که معمولا پردازنده و کارت شبکه Onboard و ماژول Wi-Fi عموما تولید یک شرکت هستن (صحبت در مورد لپتاپ و گوشی موبایل) یا اگر هم نباشن یا حتی اگر از نوع غیرآن‌بورد باشن هم درایورهای لازم برای تعامل با پردازنده احتمالا از نظر سازنده های اون پردازنده، تاییدیه‌ای دریافت کرده. پس خیلی واضحه که میشه از طریق سخت افزار هم درپشتی در سیستم قرار داد و از اونجایی که در لایه فیزیکال قرار دارند (منظورم OSI نیست، به طور کلی عرض می‌کنم) اون tracker های بزرگ هم معمولا خیالشون راحته که یک جریان داده‌ای همیشه دارند. نمونه هایی از سخت افزار آزادبردهای آردوینو : بردهای مبتنی بر AVR هستند که دیزاین آزاد دارند. گذشته از اون، نرم افزارهایی که توسعه دادند هم آزادن و Firmware این بردها هم با مجوز آزاد در دسترسه (لینک) پردازنده RISC-V : ریسک فایو خودش نیازمند یک مطلب جدائه ? اما به طور کلی میشه گفت که این پردازنده با دیزاین آزاد ساخته شده و رقیب سرسختی برای ARM میتونه باشه. البته معماری و سازمانی که داره به MIPS نزدیک تره (لینک)پروژه پیوریسم : لپتاپها و موبایلهای آزاد که حافظ امنیت و حریم خصوصی شما هستند (لینک)البته نمونه ها که بی‌شمارند، ولی در اینجا همین سه نمونه کافیه که ببینید چطور مفهوم سخت افزار آزاد هم طرفدارهای خودش رو پیدا کرده و توسعه‌دهنده ها رو هم تونسته به خودش جذب کنه. مدت زیادی بود که نوشتن این مطلب رو در ذهن داشتم، اما نمی‌تونستم انسجام لازم رو بهش بدم. امروز خوشبختانه این امر محقق شد. تونستم در موردش بنویسم. تونستم در مورد ایده کلیش صحبت کنم. اگر وقت و عمری باقی باشه، احتمالا در یک سری مقاله کلیت ساخت یک سیستم آزاد رو توضیح خواهم داد. فعلا تا همینجا هم احتمالا چشم و ذهن شما، خسته شده. امیدوارم دقایقی که بابت خوندن این مطلب صرف کردید، براتون مفید بوده باشه.