منصّات تتعدّد وأدوات بناء واحدة

هذا المقال هو ترجمة للمقال الأصلي الوارد ضمن سياق سلسلة المقالات التي تمّ نشرها مؤخّرا، والتي تتطرقّ لمختلف الأعمال التي يتمّ إنجازها في الوقت الراهن ضمن بيئة Ubuntu، الرجاء مطالعة المقال التمهيدي الذي يعطي لمحة عامة عن سلسة المقالات هاته.

الشكر يتقدّم الحديث والذي أوجّهه شخصيا لصديقي والإنسان الرائع فتحي ديلمي على فتحه الشهية لي لترجمة هذا المقال.

Unity هي البيئة الرسومية التي يتمّ شحنها ضمن توزيعة Ubuntu بشكل إفتراضي، والتي تمّ إصدارها في نسختها الأولى قبيل ثلاث سنوات من الآن، الهدف الرئيسي وراء Unity كان البساطة والإتّساق بين الأجهزة، سيتمّ التطرق في هذا المقال لنبذة حول دواعي إطلاق هذه الواجهة والمستقبل التي تعده النسخة الثامنة Unity8 والذي تقودنا نحو عالم مختلف تماما من طريقة التكويد ومفاهيم التقارب الذي جلبته معها ضمن بيئة Ubuntu.

رغم أنّ Unity يقدّم تجربة رسومية واحدة ومتّسقة، إلّا أنّ تيسير فهمها يحوم حول ثلاث محاور:

  • التصميم: التصميم المرئي وتجربة الاستخدام.
  • المنصّة: النواة الأساسية لمنصّة Unity.
  • الخدمات: مجموعة من الوظائف التي تتيحها Unity لتسهيل قدرات الدمج مع التطبيقات الوسيطة وكذا البيانات التي يتمّ عرضها.

عندما انطلق فريق العمل في تصميم واجهة Unity، كان الهدف الجوهري هو إيجاد إطار لتلبية أبرز الإحتياجات الرسومية الخاصة بالواجهة النظامية للينوكس وكذا تحسين تجربة استخدام المستعمل النهائي من خلال بناء واجهة بسيطة وسلسة، ولكن أيضا ومن منظور مختلف، إيجاد مفهوم متسّق ومتين لتحقيق التوافقية بين مختلف المنصّات الممكنة من خلال إتاحة أنماط تطوير واستخدام متقدّمة ومخصّصة.

التصميم في أصله مهمّة بالغة التعقيد، يتم استلهامه انطلاقا من أفكار وتصوّرات حرّة لكنه يخضع في نفس الآن لقواعد ترتبط بالتجريب والاستخدام العملي له.

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

من المهمّ التنويه هنا إلى أنّ هذا الجهد لم يكن متعلّقا بمنصّة الإطلاق (Launcher)، اللوحة (Panel)، التنبيهات والمؤشّرات (Indicators) وبقية المكوّنات المرئية الشائعة فحسب والتي تعتبر المكوّنات البنائيّة الأكثر استخداما ضمن Unity لكن كان التركيز أيضا على الحركات (Gestures)، مدير الدخول (Login manager)، حزمة المكوّنات (Toolkit components) أو حزمة أدوات واجهة التحكم (Dash components) وأكثر، الغاية كانت صناعة قصّة متّسقة للتصميم المقترح من خلال كلّ شيء يتمّ تقديمه.

بمجرّد تشكّل التصميم المقترح كان فريق التطوير في الإنتظار للبدء في العمل.

عودة للأيّام الأولى لانطلاق Unity كان هناك مستويين من الشيفرة البرمجية الخاصّين بـUnity، مستوى ثنائي الأبعاد 2D وآخر ثلاثي الأبعاد 3D، السبب الرئيسي وراء وجود هذا التعدّد كان رغبة بعض مصنّعي الأجهزة الحاسوبية في توفير نسخة Unity خالية من مسرّع الـ3D في أجهزتهم وهذا ما أدّى لظهور فرعَي التطوير، لكن قام الفريق البرمجي بمشاركة الجزء الأكبر من الشيفرة المصدرية بين الفرعين للحصول على تجربة استخدام مماثلة ولإرضاء مصنّعي الأجهزة الحاسوبية من جهة أخرى.

مع ذلك فالإختلاف بين الفرعين كان ملاحظا نوعا ما: Unity 3D كتبت بواسطة Compiz ومحرّر رسومي تمّ تطويره يدعى NUX، بينما Unity 2D كتبت بواسطة Qt/QML. وكما يمكنكم التصوّر هذا أدّى لبعض التكرار في العمل وبعض الفروقات بين الفرعين 2D و3D. الفريق قاد جهودا كبيرة لكن هذه العوائق التقنية كانت لتسبب بعضا من صداع الرأس على أيّة حال.

مع مرور الوقت وتقدّم العمل كانت فكرة التقارب بين مختلف المنصّات على غرار المكتب، الهواتف الذكيّة واللوحات الذكية والأجهزة المرئية مهمّة وتزداد إثارة للإهتمام وكان لزاما حينها اتخاذ قرار يتعلّق بتركيز العمل على إحدى الفرعين وكان التوجّه النهائي نحو استخدام Qt/QML كقاعدة للشيفرة المصدرية التي يتمّ توليدها وهو قرار وافق قرارانا السابق باستخدام Qt/QML كمنصّة لنواة Ubuntu SDK.

هذا جلب حاليا إتساقا رائعا بين فريق المطوّرين لدينا حيث العمل على Unity وUbuntu SDK وحتى التطبيقات الجديدة التي يتمّ تكويدها وكذا المجتمع ورائها، كلّ هذا كان في صالح Qt/QML بالمقام الأوّل.

الفائدة الرئيسية المستقاة من استخدام وتطوير Unity كان الحيّز الواسع من الخدمات التي تتيحها، وهذا يتضمّن خدمات من قبيل:

  • منصّة الإطلاق (Launcher): لعرض التطبيقات النشطة، شريط التقدّم، قوائم الوصول، الخ.
  • قائمة المراسلة (Messaging Menu): كل رسائلك في مكان واحد، بغض النظر عن الشبكة الإجتماعية أو مصدرها.
  • معالج الوصول السريع (HUD): المسؤول عن الوصول السريع للتطبيقات والبحث فيها بشكل سلس وذكي، كتابيّا أو من خلال الأوامر الصوتية.

خدمة أخرى مثيرة للإهتمام هي واجهة التحكّم (The Dash)، في النسخ السابقة من Unity كانت واجهة التحكّم تسمح بالوصول لملفاتك المحلّية وبعض الخدمات على الخط، في Ubuntu 13.10 تمّ توسيع نطاق البحث ليضمّ أكثر من 50 خدمة وكل ذلك من منطقة واحدة. لوحة البحث باتت تسمح بالبحث بشكل سلس ومتّسق عن التطبيقات والمحتويات وأكثر.

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

Unity 8

ذكرنا خلال حديثنا أنّه تم تبنّي Qt/QML كمصدررئيسي للتطوير والتركيز عليه، لكن ذلك لم يكن القرار الوحيد الذي إتخده فريقنا من أجل الدفع بـUnity لمستويات متقدّمة، الهدف كان كذلك الدفع بإتجاه التقارب ضمن الجزء الجوهري والهامّ من الشيفرة المصدرية لUnity، هذا يعني أّنه باستخدام نفس الشيفرة للواجهة الرسومية يتمّ الحصول على تجربة استخدام معيّنة لدى استخدام الأجهزة المكتبية وتجربة مختلفة نوعا ما عند استخدام الأجهزة المحمولة ولكن كل هذا اعتمادا على نفس الشيفرة المصدرية الأساسية، هذا يعني كذلك أنّه عند تصحيح خطأ برمجي هنا فإنّه يحدث نفس التصحيح في الواجهة الأخرى.

وهذا هو المعني الحقيقي لمفهوم التقارب: استخدام الشيفرة المصدرية وباحترام مجموعة من أنمطة التصميم المعرّفة مسبقا من أجل الحصول على تجربة استخدام متأقلمة مع طبيعة الجهاز النهائي الذي يتمّ عليه تشغيل التطبيق.

هذا التركيز تمّ تجسيده بشكل رائع ضمن نسخة Unity 8 وهي النسخة التي يتمّ استخدامها حاليا ضمن Ubuntu Phone و Ubuntu Tablet images، على الأجهزة المكتبية لاتزال النسخة Unity7 قيد الاستخدام وذلك في انتظار العمل على تكريس نفس المقاربة على النسخة Unity 8 الموجّهة للمنصات المكتبية.

إذا كنت تودّ مشاهدة نموذج حيّ لمفهوم التقارب الذي شرحناه يمكنك استخدام سطح مكتبك Saucy وإجراء الأمر التالي:

ثمّ تشغيله بواسطة الأوامر:

هذا سيقوم بتحميل ما يشبه Ubuntu Phone على سطح مكتبك في نافذة، سوف تحصل على شيء مشابه لهذا:

Unity8

تذكّر أن Unity تقوم بتوليد الواجهة الرسومية اعتمادا على حجم الشاشة واعتبارات أخرى، يمكنك مشاهدة ذلك من خلال تغيير حجم وأبعاد النافذة:

Unity8

قم بإعادة الأبعادة الأصلية وكلّ شيء شيء سيعود لأصله، أمر رائع اليس كذلك؟

هذا كان مثالا عمليّا لما جلبته Unity8 من مرونة تجاه تجربة الاستخدام المبنية على حجم الشاشة والهدف هو السماح بتحسين طريقة العرض الخاصة بالمكوّنات لتحسين تجربة الإستخدام بالتبع وكل ذلك مع إبقاء نفس التركيز على جودة المحتوى، التقنية المستخدمة والعناصر المكوّنة للشاشة لكن فقط معروضة بما يواكب سياق العرض.

 

هل وصلنا حدّ النضج؟

في الوقت الراهن Unity8 متوفّرة للهواتف اللوحات الذكية، الجهد الأكبر حاليا يتركز على جعل مبدأ التقارب يشتغل بشكل مثالي ضمن Ubuntu Phone، لكن كل هذا الجهد لن يكون ذو نتيجة إن لم يتمّ تعميمه على بقية المنصّأت بشكل متزامن كونه المبتغى الأساسي من وراء كلّ هذا العمل، ورغم أنّه من الظاهر أنّ هذا لا يتوفّر ضمن المنصات المكتبة فإّن الجهد المنكبّ على الشيفرة المصدرية حاليا على Ubuntu Phone هو نفسه الذي سيتمّ للنسخ المكتبية ومن ثمّ فإّنه ليس مضيعة للوقت كوننا بكل حال سننقل نفس الكود في جزء هام منه نحو المنصات المكتبية. 

 

 

 

Ubuntu باختصار: Unity و التقارب
  • 5.00 / 5 5
  كيف وجدت هذا المقال؟  

ماذا لو شاركتنا رأيك؟

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *