Showing posts with label Open Source. Show all posts
Showing posts with label Open Source. Show all posts

Thursday, January 04, 2007

Open Source(1)

استاد مارتین فاولر در آن مقاله Is Design Dead? خودشان یک جمله ای دارد که برای من خیلی جالب بود: "In software any term means many things". حتما شما هم خیلی اوقات این قضیه را احساس کرده اید. یک کلمه را که از چهار نفر مختلف سوال کنی، پنج تا برداشت مختلف از آن دارند، و البته شاید هیچ کدام آنها درست نباشد و در عین حال هیچ کدام هم غلط نباشد.

اپن سورس هم از همین دست کلمات است، هر کسی بنابه نیازش یک برداشتی از آن می کند. خیلی ها احساس می کنند نرم افزار اپن سورس یعنی یک نرم افزاری که مجانی است.

از طرفی هر روز بر اهمیت نرم افزارهای اپن سورس افزوده می شود(بعدا در مورد متداول شدن اپن سورس بیشتر می نویسم) و در مملکت ما هم چند سالی هست که به این واژه بیشتر توجه می شود، و البته دلایل متعددی دیگری است که پرداختن به این مسئله را توجیه می کند.

تصمیم گرفته ام این بحث را در چند قسمت انجام دهم، تاریخچه مختصری از اپن سورس، تعریف اپن سورس، مجوزهای(license) اپن سورس و مروری بر نرم افزارهای اپن سورس. البته این بحث برای خود دنیایی دارد که تمام شدنی نیست ولی سعی می کنم از زیاده گویی پرهیز کنم و فقط به مباحثی بپردازم که احتمالا به درد کسی می خورد(و البته هیچ چیزی نیست که به درد هیچ کسی نخورد!).

تاریخچه اپن سورس:

با وجود اینکه هیچ وقت از تاریخ خوشم نمی آمد، ولی نمی دانم چرا تاریخچه ها را دوست داشتم. تاریخچه اپن سورس هم تاریخچه جالبی است. البته لفظ اپن سورس عمر زیادی ندارد و اولین بار سال 1998 بود که بکار برده شد. ولی پروژه های اپن سورس سابقه اش به پیش از این سال بر می گردد. بیشتر مطالب این قسمت را از کتاب Understanding Open Source Software Development چاپ Addison Wesley با مقدار زیادی تغییر(یا بهتر بگویم با مقدار زیادی تحریف!) آورده ام. سعی کرده ام هر جایی که لازم بوده لینک اضافی هم بگذارم.

در طول تاریخ چند ده ساله نرم افزار چند اتفاق افتاده که روی وضعیت کنونی دنیای اپن سورس خیلی موثر بوده. سعی کرده ام در اینجا چند تا از این اتفاقات را بطور مختصر بررسی کنم، این تاریخ مختصر را بدون هیچ دلیل خاصی به سه دوره کاملا بی ربط تقسیم کرده ام:

از توسعه یونیکس تا انتشار BSD:

يکي از اتفاقات جالب و موثر در اين زمينه، رأي دولت آمريکا بر ضد غول مخابراتي AT&T بود، در سال 1956 دولت آمريکا شرکت AT&T را از ورود به زمينه هاي غير مخابراتي منع کرد، اين رأي باعث شد که سيستم عامل يونيکس که در آزمايشگاه bell بوسيله دنيس ريچي و کن تامپسون توسعه يافته بود نتواند به فروش برسد، داستان از اين قرار بود که تامپسون علاقه مند به اجراي بازي Space Travel بر روي کامپيوتر PDP-7 بود و براي اين کار يک سيستم عامل کامل نوشت(راست و دروغش باشد پای آن هایی که این داستان را تعریف کرده اند ولی در هر حال این پایه همان سیستم عاملی شد که بعدا اسمش را یونیکس گذاشتند)! چون AT&T از فروش محصولات غير مخابراتي منع شده بود، متن يونيکس را در بين دانشگا هها و مؤسسات تحقيقاتي توزيع کرد.

يکي ديگر از حرکتهاي مؤثر در اين زمينه توزيع نرم افزارهاي دانشگاه برکلي بود که در سال 1977 شروع شد، گروه BSD سيستم عامل يونيکس را توسعه داد و ويژگيهاي جديدي را به آن اضافه کرد، اين سيستم عامل بعدها در Arpanet مورد استفاده قرار گرفت. گروه BSD همچنين پروتکل TCP/IP رابر روي سيستم عامل خود پياده سازي کرد، که بعدها باعث توسعه سريع اينترنت شد .

نرم افزارهاي مهمي که توسط اين گروه توسعه يافت BIND(سرور(DNS و Send Mail(mail server) بود، این نرم افزارها هنوز هم بطور گسترده ای مورد استفاده قرار می گیرد.

در سال 1984 با اتمام انحصار، AT&T برعليه BSD شکایت کرد، دعواي اين دو که تا اوايل 1990 نيز ادامه يافت، باعث شد که بسياري از توسعه دهندگان به فکر توسعه سيستم عامل هاي ديگري همانند Linux ، Free BSD و Open BSD بيافتند. تأثير مهمي که داستان BSD بروي جنبش نرم افزارهاي متن باز گذاشت، تغيير در ايدئولوژي ها و نحوۀ نگرش جديد رهبران اين جنبش بود.

از درایور پرینتر تا بزرگترین پروژه تاریخ:

یکی دیگر از حوادث مهمی که در تاریخ نرم افزارهای متن باز اتفاق افتاده تاسیس بنیاد نرم افزارهای آزاد (FSF=Free Software Foundation) توسط ریچارد استالمن است. داستان به آن زمانی مربوط می شود که استالمن در آزمایشگاه هوش مصنوعی دانشگاه MIT کار می کرد و اولین پرینتر لیزر جت شرکت زیراکس را دریافت کرد. گویا درایور این پرینتر مشکل کوچکی داشته که به راحتی قابل حل بوده، به همین خاطر استالمن از شرکت زیراکس می خواهد که سورس برنامه را در اختیار او قرار بدهند تا او بتواند تغییرات مورد نظرش را بر روی آن اعمال کند ولی زیراکس از این کار امتناع می کند. بعد از این اتفاق هست که استالمن به این نتیجه می رسد که نرم افزار باید آزاد باشد و از MIT استعفا می کند و در سال 1985 بنیاد نرم افزارهای آزاد را تاسیس می کند(این که یک نفری به خاطر یک اشکال در درایور پرینتر به این نتیجه برسد که نرم افزار باید آزاد باشد و بعد از آن از جایی مثل MIT استعفا بدهد و برود یک موسسه تاسیس کند، در نگاه اول خیلی احمقانه به نظر می رسد ولی بعدا توضیح می دهم که این نگرش و حرکت استالمن چه تاثیری بزرگی بر دنیای نرم افزار داشته است)

ايدئولوژي FSF براين قرار بود که عبارت copyright – all rights reserved بايد به عبارت copyleft-all rights reversed تغيير يابد. تحت مفهوم copyleft هر کسي اجازه استفاده از نرم افزار، کپي کردن و تغيير آن را دارد، و حتي مي تواند دوباره آن را توزيع کند، ولي نمي تواند ديگران را در استفاده از آن محدود کند. همین ایدئولوژی باعث شکل گیری اصطلاح Free Software و مجوز GPL شد. این اصطلاح به خاطر ابهامی که در کلمه Free در زبان انگلیسی وجود دارد بعدا مورد انتقادات بسیاری قرار گرفت (بر خلاف تمام مواردی که معمولا دوستان کامپیوتری می گویند که در زبان فارسی معنی فلان کلمه وجود ندارد یا چند کلمه انگلیسی تنها یک معنی فارسی دارد، در این مورد فارسی واقعا شاهکار کرده. در فارسی دو کلمه آزاد(همان معنی که مد نظر استالمن بوده) و رایگان(همان معنی که مد نظر استالمن نبوده) وجود دارد که در انگلیسی به هر دوی آنها Free می گویند. همین ابهام بوده که باعث شده برخی این عبارت را به مفت افزار ترجمه کنند(زیاد جدی نگیرید)).

استالمن پس از تاسیس FSF نرم افزار های زیادی از جمله ویرایشگر emacs و مجموعه کامپایلرهای GCC را تولید کرد. ابزارهایی که استالمن و دوستانش تولید کردند بعدها در لینوکس مورد استفاده قرار گرفت و همچنین سیستم عامل لینوکس تحت مجوز GPL (مجوزی که استالمن ارائه داده بود) منتشر شد.

اتفاق مهم دیگری که همه با آن آشنا هستند شروع به کار لینوس تروالدز بر روی سیستم عامل لینوکس بود(بر سر تلفظ کلمه Linux اختلاف نظرهای زیادی وجود دارد ولی در اینجا من از همان لفظ متداول لینوکس استفاده می کنم).

تروالدز که یک دانشجوی 21 ساله بود و در دانشگاه هلسینکی درس می خواند در سال 1991 تصمیم گرفت سیستم عامل مینیکس(minix) را طوری تغییر دهد که قابلیت اجرا بر روی IBM PC 386 را داشته باشد. سیستم عامل مینیکس همان سیستم عاملی هست که توسط آندرو تننبام تولید شده و اگر کتاب سیستم عامل تننبام را دیده باشید سورس کد این سیستم عامل تقریبا نیمی از صفحات این کتاب را گرفته است.

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

از وب سرور آپاچی تا به امروز:

يکي ديگر از سالهاي به يادماندني، سال 1995 بود. سالي که در آن گروهي از توسعه دهندگان تصميم به توسعه وب سرور آپاچي گرفتند. وب سرور آپاچي براساس وب سروري که قبلاً توسط راب مک کول توسعه يافته بود با اضافه کردن تعدادي patch به آن توســعه يافت. به همين دليــــــل است که آنرا Apache Server (کــه خوانده مي شودA Patchy Server) نام نهادند.

بنياد نرم افزاري آپاچي(ASF=Apache Software Foundation) که در آن زمان تشکيل شد، امروز به يکي از بزرگترين گروههاي نرم افزاري تبديل شده است.

تا سال 1998 هنوز اصطلاح اپن سورس مطرح نشده بود و عمدتا از اصطلاح Free Software که توسط استالمن مطرح شده بود استفاده می شد. سال 1998 سالی بود که اصطلاح اپن سورس در جلسه ای که با حظور تعدادی از افراد از جمله اریک ریموند برگزار شد بوجود آمد. در همان سال و بعد از این جلسه بود که Netscape سورس مرورگر معروف خود را با نام Mozilla و تحت یک مجوز اپن سورس ارائه کرد (استاد ویکیپدیا این موضوع را مفصل تر توضیح داده اند)

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

Tuesday, November 14, 2006

جاوا اپن سورس می شود

بالاخره شرکت سان ماکرو سیستمز تحت فشار شرکت ها ،گروه ها و حتی برخی از کشورها امروز اعلام کرد که پلت فرم جاوا را بصورت اپن سورس ارائه دهد. این تصمیم شامل Java ME(Micro Edition) ، Java SE(Standard Edition) و پیاده سازی شرکت سان از Java EE(Enterprise Edition) با نام GlassFish می شود. بسیاری از کارشناسان این اتفاق را به رنسانسی در صنعت جاوا تعبیر کرده اند.

چند سالی بود که برخی از شرکت ها (علی الخصوص IBM)، برخی از کشورها(علی الخصوص چین و برزیل) و بسیاری از گروه های طرفدار اپن سورس از شرکت سان درخواست می کردند که این کار را انجام دهد، و این فشار ها تا همین امروز که سان اعلام کرد JDK 1.7 (و احتمالا JDK 1.6) را تحت مجوز GPL منتشر می کند ادامه داشت. انتشار JDK تحت مجوز GPL این اجازه را می دهد که دیگران بتوانند سورس آن را تغییر دهند ولی سورس تغییر یافته باید تحت مجوز GPL منتشر شود. به همین دلیل می توان گفت که GPL تا حد زیادی از سوء استفاده های تجاری جلوگیری می کند.

انتشار پیاده سازی مرجع جاوا بوسیله شرکت سان تغییرات و پیامدهای بزرگی را در پی خواهد داشت. اول اینکه تغییراتی که در کامپایلر، ماشین مجازی و کتابخانه جاوا داده می شود می تواند نوید ارتقای کیفیت این پلت فرم را در آینده بدهد. دوم اینکه زبان جاوا در آینده طرفداران بیشتری پیدا خواهد کرد. می توان گفت جاوا تحت سیستم عامل لینوکس ( که آن هم تحت مجوز GPL منتشر می شود) می تواند به حاکمیت C++ خاتمه دهد و توسعه دهندگان لینوکس روی خوش(تری) به جاوا نشان دهند. همچنین جاوا می تواند تحت سیستم عامل هایی که پیاده سازی از جاوا در آن وجود ندارد پیاده سازی شود. سومین تغییری (که برای ما ایرانی ها مهمترین تغییر نیز هست) این است که جاوا از انحصار شرکت های امریکایی خارج می شود. در حال حاظر(تا آنجایی که من خبر دارم) شرکت های Sun Microsystems، IBM، Bea و Oracle پیاده سازی خود را از JDK را ارائه می دهند که بر اساس قوانین امریکا صادرات این شرکت ها به ایران غیر قانونی است. البته پیاده سازی های اپن سورسی هم از JDK وجود دارد که عمدتا (هنوز) نصفه و نیمه هستند. از جمله مطرح ترین آن ها پروژه Harmony (تحت مجوز Apache) و پروژه Gnu Classpath (تحت GPL) هست. البته احتمالا هارمونی حتی پس از انتشار اپن سورس JDK هم به کار خود ادامه می دهد چرا که همان طور که گفتم هارمونی تحت مجوز آپاچی منتشر می شود(که یک مجوز اپن سورس ولی Commercial Friendly هست) که تفاوت های فلسفی عمیقی با GPL دارد، ولی پروژه های دیگر اپن سورس (که تحت GPL هستند) ممکن است خود را با پیاده سازی سان تطبیق دهند یا با آن ترکیب شوند!

کلام آخر اینکه تغییرات در JDK به معنی عدم سازگاری بین پیاده سازی های مختلف JDK نیست. تمام تغییرات ایجاد شده در JDK برای اینکه به اسم جاوا منتشر شود باید تمام تست های TCK(Tool Compatibility Kit) را پاس کند.

Related Links:
https://openjdk.dev.java.net/
http://www.infoq.com/news/2006/11/open-source-java