إنتقل إلى المحتوى الرئيسي

برمجيات تتشارك: طريقة جديدة للبناء

· 7 دقائق قراءة
أسامة الغانمي
المؤسس المشارك والقائد التقني

في حيّنا شارع حفرت فيه ثلاث شركات مرافق مختلفة نفس الرصيف في نفس الشهر. أولاً شركة المياه. ثم شركة الغاز. ثم مزوّد الإنترنت. كل واحدة شقّت الأرض، ومدّت أنابيبها، وأعادت ردمها. لم تتحدث أيٌّ منها مع الأخرى. لم تتشارك أيٌّ منها خندقاً واحداً.

هكذا نبني البرمجيات.

المدينة التي لا شيء فيها يتصل

تخيّل مدينة لكل مبنى فيها معياره الكهربائي الخاص. كل حيّ يولّد طاقته بنفسه. كل منزل يتحدث لغة مختلفة. المخبز على الزاوية يحتفظ بتقويمه الخاص. المدرسة في الجهة المقابلة تستخدم تقويماً آخر. والمستشفى في آخر الشارع اخترع ثالثاً.

ستصف هذه المدينة بأنها مختلّة. ستصفها بالعبثية.

ومع ذلك، هذا بالضبط هو العالم الذي بنيناه بالبرمجيات.

نظام بريدك الإلكتروني لا يعرف أن نظام تقويمك موجود. بنكك لا يستطيع التحدث مع شركة التأمين الصحي، حتى عندما يحتاجان للتنسيق حول نفس الحدث في حياتك. مجموعة المتطوعين في بلدتك تستخدم تطبيقاً للتنظيم، وبنك الطعام يستخدم آخر، ومكتب الخدمات البلدية يستخدم ثالثاً. جميعها تتابع نفس العائلات، ونفس الاحتياجات، ونفس الموارد,ولا أحد منها يرى ما يراه الآخرون.

كل تطبيق صومعته الخاصة. لغته الخاصة. نسخته الخاصة من الواقع.

أمضينا عقوداً في بناء برمجيات قوية في العزلة وعديمة الفائدة في التجميع. وقد صرنا نقبل هذا كأمر طبيعي، كما قد تقبل مدينة أن شوارعها ستُحفر دائماً.

ماذا لو استطاعت البرمجيات أن تتشارك؟

السؤال ليس ما إذا كنا بحاجة إلى تطبيقات أفضل. لدينا ما يكفي من التطبيقات الجيدة. السؤال هو ما إذا كانت التطبيقات تستطيع التعايش,هل تستطيع أن تتشارك فهماً مشتركاً للعالم دون أن تكون مبنية من نفس الشركة، أو تعمل على نفس المنصة، أو محبوسة في نفس النظام البيئي.

في الحقيقة، لا تحتاج الأنظمة إلا إلى مشاركة ثلاثة أشياء لتعمل معاً.

الحقائق,ما هو صحيح. من يسكن هذا الحي. ما الموارد المتاحة. كم سريراً في المأوى. ما المهارات التي يجلبها المتطوعون. ليست آراء. ليست تنبؤات. فقط الحالة الراهنة للأشياء، متفقٌ عليها ومتاحة للجميع.

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

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

اليوم، هذه القواعد مدفونة في الكود. تعيش داخل التطبيقات، غير مرئية للناس الذين تؤثر فيهم. عائلة تُرفض طلب مساعدتها ولا تملك طريقة لفهم السبب، لأن القاعدة التي رفضتها مخبأة في دالّة كتبها مطوّر ترك الشركة قبل عامين.

يجب أن تكون القواعد قابلة للقراءة. ليس فقط من المبرمجين,بل من المجتمعات التي تعيش في ظلها.

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

لوحة إعلانات المجتمع تعمل بهذه الطريقة. لا أحد يأمرك بقراءتها. لكن إذا حدث شيء مهم، يُنشر هناك، وأي شخص يهتم يستطيع الاستجابة. يجب أن تعمل البرمجيات بنفس الطريقة,تُعلن ما يهم، وتدع الآخرين يقررون ما يفعلون حياله.

مجتمع يُنسّق

دعني أجعل هذا ملموساً.

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

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

لم يبنِ أحد تطبيقاً رئيسياً يفعل كل هذا. لا يتحكم بائع واحد في سلسلة العمليات. كل نظام بُني بشكل مستقل، ربما من منظمات مختلفة، وربما بفارق سنوات. لكنها تتشارك لغة مشتركة للحقائق والقواعد والأحداث.

الآن تخيّل أن مخزون بنك الطعام ينخفض. يُبَثّ حدث,ليس إلى نظام بعينه، بل إلى الفضاء المشترك. نظام تنسيق المتطوعين يلتقطه ويرسل تنبيهاً للسائقين القادرين على إجراء عمليات نقل طارئة. نظام الميزانية البلدية يلتقطه ويُشير إلى العجز لاجتماع التخصيصات القادم. لوحة المعلومات المجتمعية تلتقطه وتحدّث العرض العام.

كل نظام يستجيب بطريقته الخاصة، وفقاً لقواعده الخاصة. لكنها جميعاً تستجيب لنفس الواقع.

هذا ليس تكاملاً بالمعنى المعتاد في صناعة البرمجيات. ليس واجهات برمجية مُربطة ببرمجيات وسيطة، ولا خطوط بيانات تصبّ في بحيرة مركزية، ولا لعبة منصة تملك فيها شركة واحدة المحور. إنه تعايش. أنظمة تستطيع أن توجد جنباً إلى جنب، كل منها يؤدي عمله، وكل منها يفهم الآخرين.

لماذا لم يوجد هذا بعد

الجواب الصريح هو أن البناء بهذه الطريقة لم يكن مربحاً. نموذج الأعمال في البرمجيات الحديثة يكافئ الصوامع. إذا كانت بياناتك محبوسة في منصتي، فلا تستطيع المغادرة. إذا كانت قواعدك مخبأة في كودي، فأنت تحتاجني لتغييرها. إذا كانت أحداثك تتدفق فقط عبر بنيتي التحتية، فأنا حارس البوابة.

هناك أيضاً صعوبة تقنية حقيقية. مشاركة المعنى عبر الأنظمة أصعب من مشاركة البيانات. قاعدتا بيانات تستطيعان تبادل الصفوف والأعمدة. لكن هل تستطيعان الاتفاق على ما يعنيه "مؤهَّل"؟ هل تستطيعان مشاركة قاعدة مثل "أعطِ الأولوية للعائلات التي لديها أطفال دون الخامسة" بطريقة يستطيع كلٌّ من نظام بنك الطعام ونظام هيئة الإسكان تنفيذها؟

هذه هي المشكلة التي لم تُحل. ليست الأنابيب,لدينا ما يكفي من الأنابيب. بل اللغة. الفهم المشترك الذي يسمح للأنظمة ليس فقط بتبادل المعلومات، بل بالاتفاق فعلاً على ما تعنيه.

بروتوكول للتعايش

هذا ما تبنيه المدار. نسمّيه البروتوكول المداري,رغم أن الاسم أقل أهمية من الفكرة.

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

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

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

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

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

هذا ليس خيالاً علمياً

أريد أن أكون واضحاً بشأن ما ندّعيه وما لا ندّعيه.

لا ندّعي أننا حللنا مشكلة التشغيل البيني، ذلك التنين القديم في صناعة البرمجيات. لا ندّعي أن كل نظام في العالم سيبدأ فجأة في التحدث بنفس اللغة غداً.

ما ندّعيه أكثر تواضعاً وأكثر تحديداً: هناك طريقة لبناء برمجيات جاهزة هيكلياً للمشاركة. برمجيات تكون فيها الحقائق والقواعد والأحداث ليست أفكاراً لاحقة بل المعمار الأساسي. برمجيات يستطيع فيها نظام جديد الانضمام إلى منظومة قائمة دون مشروع تكامل مدته ستة أشهر.

لقد بنينا هذا. استخدمناه لإنشاء تطبيقات عبر مجالات مختلفة اختلافاً جذرياً,ألعاب استراتيجية، أنظمة تفتيش حكومية، متتبعات لياقة، منصات تعلم بالذكاء الاصطناعي. نفس اللغة، نفس البنية، نفس البروتوكول. ليس لأن هذه المجالات متشابهة، بل لأن النمط الأساسي للسلوك عالمي: شيء صحيح، شيء مسموح، شيء حدث.

البروتوكول المداري هو كيف نجعل هذا النمط قابلاً للمشاركة.

البناء لما بعد

صناعة البرمجيات عند نقطة انعطاف. موجة الذكاء الاصطناعي حقيقية، وستغيّر طريقة بنائنا للأشياء. لكن السؤال الأعمق ليس ما إذا كان الذكاء الاصطناعي يستطيع كتابة الكود أسرع. السؤال الأعمق هو ما إذا كانت الأنظمة التي نبنيها تستطيع التعايش,هل سيكرر الجيل القادم من البرمجيات نمط الصوامع أم سيكسره.

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

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

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

برمجيات تتشارك. هذا هو العمل.

أحدث المنشورات