
TL ؛ DR : هل يمكن أن تحصل Haiku على الدعم المناسب لحزم التطبيقات ، مثل دلائل التطبيق (مثل .app
على Mac) و / أو صور التطبيق (Linux AppImage
)؟ يبدو لي أن هذا سيكون إضافة جديرة بالاهتمام ، يسهل تنفيذها بشكل صحيح مقارنةً بالأنظمة الأخرى ، لأن معظم البنية التحتية موجودة بالفعل.
قبل أسبوع ، اكتشفت هايكو ، وهو نظام جيد بشكل غير متوقع. حسنًا ، بما أنني مهتم منذ فترة طويلة بالكتالوجات والصور التطبيقية (المستوحاة من بساطة نظام التشغيل Macintosh) ، فليس من المستغرب أن تخطر ببالي فكرة ...
للحصول على فهم كامل: أنا منشئ ومؤلف AppImage ، وهو تنسيق توزيع تطبيق Linux يهدف إلى بساطة Mac ويوفر تحكمًا كاملاً لمؤلفي التطبيق والمستخدمين النهائيين (تريد معرفة المزيد - راجع الويكي والوثائق ).
ماذا لو فعلنا AppImage لـ Haiku؟
دعونا نفكر قليلاً من الناحية النظرية البحتة: ما الذي يجب القيام به من أجل الحصول على AppImage ، أو شيء مشابه ، على Haiku؟ ليس من الضروري إنشاء شيء ما في الوقت الحالي ، لأن النظام الموجود بالفعل في هايكو يعمل بشكل مثير للدهشة ، ولكن تجربة وهمية قد تكون لطيفة. إنه يوضح أيضًا تطور Haiku ، مقارنة ببيئات سطح مكتب Linux حيث تكون مثل هذه الأشياء صعبة للغاية (لدي الحق في أن أقول ذلك: لقد كنت أعمل على تصحيح الأخطاء منذ 10 سنوات حتى الآن).

على نظام Macintosh 1 ، كان كل تطبيق ملفًا منفصلاً تم "إدارته" في Finder. باستخدام AppImage أحاول إعادة إنشاء نفس تجربة المستخدم على Linux.
بادئ ذي بدء ، ما هو AppImage؟ هذا هو نظام لإطلاق تطبيقات الطرف الثالث (على سبيل المثال ، Ultimaker Cura ) الذي يسمح لك بإصدار التطبيقات متى وكيف يتم البحث عنها: أنت لست بحاجة إلى معرفة ميزات التوزيعات المختلفة ، أو بناء السياسات أو إنشاء البنية التحتية ، ولا يحتاجون إلى دعم من المشرفين ، ولا يخبرون المستخدمين بما (لا) يمكن تثبيتها على أجهزة الكمبيوتر. يجب فهم AppImage على أنه شيء يشبه حزمة لنظام Mac في تنسيق .app
داخل صورة قرص .dmg
. الفرق الرئيسي هو أن التطبيقات لا يتم نسخها ، ولكن تظل داخل AppImage دائمًا ، مثل حزم Haiku .hpkg
المثبتة ، ولا يتم تثبيتها أبدًا بالمعنى المعتاد.
على مدار أكثر من 10 سنوات من وجودها ، اكتسب AppImage بعض الجاذبية والشعبية: لقد وافق عليها Linus Torvalds نفسه علنًا ، واعتبرتها مشاريع واسعة النطاق (على سبيل المثال ، LibreOffice و Krita و Inkscape و Scribus و ImageMagick) هي الطريقة الرئيسية لتوزيع التجمعات المستمرة أو الليلية. التدخل في تطبيقات المستخدم المثبتة أو غير المثبتة. ومع ذلك ، فإن أجهزة كمبيوتر سطح المكتب والتوزيعات التي تعمل بنظام Linux لا تزال تتشبث في الغالب بنموذج التوزيع التقليدي المركزي القائم على المشرفين و / أو تروج لأعمالهم التجارية و / أو البرامج الهندسية الخاصة بهم على أساس Flatpak (RedHat و Fedora و GNOME) و Snappy (Canonical و Ubuntu) . يأتي مضحك .
كيف يعمل؟
- كل AppImage يحتوي على جزأين: نقرة مزدوجة قابلة للتنفيذ ELF (ما يسمى.
runtime.c
) ، متبوعة صورة نظام ملفات SquashFS .

- يحتوي نظام ملفات SquashFS على حمولة في شكل تطبيق وكل ما تحتاجه لتشغيله ، والذي في عقلك الصحيح لا يمكن اعتباره جزءًا من التثبيت الافتراضي لكل نظام مستهدف جديد تمامًا (توزيع Linux). يحتوي أيضًا على بيانات وصفية ، على سبيل المثال ، اسم التطبيق ، والرموز ، وأنواع MIME ، إلخ ، إلخ.

- عند تشغيله من قِبل المستخدم ، يستخدم وقت التشغيل FUSE و squashfuse لتركيب نظام الملفات ، وبعد ذلك يقوم بمعالجة إطلاق بعض نقاط الدخول (ما يسمى AppRun) داخل AppImage المحمّل.
نظام الملفات غير مثبت بعد اكتمال العملية.
يبدو أن كل شيء بسيط.
وهذه الأمور تعقد الأمور:
- مع مجموعة متنوعة من توزيعات Linux ، لا يوجد شيء "في أذهانهم الصحيحة" يمكنك الاتصال "جزء من التثبيت الافتراضي لكل نظام مستهدف جديد". نحن نتغلب على هذه المشكلة من خلال تجميع قائمة حصرية ، مما يسمح لنا بتحديد ما سيتم تعبئته في AppImage وما يجب أخذه في مكان آخر. في الوقت نفسه ، نفتقد أحيانًا ، على الرغم من حقيقة أن كل شيء يعمل بشكل جيد عمومًا. لهذا السبب ، نوصي أن يتحقق منشئو الحزم من AppImages على جميع الأنظمة المستهدفة (التوزيعات).
- يجب أن تتجول التطبيقات في شكل حمولة حول نظام الملفات. لسوء الحظ ، في العديد من التطبيقات ، تكون المسارات المطلقة إلى ، على سبيل المثال ، الموارد في
/usr/share
مرمزة. هذا يحتاج إلى إصلاح بطريقة أو بأخرى. بالإضافة إلى ذلك ، يجب عليك إما تصدير LD_LIBRARY_PATH
، أو إصلاح rpath
حتى يتمكن المُحمل من العثور على المكتبات ذات الصلة. الطريقة الأولى لها عيوبها (والتي تتم إدارتها بطرق معقدة) ، والثانية ببساطة مرهقة. - أكبر فخ UX للمستخدمين هو تعيين البت القابل للتنفيذ إلى ملف AppImage بعد التنزيل. صدق أو لا تصدق ، بالنسبة للبعض فهو عائق حقيقي. الحاجة إلى تعيين بت قابل للتنفيذ مرهقة حتى بالنسبة للمستخدمين المتقدمين. كحل مؤقت ، اقترحنا تثبيت خدمة صغيرة تراقب ملفات AppImage وتعيين البت القابل للتنفيذ لها. في شكله النقي ، وليس الحل الأفضل ، لأنه لن ينجح في الخروج من الصندوق. توزيعات Linux لا تقدم هذه الخدمة ، وبالتالي ، فإن المستخدمين من خارج الصندوق ليسوا على ما يرام.
- يتوقع مستخدمو Linux أن يكون للتطبيق الجديد أيقونة في قائمة التشغيل. لا يمكنك إخبار النظام: "انظر ، هناك تطبيق جديد ، دعنا نعمل". بدلاً من ذلك ، وفقًا لمواصفات XDG ، تحتاج إلى نسخ ملف.
.desktop
إلى الموقع المطلوب في /usr
للتثبيت على نطاق النظام ، أو في $HOME
للتثبيت الفردي. وفقًا للمواصفات XDG ، تحتاج إلى وضعه في أماكن معينة في usr
أو $HOME
، ثم قم بتشغيل الأوامر في بيئة العمل لتحديث ذاكرة التخزين المؤقت للأيقونة ، أو نأمل أن يقوم مدير بيئة العمل باكتشافها واكتشاف كل شيء تلقائيًا.كما هو الحال مع أنواع MIME. لاستخدام نفس الخدمة ، التي ، بالإضافة إلى تعيين علامة التنفيذ ، ستعمل ، إذا كانت هناك رموز ، إلخ. في AppImage ، على نسخها من AppImage إلى الأماكن الصحيحة وفقًا لـ XDG ، فمن المفترض أن الخدمة ستقوم بمسح كل شيء عند حذفها أو نقلها. بالطبع ، هناك اختلافات في السلوك بيئة العمل ، في تنسيقات الملفات الرسومية ، أحجامها ، ومواقع التخزين وطرق تحديث ذاكرة التخزين المؤقت ، مما يخلق مشكلة. وباختصار ، هذه الطريقة هي عكاز. - إذا كان ما سبق غير كافٍ ، فلا يوجد رمز AppImage في مدير الملفات. في عالم Linux ، لم يقررا بعد تنفيذ تطبيق elficon (على الرغم من المناقشة والتنفيذ ) ، لذلك يستحيل تضمين الرمز مباشرة في التطبيق. لذلك اتضح أن التطبيقات الموجودة في مدير الملفات لا تملك أيقونات خاصة بها (لا فرق ، AppImage أو أي شيء آخر) ، فهي موجودة فقط في قائمة البداية. وكحل بديل ، نستخدم الصور المصغرة - وهي آلية تم تطويرها في الأصل بحيث يمكن لمديري سطح المكتب عرض الصور المصغرة لمعاينة ملفات الرسومات كرموزهم. لذلك ، تعمل خدمة ضبط البت القابل للتنفيذ أيضًا على "صورة مصغرة" ، حيث تقوم بإنشاء وتسجيل الصور المصغرة للرموز في الأماكن
/usr
المقابلة و $HOME
. هذه الخدمة أيضا تجريد إذا تم حذف AppImage أو نقلها. نظرًا لحقيقة أن كل مدير سطح مكتب يتصرف بشكل مختلف بعض الشيء ، على سبيل المثال ، في التنسيقات التي يقبلها الرموز ، وفي أي الأحجام أو الأماكن ، كل هذا مؤلم حقًا. - يتعطل التطبيق ببساطة في وقت التشغيل في حالة حدوث أخطاء (على سبيل المثال ، هناك مكتبة ليست جزءًا من النظام الأساسي ولا يتم توفيرها في AppImage) ، ولا يخبر أحد المستخدم في واجهة المستخدم الرسومية بما يحدث بالضبط. بدأنا العمل حول هذا باستخدام الإشعارات على سطح المكتب ، مما يعني أننا بحاجة إلى التقاط الأخطاء من سطر الأوامر ، وتحويلها إلى رسائل مفهومة من المستخدم ، والتي لا تزال بحاجة إلى عرضها على سطح المكتب. وبالطبع ، كل بيئة عمل تعاملهم بشكل مختلف قليلاً.
- في الوقت الحالي (سبتمبر 2019 ، تقريبًا المترجم) ، لم أجد طريقة بسيطة لإخبار النظام أنه
1.png
فتح ملف 1.png
باستخدام Krita ، و 2.png
- باستخدام GIMP.

موقع التخزين لمواصفات سطح المكتب المستخدم من قبل GNOME و KDE و Xfce هو freedesktop.org
من الصعب تحقيق مستوى من التطور في بيئة عمل Haiku ، إن لم يكن مستحيلًا ، نظرًا لمواصفات XDG من freedesktop.org عبر سطح المكتب ، وكذلك تطبيقات مديري سطح المكتب بناءً على هذه المواصفات. على سبيل المثال ، يمكننا الاستشهاد بأيقونة Firefox واحدة على مستوى النظام: على ما يبدو ، فإن مؤلفي XDG لم يفكروا حتى في إمكانية حصول المستخدم على العديد من إصدارات التطبيق نفسه.

أيقونات إصدارات مختلفة من فايرفوكس
كنت أتساءل ما الذي يمكن أن يتعلمه عالم Linux من نظام التشغيل Mac OS X ، حتى لا تعبث مع تكامل النظام. إذا كان لديك الوقت وأنت تفعل هذا ، فتأكد من قراءة ما قاله Arno Gourdol ، أحد مهندسي Mac OS X الأوائل:
أردنا تثبيت التطبيق بنفس سهولة سحب أيقونة التطبيق من مكان ما (الخادم ، محرك الأقراص الخارجي) على قرص جهاز الكمبيوتر الخاص بك. للقيام بذلك ، يتم تخزين جميع المعلومات في حزمة التطبيق ، بما في ذلك الرموز والإصدار ونوع الملف قيد المعالجة ونوع مخططات عناوين URL التي يجب أن يعرفها النظام لمعالجة التطبيق. يتضمن هذا أيضًا معلومات عن "التخزين المركزي" في قاعدة بيانات خدمات Icon وخدمات الإطلاق. للحفاظ على الأداء ، يتم "اكتشاف" التطبيقات في العديد من الأماكن "المعروفة": في النظام ودليل المستخدم ، وكذلك في بعض الأماكن الأخرى ، تلقائيًا إذا كان المستخدم قد انتقل إلى الباحث عن الدليل الذي يحتوي على التطبيق. في الممارسة العملية ، وهذا يعمل بشكل جيد للغاية.
https://youtu.be/qQsnqWJ8D2c
Apple WWDC 2000 Session 144 - Mac OS X: تطبيقات التغليف وطباعة المستندات.
لا يوجد شيء مماثل لهذه البنية التحتية على أسطح مكتب Linux ، لذلك نحن نبحث عن حلول حول القيود الهيكلية في مشروع AppImage.

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

صدق أو لا تصدق ، لا يمكن للعديد من مستخدمي Linux التغلب على هذا. في هايكو ، كل شيء يتم تلقائيًا!
- تتلقى ملفات ELF التي لا تحتوي على جزء قابل للتنفيذ تلقائيًا عند النقر المزدوج فوق مدير الملفات.
- يمكن أن تحتوي التطبيقات على موارد مضمّنة ، على سبيل المثال ، الرموز التي تظهر في مدير الملفات. لا تحتاج إلى نسخ مجموعة من الصور إلى أدلة الرموز الخاصة ، وبالتالي ، لا تحتاج إلى تنظيفها بعد حذف التطبيق أو نقله.
- هناك قاعدة بيانات لربط التطبيقات بالمستندات ، ليست هناك حاجة لنسخ أي ملفات لهذا الغرض.
- في lib / الدليل بجانب الملف القابل للتنفيذ ، يتم البحث في المكتبات افتراضيًا.
- لا توجد العديد من التوزيعات وبيئات سطح المكتب ، وكل ذلك يعمل - يعمل في كل مكان.
- لا توجد وحدة منفصلة لبدء التشغيل تختلف عن دليل التطبيقات.
- لا تحتوي التطبيقات على مسارات مطلقة مضمنة لمواردها ؛ فهناك وظائف خاصة لتحديد الموقع في وقت التشغيل.
- تم تقديم فكرة صور نظام الملفات المضغوطة: هذه هي أي حزمة hpkg. كلها مصنوعة من قبل الأساسية.
- يتم فتح كل ملف بواسطة التطبيق الذي أنشأه ، إلا إذا قمت بتحديد شيء آخر بشكل صريح. كم هو رائع!

ملفين بابوا نيو غينيا. انتبه إلى الرموز المختلفة التي تظهر أنه سيتم فتحها بواسطة تطبيقات مختلفة عن طريق النقر المزدوج. انتبه أيضًا إلى القائمة المنسدلة "فتح بـ:" ، حيث يمكن للمستخدم تحديد تطبيق منفصل. كم هو سهل!
يبدو أن العديد من العكازات والحلول التي يحتاجها AppImage على Linux تصبح غير ضرورية على Haiku ، التي تعتمد على البساطة والتطور ، بفضل تعاملها مع معظم احتياجاتنا.
هل تحتاج هايكو إلى حزم تطبيقات في النهاية؟
هذا يؤدي إلى سؤال كبير. إذا كان إنشاء نظام مثل AppImage على Haiku أسهل من نظام Linux ، فهل سيكون الأمر يستحق ذلك؟ أم أن Haiku مع نظام حزم hpkg الخاص به عمليا يلغي الحاجة لتطوير مثل هذه الفكرة؟ حسنًا ، بالنسبة للإجابة ، تحتاج إلى إلقاء نظرة على الدافع لوجود AppImages.
عرض من المستخدم
ألق نظرة على المستخدم النهائي لدينا:
- أريد تثبيت التطبيق دون طلب كلمة مرور المسؤول (الجذر). على Haiku لا يوجد مفهوم المسؤول ، المستخدم لديه السيطرة الكاملة ، لأن هذا هو نظام شخصي! (من حيث المبدأ ، يمكنك أن تتخيل ذلك في وضع متعدد المستخدمين ، وآمل أن يحافظ المطورون على البساطة)
- أرغب في الحصول على أحدث وأفضل إصدارات التطبيقات ، وليس انتظار ظهورها في التوزيع الخاص بي (وغالبًا ما يعني ذلك "أبدًا" ، على الأقل إذا لم تقم بتحديث نظام التشغيل بالكامل). على Haiku ، هذا هو "حل" مع الإصدارات العائمة. هذا يعني أنه من الممكن الحصول على أحدث وأفضل إصدارات التطبيقات ، ولكن لهذا تحتاج إلى تحديث بقية النظام باستمرار ، وتحويله بالفعل إلى "هدف متحرك" .
- أريد العديد من إصدارات التطبيق نفسه في مكان قريب ، لأنه لا يمكنك معرفة ما تم كسره في أحدث إصدار ، أو على سبيل المثال ، كمطور ويب ، أحتاج إلى التحقق من عملي تحت إصدارات مختلفة من المتصفح. حل Haiku الأول ، ولكن ليس المشكلة الثانية. يتم التراجع عن التحديثات ، ولكن فقط للنظام بأكمله ، من المستحيل (كما أعرف) بدء تشغيل ، على سبيل المثال ، عدة إصدارات من WebPositive أو LibreOffice في نفس الوقت.
أحد المطورين يكتب:
في الأساس ، الأساس المنطقي هو: حالة الاستخدام نادرة جدًا بحيث لا يكون التحسين منطقيًا عليها ؛ التعامل معها كحالة خاصة في HaikuPorts يبدو أكثر من مقبول.
- أحتاج إلى حفظ التطبيقات التي أحبها ، وليس على قرص التمهيد. غالبًا ما نفدت المساحة على الأقراص ، لذلك أحتاج إلى توصيل محرك أقراص خارجي أو دليل شبكة لتخزين التطبيقات (جميع الإصدارات التي قمت بتنزيلها). إذا قمت بتوصيل محرك الأقراص هذا ، فأنا بحاجة إلى تشغيل التطبيقات من خلال النقر المزدوج. تقوم Haiku بحفظ الإصدارات القديمة من الحزم ، لكنني لا أعرف كيفية نقلها إلى محرك أقراص خارجي ، أو كيفية الاتصال بالتطبيقات من هناك لاحقًا.
تعليق المطور:
من الناحية الفنية ، هذا ممكن بالفعل من خلال الأمر mount. بالطبع ، سنقوم بإنشاء واجهة المستخدم الرسومية لهذا بمجرد جمع ما يكفي من المستخدمين المهتمين.
- لا أحتاج إلى ملايين الملفات المنتشرة حول نظام الملفات والتي لا أستطيع إدارتها يدويًا. أريد ملفًا واحدًا لكل تطبيق ، يمكنني تنزيله أو نقله أو حذفه بسهولة. على Haiku ، تم حل هذه المشكلة بمساعدة حزم
.hpkg
، والتي تنقل ، على سبيل المثال بيثون ، من آلاف الملفات إلى ملف واحد. ولكن إذا كان هناك ، على سبيل المثال ، يستخدم Scribus بيثون ، فعندئذ يجب علي التعامل مع ملفين على الأقل. ولا بد لي من الحرص على الحفاظ على إصداراتها تعمل مع بعضها البعض.

تعمل العديد من إصدارات AppImages جنبًا إلى جنب على نظام Linux واحد
عرض من جانب مطور التطبيق
دعنا ننظر من وجهة نظر مطور التطبيق:
- أريد إدارة تجربة المستخدم بالكامل. لا أرغب في الاعتماد على نظام التشغيل ، الذي سيخبرني بموعد وكيفية إطلاق التطبيقات. في Haiku ، يمكن للمطورين العمل مع مستودعات hpkg الخاصة بهم ، ولكن هذا يعني أن المستخدمين سوف يحتاجون إلى تكوينها يدويًا ، مما يجعل هذه الفكرة أقل جاذبية.
- لديّ صفحة تنزيل على موقعي حيث أقوم بتوزيع
.exe
لنظام التشغيل Windows و .dmg
لنظام التشغيل Mac و .AppImage
لنظام التشغيل Linux. أو ربما أريد تحقيق الدخل من الوصول إلى هذه الصفحة ، هل يمكن أن يكون كل ذلك؟ ما الذي أحتاجه للنشر هناك في هايكو؟ يكفي ملف .hpkg
مع تبعيات .hpkg
فقط - يحتاج برنامجي إلى إصدارات معينة من البرامج الأخرى. على سبيل المثال ، من المعروف أن Krita يحتاج إلى إصدار ثابت من Qt ، أو Qt ، يتم ضبطه بشكل جيد مع إصدار محدد من Krita ، على الأقل حتى تعود التصحيحات إلى Qt. يمكنك حزم كيو تي الخاص بك للتطبيق في حزمة
.hpkg
، ولكن على الأرجح هذا غير مرحب به.

صفحة تنزيل التطبيق العادية. ما يجب وضعه هنا في هايكو؟
هل ستكون الحزم (الموجودة كدليل تطبيق مثل AppDir أو .app
بأسلوب Apple) و / أو الصور (مثل AppImages من Apple المعدلة بشدة أو .dmg
) إضافات مفيدة إلى بيئة عمل Haiku؟ أم أنها ستخفف من الصورة بأكملها وتؤدي إلى تجزئة ، وبالتالي إضافة تعقيد؟ أنا ممزق: من ناحية ، يعتمد جمال وتطور هايكو على حقيقة أن هناك عادةً طريقة واحدة لعمل شيء ما ، وليس كثيرًا. , / , , .
mr. waddlesplash
Linux ( , — . ) . Haiku .
?
...
, : — Haiku:

Haiku,
, , , Macintosh Finder. , QtCreator "QtCreator", ?
:
, , ? , - ?
Haiku, ? , .
mr. waddlesplash:
, : , , - . BeOS R5 Haiku — ...
!
Haiku?
hpkg, :
.hpkg
- ( , )
.hpkg
( 80% ) - ,
.hpkg
, ( , QtCreator): .hpkg
, .
mr. waddlesplash :
, , — /system/apps
, Deskbar , /system/apps
, ( MacOS). Haiku , , , .
- Haiku , , , , " ", , ( 20% ).
.hpkg
, , — . (, .hpkg
, — , . ! — .) , .hpkg
, , HaikuDepot… ).
mr. waddlesplash:
. "" pkgman .
hpkg, . , .
استنتاج
Haiku , , , Linux. .hpkg
— , . , Haiku . — , Haiku, , . Haiku . , , , Haiku. , «-». 10 Linux, Haiku, , , . , , Haiku , , — . , , hpkg
, . , Haiku , , ( ) "". , ?
! Haiku DVD USB, .
? telegram- .
: C C++. Haiku OS
: Haiku.
قائمة المواد: أولا الثاني الثالث الرابع الخامس السادس السابع الثامن التاسع