الأربعاء، 21 أغسطس، 2013

نشأة البرمجيات الحرة مفتوحة المصدر (5)

هذا هو الجزء الخامس من سلسلة مقالاتٍ أتحدث فيها عن نشأة البرمجيات الحرة مفتوحة المصدر، و يمكنكم قراءة الأجزاء السابقة من الروابط التالية:
الجزء الأول:
الجزء الثاني:
الجزء الثالث:
الجزء الرابع:


و أنصحكم بشدةٍ بقراءة الأجزاء السابقة قبل قراءة هذا الجزء؛ حتي تستطيعوا استيعاب الأمور كما يجب، و حتي تعتادوا علي طريقتي في الحكي و الترجمات التي أقدمها للمصطلحات التقنية الإنقليزية :)

***
كنتُ قد ذَكرتُ في المقال السابق أن مشكلة أنظمة التشغيل المختلفة المبنية علي نواة اللينوكس ترجع إلي عدم وجود توحيدٍ قياسيٍ لطريقة تنصيب البرمجيات المختلفة علي النواة، و نوَّهتُ إلي أن هذا العيب موروثٌ من نواة اللينوكس ذاتها و لا ذنب للتوزيعات القوية فيه، و لولا هذا العيب المُزعِج لكان من السهل جداً علي اللينوكس بتوزيعاته المختلفة (و خاصةً التوزيعات التي تتميز بالقوة و السهولة مثل kubuntu) أن تأكل سوق سطح المكتب بقوة؛ فالمستخدمون العاديون لن يكونوا مُطالَبِين بمعرفة الاختلافات بين الأنواع المختلفة من حِزَم التنصيب الدِبْيانِية (ذات الامتداد deb) و الرِدْهاتِية (ذات الامتداد RPM)، و لا أن يبحثوا في فضاء الانترنت عن طريقة تنصيب البرامج من الكود المصدري !،

و هذا سيؤدي لتشجيع مطوري البرمجيات المختلفة علي عمل إصدارةٍ خاصةٍ بأنظمة اللينوكس في أقرب فرصةٍ ممكنة، فمادام عمل حزمة التنصيب سهلاً و مُوحَّداً كما هو الحال في أنظمة الـwindows و الـmac، و ما دام هذا يعني أن ملايين المستخدمين لتوزيعات اللينوكس سيكون بإمكانهم تنصيب البرنامج باستخدام نفس حزمة التنصيب: فسيبذل صاحب رأس المال جهده لغزو سوق اللينوكس كما غزا سوق الـmac.

لكن الواقع بكل أسفٍ يقول غير ذلك: أن الفوضي في هذه الناحية تضرب شعبية اللينوكس في مقتل، و بما أن توزيعات اللينوكس مِن أقوي أنظمة التشغيل الحرة علي سطح الأرض، و بما أنها اللاعب الرئيس للبرمجيات الحرة في سوق الحوسبة الشخصية: فمن اللازم البحث عن حلولٍ تجعل بإمكاننا نشر استخدام اللينوكس بين الناس و جعلهم يحبونه، و التحايل علي نقطة الضعف تلك قدر الاستطاعة. إلا أن السؤال المنطقي هو: كيف نريد نشر استخدام نواة اللينوكس مع أن العيب الأكبر الذي نعاني منه (و الذي نريد القضاء عليه) جزءٌ لا يتجزأ من تلك النواة ؟!

في نظري فإن الإجابة علي ذلك السؤال تكون عن طريق إحدي طريقتين:
  • عمل توزيعةٍ قادرةٍ علي التعامل مع كل أنواع الحِزم التنصيبية (deb و RPM و مصدرية)، و حينما يقوم المستخدم بتوضيح أنه يريد تنصيب تلك الحزمة يقوم برنامج التنصيبات بفحص تلك الحزمة للتأكد من نوعها، و بناءً علي ذلك النوع يقوم بإجراء الخطوات المناسبة للتنصيب الصحيح كاملة، هكذا دون إرهاق المستخدم بالبحث عن نوعٍ معينٍ من حزم التنصيب و متاهات التنصيب عبر سطر الأومر أو الاعتماديات المختلفة، و هو الأمر الذي يحتاج إلي مجهودٍ خارقٍ من القائمين به و لكنه سيكفل للتوزيعة التي تنجح في عمله نجاحاً باهراً في ظني، كما أنه سيكون أقوي و أفضل لو وُضِعَت هذه الميزة في توزيعةٍ مبنيةٍ علي توزيعة ubuntu ذاتها؛ لتستفيد من إمكانياتها،
  • بناء نظام تشغيلٍ باستخدام نواة اللينوكس لسوقٍ تختلف في احتياجاتها عن سوق حواسيب سطح المكتب desktop و الخوادم servers التقليدية، بشرط أن يكون ذلك السوق محتاجاً لنوعٍ جديدٍ من البرمجيات ذات مواصفاتٍ لا تنطبق علي البرمجيات الحالية التي تعمل علي توزيعات اللينوكس المختلفة، و بالتالي سيكون من المنطقي ساعتها أن يكون هناك نظام تحزيمٍ جديد خاصٍ بذلك النظام الجديد، و لو استطاع هذا النظام غزو تلك السوق و الانتشار فيها إلي حد كون مستخدميه بعشرات أو مئات الملايين: فساعتها سيكون قد استطاع فرض التوحيد القياسي لنوعية حزم التنصيب التي يستعملها علي كل الناس بـ"لَيْ الذراع" :) 

و ساعتها يمكن لصانعيه اتخاذ الخطوة المنطقية من جعله يعمل علي الحواسيب الشخصية (و ربما الخوادم أيضاً)، و هكذا ستجد شركات البرمجيات أن هذا النظام شديد الانتشار قد دخل إلي السوق التي يعملون فيها و بالتالي سيكون من مصلحتهم إنتاج نسخٍ من برمجياتهم خاصةٍ به، و كما قلنا فإن التوحيد القياسي سيكون في هذه الحالة أيضاً بـ"لَيْ الذراع".


الآن دعونا نترك هذا الكلام جانباً و لنتحدث قليلاً عن نظام android الشهير.

***
في أكتوبر من عام 2003 أنشأ الرباعي: Andy Rubin
Andy Rubin أحد مؤسسي شركة android
 وRich Miner  و Nick Sears و  Chris White شركةً تقنيةً أسموها android inc بغرض إنشاء نظام تشغيلٍ مبنيٍ علي نواة اللينوكس، بحيث يكون هذا النظام مبنياً خصيصاً للعمل علي الكاميرات الرقمية المتطورة؛ ليفتح الباب أمام الاستفادة التامة من إمكانياتها القوية بدون اللجوء إلي الحواسيب العادية في أغلب الأمور. إلا أنهم في النهاية لاحظوا أن سوق الكاميرات الذكية ليست بذلك الاتساع الذي يكفل لنظام التشغيل الجديد أن يحقق الانتشار المرجو له، و لذلك تم تغيير المنصات المُستهدَفة من الكاميرات الذكية إلي الهواتف الذكية.

و في السابع عشر من أغسطس لعام 2005 قامت قوقل بالاستحواذ علي الشركة و حافَظَت علي الموظفين الرئيسيين؛ و كان الغرض الرئيس من وراء استحواذ قوقل علي الشركة و علي نظام التشغيل الخاص بها هو إتاحة الفرصة لمنتجات قوقل التي تعتمد عليها في أرباحها من دخول سوق الهواتف الذكية بكل قوتها.
و ذلك بدلاً من أن تظل قوقل مثل غيرها تحت سيف الشركات التي تنتج أنظمة تشغيل الهواتف الذكية الأخري مثل apple و microsoft، و هذا أمرٌ منطقيٌ في عالم التجارة و الأعمال؛ لأن محاولة الحد من قدرة خصمك علي توجيه الضربات المؤلمة المُباغِتة إليكَ أمرٌ ضروريٌ للغاية، و في حالة الشركات العملاقة مثل google فإن مثل هذه الأمور لا يمكن احتمالها و يجب مقاومتها بقوة.

و بعد أن تمتلك قوقل نظام تشغيلٍ يعمل علي ملايين الأجهزة سيكون بإمكانها وضع برامجها فيه ليستخدمها مُلَّاك تلك الأجهزة، و هكذا ستحصل قوقل علي عشرات الملايين من المستفيدين من خدماتها المختلفة لو قَدَّمَت نظام تشغيلٍ متميزٍ للهواتف الذكية، و كذلك لو استطاعت أن تجعله يُنصَّب بشكلٍ افتراضيٍ علي العديد من الأجهزة لتغزو سوق الهواتف الذكية. 

و كخطوةٍ منطقيةٍ للغاية تم في الخامس من نوفمبر من عام 2007 الكشف عن تحالف Open Handset Alliance الذي هو توليفةٌ من الشركات التقنية بما فيها: قوقل، مُصنِّعي الأجهزة مثل  HTC و Sony و Samsung، و الشركات الناقلة للاتصالات اللاسلكية مثلSprint Nextel و T-Mobile،  و مُصنِّعي الشرائح مثل Qualcomm و Texas Instruments.  
و كان الهدف المُعلَن هو تطوير معاييرٍ قياسيةٍ مفتوحةٍ لأجهزة الهاتف النقالة.
و في ذلك اليوم تم الكشف عن android كأولٍ مُنتَجٍ للتحالف التقني و كان أول هاتفٍ بِيع يعمل بنظام الـandroid هو هاتف  HTC Dream الذي تم إصداره  في الثاني و العشرين من أكتوبر لعام 2008.

في البداية لم يكن أحدٌ يعلم هل ستُضحِّي شركات تصنيع الهواتف المحمولة الذكية بأنظمة التشغيل الخاصة بها و تعتمد علي الوارد الجديد أم لا، و قال أحد أفراد فريق تطوير نظام Windows Mobile: "لا أفهم التأثير الذي سيكون لهم   I don't understand the impact that they are going to have"، أما شركة  Nokia التي تُعتبَر لاعباً محورياً في سوق الهواتف فقد كانت وجهة نظرها: "نحن لا ننظر لهذا كتهديد we don't see this as a threat".
و لكن فيما بعد استحوذ الـandroid علي نصيب الأسد من السوق لدرجة أن موقع  Ars Technica التقني وصفه بأنه "عملياً هو نظام التشغيل الافتراضي عند إطلاق عتادٍ جديد  practically the default operating system for launching new hardware" بالنسبة للشركات التي ليس لديها أنظمتها الخاصة للهواتف الذكية؛ 
خاصةً و أنه نظامٌ مفتوح المصدر يمكن لأي شركةٍ أن تقوم بتخصيصه كيفما تريد للعمل علي عتادها الخاص. و قد وصل عدد الأجهزة التي تعمل بـandroid  و التي تم تفعيلها حتي عام 2013 حوالي 900 مليون جهاز ! و هو ما يجعل الـandroid يسير حثيثاً ناحية التساوي مع عدد نسخ نظام الـwindows التي تعمل علي حواسيب سطح المكتب، بما يجعله حسب وصف البعض "ويندوز العصر الجديد" !

و رغم هذا الانتشار الواسع في سوق الهواتف الذكية فإن الانتشار في سوق اللوحيات جاء بعده بفترة؛ و ذلك لأن المستخدمين لن يشتروا حاسوباً لوحياً ليست له تطبيقاتٌ كثيرةٌ تُعينهم علي استخدام جهازهم بأفل الطرق الممكنة، و لكن المشكلة أن مبرمجي التطبيقات لن يكتبوا برامجاً لسوقٍ غير كبيرة !، و هكذا نقع في دارئةٍ مغلقة، و اضطر الـandroid علي اللوحيات لاستخدام تطبيقات الهواتف الذكية رغم أنها ليست مُصمَّمة بشكلٍ يتناسب مع الشاشات الأوسع للوحيات. و فيما بعد صارت التطبيقات أكثر عدداً و احترافية.

من الأشياء الطريفة بشأن android أنه يتم تسمية الإصدارات الجديدة منه بأسماء حلويات :) 
و يتم اختيار الأسماء الجديدة حسب الترتيب الأبجدي، و حتي الإصدارة 4.3 كانت الأسماء التي تم استخدامها:
Cupcake، Donut، Eclair، Froyo، Gingerbread، Honeycomb ،Ice Cream Sandwich ،Jelly Bean


من الناحية التقنية فإن android (كما سبق القول) يُعتبَر مبنياً علي نواة اللينوكس مثل بقية التوزيعات المُوجَّهة لأجهزة سطح المكتب، لكن النظرة المتعمقة تقول أن هذا الوصف قاصرٌ للغاية؛ لأنه بالنظر إلي تكوين نظام android و المكونات البرمجية الداخلة في بنائه فسنجد أن "نواة اللينوكس ليست إلا جزءً صغيراً منه، صحيحٌ أنه جزءٌ هامٌ للغاية و لكنه يظل جزءً صغيراً" كما عبَّر لينوس تورفالدوز نفسه في نهاية حديثه في واحدٍ من اللقاءات المُصوَّرة له
و الصواب أن نقول أن android مبنيٌ علي نواة اللينوكس أو أنه توزيعةٌ من توزيعات اللينوكس، و من الخطأ أن نقول أنه توزيعةٌ من توزيعات الـGNU/linux؛ لأنه لا يستخدم برمجيات مشروع الـGNU، و إن كان يستخدم منها شيئاً فهو جزءٌ صغيرٌ للغاية، بينما يعتمد علي مكتباتٍ و إطار عملٍ و تطبيقاتٍ خاصةٍ به بالكلية،


كما أن الأغلبية الساحقة من التطبيقات التي تُبنَي لأجله مكتوبةٌ بلغة الـjava، و لكن هذه التطبيقات تختلف عن تطبيقات الـjava العادية في أنها تُنتج bytecode مختلف عن ذاك الذي يعمل علي أنظمة تشغيل سطح المكتب، و لذلك فإن الآلة الوهمية virtual machine التي تقوم بتنفيذ تلك التطبيقات ليست هي آلة الـJVM الخاصة بأنظمة سطح المكتب، بل هي آلة الـDalvik. و طاقم عِدة التطوير development kit الرسمي الذي يُمكن استخدامه لتطوير تطبيقات الـjava للـandroid هو الـ Android SDK الذي يختلف عن عِدة الـjdk.
و بيئة البرمجية المتكاملة integrated development environment القياسية التي يمكن استخدامها لبرمجة التطبيقات للـandroid هي  Android Studio التي أعلنَتْ عنها قوقل في مؤتمرها google i/o الذي أقامته في عام 2013، و مما قرأتُه عنها فهي سهلةٌ جداً و تَعِد بإمكاناتٍ قويةٍ توفر الكثير من الوقت و المجهود لمبرمجي تطبيقات الـandroid. كما أنه بالإمكان استخدام بيئتَيْ netbeans و eclipse لعمل تلك التطبيقات، لكن ذلك يحتاج إلي القيام بتنزيل إضافةٍ لكلٍ منهما أولاً.

***
هناك ملاحظةٌ هامةٌ جداً بخصوص نواة اللينوكس التي بُنِي عليها android؛ حيث أنها ليست النواة القياسية التي تعتمد عليها توزيعات سطح المكتب، بل هي استنساخٌ fork تم تعديله ليعمل بكفاءةٍ أكبر مع الهواتف المحمولة و اللوحيات، و حينما أرادت قوقل إعادة التغييرات مرةً أخري إلي الفرع الرئيس من نواة اللينوكس: رفض مجتمع مطوري النواة بعض تلك التعديلات بسبب إحساسهم أن قوقل لن تقوم بصيانة هذه التعديلات، و بما أن قوقل لم تقم حتي فترةٍ قريبةٍ بالعمل علي تطبيق توصيات مطوري النواة فقد أدي هذا إلي حرمان النواة الرئيسة من بعض الإمكانيات التي أضافتها قوقل للنواة المُعدَّلة،
لكن في الفترة الأخيرة ظهر مشروعٌ لدمج تعديلات android في النواة الرئيسة مرةً أخري. و حسبما أتذكر فإن لينوس تورفالدز قد عبَّر عن أن دمج تعديلات android في النواة الرئيسة سيأخذ حوالي أربع أو خمس سنوات.

و قد تسبب هذا الاختلاف بين النواة الرئيسة و نواة الـandroid  في كثيرٍ من النزاعات بين من يرون أن android ليس إلا توزيعةً من توزيعات اللينوكس، و مَن يرون أنه أصبح مختلفاً عن اللينوكس بعد الانفصال عن النواة الرئيسة، و أنه هكذا لم يَعُد بالإمكان اعتباره توزيعةً من توزيعات اللينوكس.
و أنا بشكلٍ شخصيٍ أجد أن كثيراً من الأدلة التي يُوردها أصحاب الرأي الثاني ضعيفةٌ و متهفاتةٌ للغاية، و أري أنه برغم عدم اعتماد الـandroid علي النواة القياسية فإنه لا يزال مبنياً علي اللينوكس، و ليس من اللازم أن يتم ضم كل التعديلات التي يتم إجراؤها علي النواة المُعدَّلة إلي النواة الرئيسة بسرعة؛ فربما يكون فيها ما يحتاج إلي عملٍ لسنواتٍ عديدةٍ حتي يمكن أن يُضَم إلي النواة الرئيسة التي تعمل علي أجهزة سطح المكتب؛ تفادياً لاحتمال أن يُسبب ذلك مشاكلاً في عملها علي تلك البيئات التي تختلف عن بيئات الهواتف الذكية و اللوحيات و متطلباتهما.

***
العيب الوحيد في الـandroid مِن وجهة نظري هو أن قوقل لم تَقُم حتي الآن بالخطوة المنطقية التي تجعله يكتسح عالم اللينوكس تماماً، و أقصد بهذا أن تجعله قادراً علي العمل علي أجهزة سطح المكتب، و ذلك عن طريق إضافة الأمور الناقصة إليه، مثل التعامل مع الفأرة و مخارج الـusb غيرهن من الأمور الأكثر تعقيداً، حتي و إن كان ذلك علي مراحل متعددة يكون أولها تصنيع سلسلةٍ من الحواسيب المحمولة التي تُباع مع التنصيب السابق للـandroid.

و السؤال الآن: هل ستقوم قوقل بهذا أم لا ؟
و الإجابة لا أعلمها بالضبط، و لكني متشائمٌ نوعاً ما بخصوص هذا الأمر؛ لأن قوقل تُركز علي android في مجال الأجهزة الكفية، و علي نظام التشغيل chrome os في الحواسيب المحمولة، و لا يبدو أنها يمكن أن تغير وجهة نظرها هذه في المدي القريب علي الأقل.
لكن الأمل لا يزال موجوداً بقوة في أن نري شركةً تقنيةً أخري تقوم بأخذ الكود المصدري للـandroid و التعديل فيه بقوةٍ لتبني نظام تشغيلٍ جديدٍ يتحلي بميزات الـanroid و يتلافي عيوبه. و لكن من المهم في هذه الحالة أن يُحافِظ النظام الجديد علي التوافق التام مع تطبيقات الـandroid التي بُنيَت مِن قبل، و ألا يعتمد علي صيغةٍ جديدةٍ لتحزيم التطبيقات أو يُغيِّر من طريقة البرمجة بشكلٍ جذري؛ فساعتها سنبقي ندور في نفس الساقية التي تدور فيها توزيعات سطح المكتب و سنكرر ذات الخطايا التقنية السابقة.
و أظن أنه لو تم تطوير الـandroid ليعمل علي كافة أنواع الأجهزة مع انتشاره المهول علي الأجهزة المحمولة مختلفة الأنواع (الهواتف الذكية و اللوحيات و الساعات الذكية و نظارة قوقل الذكية، و ما شابههن من أجهزة): فسيكون ضربةً قاصمةً لـmicrosoft و لـapple اللتان تعتمدان بشكلٍ كبيرٍ للغاية علي نظامي التشغيل الخاصين بهما في العمل، و ربما نجد أن الشركتين تتركان مجال الحوسبة الشخصية للـandroid ليلعب فيه منفرداً و تحاولان التركيز علي المجالات الأخري لتنجو من السقوط التام !

***
في النهاية يخطر علي الذهن تساؤلٌ مهمٌ للغاية: لو استطاعت شركة canonical أن تقوم ببناء نظام تشغيلٍ للهواتف الذكية و اللوحيات، بحيث يقوم بالربط بين عالم حواسيب سطح المكتب و الحواسيب المحمولة بقوة، و لا يكون هناك فرقٌ يُذكَر إلا في اختلاف واجهات المستخدم: فهل سيكون قادراً علي تحقيق الهدف النهائي و إعطاء عالم المصادر الحرة القدرة علي اكتساح سوق الحوسبة الشخصية بدلاً من android ؟
و الإجابة ربما نحاول العثور عليها في المقال القادم بإذن الله تعالي  :)

ليست هناك تعليقات:

إرسال تعليق