في هذه الصفحة

محادثة غداء غيّرت موقعي

محادثة غداء غيّرت موقعي

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

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

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

في ذلك المساء، فتحت وثائق “Astro” مدفوعاً بذلك الشعور بالفضول. وخلال الصفحات القليلة الأولى، وجدت نفسي مهتماً بشكل متزايد بالفلسفة التي يقوم عليها إطار العمل هذا؛ إذ يبدأ “Astro” بصفحات HTML ثابتة (static) ثم يضيف JavaScript تدريجياً كلما دعت الحاجة إلى التفاعل لتعزيز تجربة المستخدم. لقد لامست بساطة هذه الفكرة جانباً مهماً لدي، لأنها تعكس أسلوباً مدروساً للغاية في التفكير حول المواقع الإلكترونية؛ فكل جزء من كود JavaScript له غرض محدد، وكل مكون تفاعلي يثبت جدارته واستحقاقه لوجوده، بينما يظل المحتوى نفسه هو محور التجربة الأساسي. بينما كنت أواصل القراءة، وجدت نفسي أتأمل موقعي الإلكتروني والدور الذي أردت له أن يؤديه في السنوات المقبلة.

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

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

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

وينمو الفضول

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

في المساءات التالية، غرقت في التوثيق والمقالات التقنية وأحاديث المؤتمر ونقاشات المجتمع، وأضأت تدريجياً صورة للفلسفات المختلفة وراء الFrameworks التي أردت فهمها. ظل Astro في مركز هذا الاستكشاف، لكنه أصبح صوتاً واحداً بين عدة أصوات. جذبني Hugo بسرعة بنضجه وأدائه البارز وبساطته الأنيقة. ظل Docusaurus مرجعياً مهماً لأنني كنت أعرف نقاط قوته بالفعل من سنوات من استخدامه. أعدت النظر أيضاً في Angular وReact، جزئياً لأنهما يمثلان نهجاً مؤثراً في تطوير الواجهة الأمامية وجزئياً لأن فهم مكان تألق كل Framework يسهّل كثيراً تقدير القرارات التصميمية التي اتخذها الآخرون.

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

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

لقد أثر ذلك الإدراك بهدوء على كل قرار تالٍ تقريباً؛ فقد شعرت دائماً بانسجام “Astro” مع طبيعة التجربة التي أردت بناءها، إذ شجعت فلسفته -التي تضع المحتوى في المقام الأول- على تعزيز السمات التي كنت أقدرها بشدة. فاستخدام ملفات HTML الثابتة، والصور المتجاوبة، وJavaScript الانتقائية، والدعم الممتاز لـ Markdown، إلى جانب المرونة في إدراج عناصر تفاعلية فقط عند الضرورة القصوى لإثراء التجربة؛ كل ذلك ساهم في تشكيل بنية تقنية تتسم بالبساطة وتستشرف المستقبل. لقد أصبحت أهمية إطار العمل نفسه ثانوية مقارنةً بالثقة في قدرته على التطور بسلاسة جنباً إلى جنب مع الموقع على مر السنين، دون التسبب في تعقيدات غير ضرورية.

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

وعندما انتهيت من العمل، كانت عملية الانتقال قد تحولت إلى عملية تحول شاملة وأوسع نطاقاً بكثير:

  • تم ترحيل الموقع من Docusaurus إلى Astro.
  • تم تحويل سير عمل التطوير من npm إلى Bun.
  • إعادة تصور الصفحة الرئيسية كموقع ويب شخصي بدلاً من السيرة الذاتية التقليدية.
  • تم تحديث التصميم المرئي العام من خلال تحسين الطباعة والتباعد والاستجابة.
  • إعادة تنظيم بنية المحتوى لتسهيل اكتشاف المقالات والمشاريع.
  • تم تحسين كل صورة وإنشاء متغيرات صور سريعة الاستجابة تلقائيًا.
  • تم تقليل تسليم JavaScript وتقليل الحجم الإجمالي للحزمة بشكل ملحوظ.
  • تحسين أداء التحميل ومؤشرات الويب الأساسية عبر موقع الويب بأكمله.
  • تمت إضافة اللغتين الألمانية والعربية إلى جانب الإنجليزية، مع كتابة كل لغة بشكل طبيعي لجمهورها بدلاً من اتباع الترجمات المباشرة جملةً بعد جملة.
  • تحسين قابلية الاكتشاف من خلال تحسين البيانات الوصفية والبيانات المنظمة وخرائط المواقع وعناوين URL الأساسية وملفات robots.txt والملفات الموجهة نحو الذكاء الاصطناعي مثل llms.txt.
  • تم تحسين سير عمل النشر مع GitHub وCloudflare لتبسيط عمليات النشر وتسليم المحتوى العالمي.
  • راجعت العشرات من التفاصيل الصغيرة التي تراكمت بهدوء على مدار عمر المشروع وأعطتها أخيرًا الاهتمام الذي تستحقه.

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

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

تسوية البنية التحتية

من الطبيعي أن يثير ترحيل إطار العمل تساؤلات حول الاستضافة والتسليم. كان الانتقال من Docusaurus إلى Astro يعني إعادة النظر في مسار النشر بالكامل. تتناول مقالة منفصلة كيفية ترحيل الاستضافة من صفحات GitHub إلى Cloudflare، ومقارنة مسجل النطاق، والمزالق المتعلقة باكتشاف مدير الحزم وتكوين عنوان URL لـ Docusaurus، والخطوات المتضمنة. وإلى جانب تغيير إطار العمل، أكمل هذا الترحيل تحديث البنية التحتية التي تشغل هذا الموقع الآن. للحصول على البنية التقنية الكاملة ومجموعات المحتوى ومعالجة الصور وإعداد تحسين محركات البحث وسير عمل النشر، راجع كيف يعمل هذا الموقع.

أكثر من مجرد إطار

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

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

واليوم، تنعكس هذه الرؤية بعدة طرق:

  • موقع ويب شخصي بدلاً من السيرة الذاتية الرقمية: حيث تحكي المقالات والمشاريع والأفكار قصتي بشكل أفضل بكثير من السيرة الذاتية التقليدية.
  • تجربة المحتوى أولاً: حيث يساعد الأداء والصور سريعة الاستجابة والصفحات خفيفة الوزن القراء على التركيز على ما أتوا من أجله.
  • سير عمل نشر مبني على البساطة: مما يسمح لي بالكتابة في Markdown بينما يعتني GitHub وCloudflare بكل ما يلي.
  • محتوى يبدو طبيعيًا بلغات متعددة: مع كتابة كل لغة لجمهورها بدلاً من ترجمتها آليًا.
  • أساس مصمم للتطور المستمر: ترك مجال للتصوير الفوتوغرافي وسرد قصص بصرية أكثر ثراءً وأية أفكار تظهر بعد ذلك.

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

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

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