دوازده سال و دو ماه از زمانی که اولین برنامهام را نوشتم [و درکی نسبی از آن داشتم] میگذرد. این که چرا آن زمان را به خوبی به یاد دارم موضوعی نیست که بخواهم اینجا به آن بپردازم. اینجا موضوع مسیری را که در طول این دوازده سال در دنیای کامپیوتر و تکنولوژی طی کردهام را سعی میکنم بازگو کنم.
یادگیری زبانهای برنامهنویسی، امروز به مدد اینترنت و منابع مختلف، بسیار سادهتر از ۱۰ سال پیش است. در آن دوران و به خصوص دوران پیش از اینترنت تنها راه یادگیری، خرید انواع کتابهای آموزشی بود که ترجمه آنها هم در بسیاری موارد گنگ و نامفهوم بود. خاطرم هست که حتی خوانندههای حرفهای هم همواره از این پیچیده بودن ترجمهها شاکی بودند. یک دلیل عمده این موضوع نبودن اتفاق نظر در مورد اصطلاحات خاص بود و همه چیز برای اولین بار ترجمه میشد.
اما نتیجه این یادگیری طاقت فرسا برای من، درک یک مفهوم ساده بود. کسانی که ساعت ها تلاش میکنند تا برنامه هایی بنویسند که مشکلات دیگران را حل میکند؛ باید پاداشی درخور دریافت کنند. اما تعیین میزان پاداش اصلا ساده نیست. دنیای پیچیده تکنولوژی٬ مخصوصا در آن دوران که سرعت تحولات بسیار زیاد بود و آینده کاملا ناشناخته (تا حدودی همچنان همینطور است)٬ به این معنی بود که هرکسی میتوانست با چند خط کد کامپیوتری سختترین کارها را تبدیل به برنامههای کامپیوتری کند؛ بنابراین معیارهایی مثل ساعت کار یا حجم برنامه اصلا ملاکهای مناسبی نبودند. تنها موضوعی که برای من روشن مینمود، این بود که در نتیجهی دریافت این پاداش باید برنامهنویس تشویق بشود تا برنامههای بهتری طراحی کرده و ایدههای جدیدی برای حل مسائل جدید پیدا کند.
در طول چهار سال دبیرستان به یادگرفتن ادامه می دادم و مسیرهای جدیدی را تجربه می کردم و در همین مدت همچنان این ایده و بسیاری ایدههای مشابه را در ذهن می پروراندم. در جامعهای که نتیجهی کار امسال من در کمتر از یک ساعت کپی میشود؛ چطور ممکن است کسی موفقیتهایی مشابه دیگران در کشورهای دیگر به دست بیاورد؟ این یکی از سوالهای اساسی بود که در طول آن سالها همواره در ذهنم بود. خاطرم هست در یک مورد خاص متنی در مورد حق کپیرایت نوشتم و در برد مدرسه قرار دادم. نوشته در پاسخ به خبری بود در یکی از سایتهای خبری آن زمان در باب نقض حق کپی رایت تولیدکنندگان برنامههای کامپیوتری در داخل ایران. این نوشته به شدت نقض حق کپیرایت تولیدکنندگان ایرانی را محکوم می کرد اما در همان نوشته اصرار داشت بر اینکه نیازی نیست قوانین کپی رایت جهانی در ایران رعایت بشود. این نوشته از دو جهت برای من عجیب بود. در درجه اول برای اینکه از دیدگاه اخلاقی، من قادر به درک تفاوت بین برنامه تولید خارج و داخل نبودم٬ اگر نقض حقوق کسی در داخل ایران غیر اخلاقی است و ما مبنای استدلال خود را بر اساس اخلاق گذاشتهایم؛ چطور نقض حقوق دیگرانی که خارج از مرزهای ما هستند امری است اخلاقی؟!
اما موضوع مهمتر، که کمی بیشتر طول کشید تا درک کنم، این بود که عدم رعایت حق کپی رایت تولیدکنندگان خارجی در درجه اول به صنعت تولید نرم افزار در داخل ایران ضربه می زد. در تمام شرکتها٬ چه ایران خودرو با چند ده هزار کارمند و کارگر و چه شرکتی تازه تاسیس با پنج کارمند از یک مجموعه نرم افزار استفاده می کردند! نرم افزارهایی که برای شرکتهای بزرگ طراحی شده بودند و هزینه خریداری آنها خارج از ایران ممکن بود تا چند ده هزار دلار برسد. چنین نرم افزارهایی در یک شرکت کوچک هم مورد استفاده قرار می گرفت بدون اینکه اصلا نیازی به تمام امکانات این نرم افزار وجود داشته باشد. به زبان ساده تر، در بسیاری موارد ما از چاقوی جراحی برای بریدن پرتقال استفاده میکردیم. به طور طبیعی اگر در بازاری زندگی میکردیم که حقوق کپیرایت رعایت می شد بسیاری از این شرکتها مجبور به استفاده از نرم افزارهای دیگران بودند که در بسیاری موارد میتوانست حتی تولید داخل ایران باشد.
ورود من به دانشگاه همزمان بود با بحثهای داغی در مورد ایدهی برنامههای کد باز در ایران. غنای زبان فارسی اجازه میدهد تا جملهای که یکی از مهمترین پایه گذاران این ایده در توصیفش بیان کرد را به سادگی ترجمه کنم. ریچارد استالمن به دنبال این بود که تمام برنامهها به طور آزادانه در اختیار همه قرار داشته باشه. آزادانه به این معنی که کد منبع برنامهها به طور رایگان در اختیار همه قرار گرفته و همین طور از نظر مجوز استفاده هیچ محدودیتی برای استفاده کننده وجود نداشته باشد جز یک مورد، برنامههایی که با استفاده از کد چنین برنامههایی تولید می شوند هم باید کد برنامه خود را در اختیار دیگران قرار بدهند؛ این ایده به طور خلاصه به کپیلفت، خلاف کپیرایت، معروف شد.
پیشبینی واکنش من در برابر چنین ایدهای اصلا سخت نیست. ساعتها در دانشکده با دوستانم بحث و جدل می کردم که چرا این ایده بیمعنی است و جایگاهی در دنیای واقعی ندارد. به همان میزان که در آن دوره به درستی دیدگاهم اعتقاد راسخ داشتم، امروز اشتباه بودن برداشت من اثبات شده. هستهی اصلی سیستم عاملهایی که بسیاری از برنامههای کمپانیهایی مثل گوگل و فیسبوک روی آن کار میکنند، مبتنی بر کدی است که بر اساس همین ایده طراحی شد. به طور خلاصه این ایده با کمی تغییرات به خوبی کار کرد و همهگیر شد و پیشبینی من، با تمام اطمینانی که به تحلیلم داشتم، اشتباه از آب درآمد. اما سوالی که مدتها طول کشید تا برایش پاسخی پیدا کنم این بود که چرا این ایده کار کرد و این چنین همهگیر شد؟ چرا افرادی در سرتاسر دنیا حاضر هستند ساعتها کار و تلاش خودشان را به رایگان در اختیار دیگران قرار بدهند؟ در ابتدا به نظرم رسید شاید ایدهآلنگری و روحیهی انقلابی که در جامعهی برنامهنویسی و هکرها وجود دارد، عامل پیشرفت برنامههای مبتنی بر کد باز بوده. اما همیشه این شک را هم داشتم که روحیه انقلابی همان قدر که پرقدرت هست به سرعت هم جای خودش را به مسائل دیگر می دهد. تب تند زود به عرق مینشیند. پس علت این که این ایده به این شکل فراگیر شده چیست؟
سال آخری که در ایران بودم پاسخ این سوال را تاحدی پیدا کردم. در طول آن سال درگیر پروژهی کد-بازی بودم که هدفش ایجاد یک شبیهساز گرافیکی برای روباتهای واقعی بود. این پروژه بین دانشگاههای مختلف در اروپا و آمریکا اجرا میشد و کار روی این پروژه در درجه اول فرصتهای جدیدی را برای من ایجاد میکرد. اما بعد از مدتی کار روی این پروژه متوجه شدم پاداش کار روی این پروژه بیشتر از صرفا آشنایی با محققین در نقاط دیگر دنیاست. کسانی که روی چنین پروژههایی کار میکنند در جامعه کوچکی که حول این پروژهها ایجاد میشود مورد توجه قرار می گیرند و تلاش آنها به شکلهای مختلفی، که مهمترینش نوعی اعتبار اجتماعی/حرفهای است، مورد تقدیر قرار میگیرند. اما لازمهی پیدایش این اعتبار، رد و بدل کردن آزادانه اطلاعات و کدهای کامپیوتری است. در دنیای مجازی و در کنار ایدههای کد باز، جوامعی شکل گرفت که ظرف مدت کوتاهی تبدیل به جوامع آزادی شدند که در آنها اعضا آزادانه و بدون هیچ اجباری به یکدیگر کمک میکردند٬ اما این کمکها بی پاسخ نمیماند. اعضای جامعه در همان جامعه اعتبار پیدا می کردند و حتی این اعتبارات به دنیای واقعی هم گسترش پیدا میکرد و فرصتهای شغلی جدیدی را برای اعضا ایجاد میکرد.
امروز٬ بسیاری برنامه های کامپیوتری بدون هیچ هزینهای تولید و مورد استفاده قرار میگیرند. مکانیزمهای تقدیر از کسانی که در این پروژهها مشارکت میکنند هم نسبت به گذشته پیشرفتهتر شده. کمپانی گوگل هرساله برنامهای تابستانی برگزار می کند به نام Google Summer of Code. در این برنامه تعداد زیادی برنامهنویس٬ که بیشترشان دانشجو هستند٬ تابستان خود را صرف کار روی یک پروژهی کد باز می کنند. این پروژهها معمولا ربطی به پروژههای خود گوگل ندارد و دانشجوها هرکجای دنیا که هستند با کمک یک مربی روی یک پروژه کار میکنند و تمام کد تولید شده در نهایت به صورت باز در اختیار همه قرار میگیرد. دلیلی که بسیاری از این دانشجوها تصمیم میگیرند روی چنین پروژههایی کار کنند٬ به جای مثلا کار در شرکتهای برنامه نویسی٬ در درجه اول اعتباری است که در کنار کسب تجربه روی چنین پروژههایی دریافت میکنند٬ همه این دانشجوها با افتخار در رزومه کاریشان کار روی این پروژهها را درج میکنند و در آینده فرصتهای مناسب شغلی برای این دانشجوها به مدد همین مشارکت فراهم می شود. همین امروز بسیاری شرکتها به عنوان رزومه کاری لینک بیت باکت برنامهنویس را درخواست میکنند. سایتهای دیگری مثل Stack Over Flow که یکی از منابع پرطرفدار برای بسیاری برنامه نویسها برای حل مشکلات برنامهنویسی است هم بر اساس مکانیزمی مشابه کار میکند. هرکس هرچه سوالات بیشتری پاسخ بدهد امتیاز بیشتری دریافت میکند و توسط جامعه کوچکتری که در آن فعالیت میکند مورد تقدیر قرار می گیرد. پروفایلهای کاربران این سایت ها محلی است برای بسیاری از شرکت های تکنولوژی که به دنبال استخدام برنامهنویسهای قوی میگردند. در آخرین بررسی که انجام شده تعداد و کیفیت پاسخ گویی در این سایت ارتباط مستقیمی با میزان درآمد پاسخ دهنده دارد. اما از این جالبتر این نکته است که نزدیک به نیمی از کسانی که در این سایت فعالیت می کنند در پاسخ به سوال در مورد مدرک تحصیلی گزینه «من به صورت خودآموز برنامهنویسی را آموختم» را انتخاب کردند و در مرحله بعد کسانی با مدرک تحصیلی در زمینهی کامپیوتر قرار گرفته اند.
همین مکانیزم در سایت معروف Wikipedia عاملی است که در طول حدود یک دهه این سایت را تبدیل به یکی از پرمخاطبترین سایت ها در اینترنت کرد. این در حالی است که بسیاری در گذشته٬ و حتی امروز٬ با دید شک به دانشنامهای که هر کس امکان تغییرش را داشته باشد نگاه میکنند. اندرو لیه در کتاب «ویکیپدیا: چطور جماعتی ناشناس وسیعترین دانشنامه دنیا را ایجاد کردند» بسیاری از مشکلاتی که در مسیر ایجاد ویکپدیا وجود داشت را توضیح می دهد. مشکلاتی که همواره بین دو گروه محل بحث بود: گروهی که به کنترل از بالا و کنترل کاربران اعتقاد داشت و در طرف مقابل گروهی که معتقد است مبنای اعتماد و آزاد گذاشتن کاربران برای ایجاد جامعه ای پویا و پیشرو کافی است. در بسیاری موارد اینطور به نظر میرسید که هیچ راهی وجود ندارد جز اعمال محدودیت و کنترل از طرف مسئولین سایت در حالی که در همین جامعه کسانی راهحلهایی ارائه دادند که هم چنان باز بودن جامعه ویکیپدیا را تضمین میکرد و در عین حال کیفیت و دقت در تولید مطالب را در نظر می گرفت. در اکثر این موارد راه حل عبارت بود از تبدیل چالش ها به فرصتی برای کسب اعتبار برای اعضای جامعه ویکیپدیا.
آن چه مرا زمانی که وارد دانشگاه شدم به اشتباه انداخت این بود که تنها راه تشویق برنامه نویسها برای ادامه تلاش و نوآوری را تامین مالی مستقیم آنها میدیدم. همچنین میدیدم که بسیاری تنها از این منابع موجود در شبکه استفاده میکنند و چیزی به آن نمیافزایند. یا کد باز را میگیرند و در برنامههای خود میفروشند. آنچه در قرن حاضر بسیار قدرتمندتر عمل می کند به رسمیت شناختهشدن تلاش افراد توسط جامعهایست که در آن فعالیت دارند و این فقط در یک جامعه آزاد امکان وقوع پیدا میکند٬ جامعه ای که افراد بدون اجبار و محدودیت امکان استفاده از تلاش یکدیگر را داشته باشند، چه اینکه اگر مشارکت در این پروژه ها اجباری میبود بسیاری از اعتبارهای مجازی در جوامعی که حول این پروژه ها شکل گرفته معنی خود را از دست میداد و بعد از مدتی کل پروژه از هم میپاشید.
شاید واضحترین جنبه در این ماجرا بدون اجبار و محدودیت بودن باشد. یعنی آزادی برای انتخاب کار کردن در پروژه مطلوب که خلاف رویکرد انترپرایز قدیمی است. هر کسی وقتی بر روی چیزی کار میکند که دوست دارد، شور و علاقه بیشتری نشان میدهد و این موضوعی انسانی است.
امروز روش شرکتهایی مثل گوگل در فراهم آوردن محیط آزاد برای کار زبانزد شده است. مهمترین نکته در شرایط کاری این شرکتها، نه وجود پلیاستیشن و ورزشگاه، بلکه آزادی انتخاب روش کاری و تیم و خود کار و از آن مهمتر، امکان پیاده کردن ایدههای خود شخص در کارش است.
هر چند گوگل جامعهای متن باز نیست (در خیلی موارد)، اما به خوبی از الگوهای آن استفاده کرده است. در این ایده هر نوع محدودیتی در رابطه با پخش و تغییر سیستم، ضداخلاقی و ضداجتماع شمرده میشود. در واقع برنامهنویسانی که حرف آنها را زدم، همانهایی که از کدهای آزاد در برنامههای متن بستهی خود استفاده میکردند، با وجودی که در کوتاه مدت سود میکردند، اما از دراز مدت منزوی شده و تنها میتوانستند از قدرت شخصی خود استفاده کنند. جامعه چیزی یک پارچه است و در جامعه متن باز هر کس آزادی انتخاب دارد، بنابراین کمک کردن یا نکردن در اراده خود شخص است. بنابراین کسی که کمک نمیکند، به او کمک نمیشود. جامعه متن باز، خود جامعه انسانی است. جامعه متن باز بازگشت برنامهنویس از چرخدنده بودن به انسانی آزاد و ارادهمند است.