في عام 2012، كتبت [postmortem for Plancast](https://markmhendrickson.com/posts/a-postmortem-for-plancast/)، وهي شركة ناشئة قضيت ثلاث سنوات فيها. كانت الفرضية بسيطة: يضع الأشخاص الخطط، والخطط تستحق المشاركة، وستعرض موجز الأحداث القادمة من الأشخاص الذين تثق بهم أشياء لم تكن تعلم أنك تريد القيام بها. لم ينجح الأمر. مرت القطعة لماذا.

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

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

## ما هو الخطأ في الواقع

الخلاصة هي البادئة الخاطئة لمشاركة الخطة للأسباب التالية:

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

بمجرد وضع هذه القائمة على الطاولة، فإن كل فشل في Plancast ذكرته في عام 2012 هو أحد أعراض المصب. لا يمكن للركيزة التعبير عما تريده مشاركة الخطة فعليًا.

## الركيزة التي أحتاجها

تتكون الركيزة التي سأبني عليها الآن من قطعتين، ولم تكن أي منهما موجودة في شكل قابل للاستخدام في عام 2012.

**حالة الإلحاق الدائمة لعملاء الذكاء الاصطناعي الشخصيين.** هذا ما أقوم بإنشائه بصفتي [Neotoma](https://neotoma.io). كل ملاحظة يقوم بها الوكيل (جهة اتصال مضافة، أو حدث تم الرد عليه، أو دعوة صادرة، أو تأكيد حضور) تصبح كيانًا مكتوبًا بمصدر وقيود مخطط وتاريخ غير قابل للتغيير. يقرأ وكيل الذكاء الاصطناعي الخاص بالمستخدم ويكتب منه. لا يوجد رسم بياني اجتماعي مركزي. المستخدم يملك الدولة.

** شبكة ذات سيادة من دفاتر العناوين ونطاقات الثقة. ** هذا هو الهدف من [Darkmesh](https://github.com/markmhendrickson/darkmesh) (فرعي من النسخة الأصلية لـ [Anand Iyer](https://www.anandiyer.com/)). يتيح Darkmesh لأي شخص نشر شرائح قابلة للعنونة من سياقه (جهات اتصال محددة، ومجموعات محددة، ونطاقات محددة) إلى العقد الشبكية الخاصة بأشخاص آخرين بموجب موافقة صريحة. تتم الموافقة على حافة الشبكة. لا يمكن لوكيل المرسل وضع رسالة في حالة المستلم ما لم تقبل عقدة شبكة المستلم نطاق المرسل.

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

## كيف تصبح المهمة الأصلية سهلة المتابعة

كان عرض Plancast الأصلي هو: لقاءات مصادفة من الوعي المشترك بالخطط. كان الخطأ هو الاعتقاد بأن الوعي المشترك يجب أن يأتي من الخلاصة.

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

1. **يتم استيعاب الأحداث بشكل تلقائي.** يعلم وكيل أعمالي بالفعل بالأحداث التي قمت بالرد عليها على Luma، والأحداث الموجودة في التقويم الخاص بي، والأحداث في رسائل التأكيد الإلكترونية من Eventbrite أو Meetup. إنه يكتبها إلى Neotoma الخاص بي على أنها كيانات "حدث" ذات مصدر. أنا لا أكتب لهم في أي مكان.

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

3. **الاكتشاف هو استعلام، وليس خلاصة.** السطح الأكثر طبيعية لـ "ما يحدث في عالمي" ليس التدفق. إنه سؤال أطرحه على وكيل أعمالي. *من في ثقتي سيذهب إلى أين خلال الأسبوعين المقبلين. أي من هذه الأحداث يناسب أمسيتي هذا الخميس. من الموجود في المدينة والذي لم أره منذ عام.* يتم حساب كل استعلام في وقت الاسترداد على الورم العصبي بالإضافة إلى أي نطاقات تقبلها شبكتي. لا يوجد تغذية.

4. **الدعوات من الدرجة الأولى.** هذا هو الجزء الذي شددت عليه قطعة 2012، وهو الجزء الذي تخطته معظم محاولات المنتج.

## كيف ينبغي أن تعمل الدعوات فعليًا

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

في هذه الركيزة، الدعوة عبارة عن كيان مكتوب على الحالة الخاصة بالمستلم. تقريبًا:

```
دعوة
  المرسل: contact_id
  المستلم: contact_id
  event_ref:event_id
  النطاق: "1:1" | "مجموعة_صغيرة" | "مجموعة_الحضور المشترك"
  note_to_recipient: سلسلة (إلزامية، غير فارغة)
  أساس العلاقة: سلسلة (لماذا هذا الشخص، لماذا هذا الحدث)
  Slot_budget_used: عدد صحيح (ميزانية كل حدث)
  تنتهي_في: الطابع الزمني
  conditional_on: المسند النصاب الاختياري
  المصدر: الوكيل / المصدر / الطابع الزمني
```

هناك بعض الأشياء تتبع من هذا الشكل.

**ترفض الركيزة التسليم إذا لم تعترف الشبكة بنطاق المرسل.** وهذا يقتل الكتلة الباردة التي تدعو بسرعة الآلة إلى الطبقة الوحيدة التي يمكن قتلها فيها: حافة الشبكة.

**ميزانيات الدعوة لكل حدث تفرض الانتقائية.** يحتوي كل حدث على عدد صغير وقابل للتكوين من فتحات الدعوة التي يمكن للمرسل إنفاقها. إن الركيزة، وليس قوة الإرادة، هي التي تفرض مبدأ "لا تضغط على دفتر العناوين الخاص بك". يصبح توتر الغرور مقابل الانتقائية لعام 2012 معلمة ركيزة.

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

**السياق الشخصي إلزامي على مستوى النوع. ** حقلي `note_to_recipient` و`relationship_basis` مطلوبان. فارغة ليست حالة صالحة. يمكن لوكيلي صياغتها من الرسم البياني لـ Neotoma الخاص بي (التداخل الأخير، السياق المشترك، جهات الاتصال المشتركة) ولكن الخط المؤكد بشريًا هو الخط الافتراضي. وهذا ما كانت تشير إليه مقالة عام 2012 عندما أصرّت على أن الناس يريدون أن يشعروا بأنهم مدعوون شخصيًا. الركيزة تجعل الملاحظة الشخصية متطلبًا هيكليًا وليست مجاملة اختيارية.

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

**النصاب بدائي من الدرجة الأولى.** وصفت مقالة عام 2012 المماطلة بأنها فشل كبير: فالناس يبقون الخيارات مفتوحة ويرفضون الالتزام مبكرًا. تعالج الركيزة هذا الأمر مباشرةً بـ `conditional_on`: "سأذهب إلى X إذا التزم آرون وديواكر أيضًا." الركيزة تراقب المسند وتحله. لا يوجد دور منسق، ولا موضوع دردشة جماعية، ولا رقائق.

**قابلية التركيب مع الرسم البياني للحدث الحالي.** عند قبول الدعوة، يصل الوكيل إلى النظام الأساسي الذي يمتلك الرد الأساسي (Luma، Eventbrite، التقويم) ويكتب الحجز الفعلي. يظل كيان "التزام_الحضور" الخاص بـ Neotoma أساسيًا لمن يثق بمن يذهب إلى أين. يظل الرد على دعوة الطرف الثالث أساسيًا للمكان والباب. سجلان، مصدر واحد للحقيقة لكل اهتمام، مرتبطان.

## ما الذي يقرره الوكلاء فعليًا

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

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

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

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

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

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

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

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

## كيف تتطور العلاقات كما لوحظ

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

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

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

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

## ما هذا ليس كذلك

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

## ما لا يزال مفتوحا

هناك بعض الأشياء التي لا أملك إجابات جيدة عنها بعد.

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

هذه أسئلة حقيقية، لكنها أسئلة تتعلق بالمنتج والبروتوكول فوق الركيزة التي تعمل بالفعل. فهي ليست مجهولة المعمارية.

## لماذا أكتب هذا الآن

قبل بضعة أسابيع، ترك Oo Nwoye تعليقًا عامًا على [مقالة حديثة](https://markmhendrickson.com/posts/) حول ذاكرة العميل وتساءل، بكلمات كثيرة، عما إذا كان ينبغي إحياء Plancast في عصر الذكاء الاصطناعي. الجواب هو نفس ما ورد أعلاه. المهمة الأصلية كانت صحيحة. الركيزة كانت خاطئة. الركيزة موجودة الآن.

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

إذا كنت قد بنيت أو تقوم ببناء أي شيء في هذا الحي، أود أن أتحدث.