تحطيم بودكاست الحلقة 25 مع أنتوني كامبولو: ما هو RedwoodJS؟

نشرت: 2022-03-10
ملخص سريع ↬ نحن نتحدث عن RedwoodJS. ماذا يعني بالضبط أن تكون إطار عمل Jamstack كامل المكدس؟ يتحدث درو ماكليلان إلى بطل المجتمع أنتوني كامبولو لمعرفة الإجابة.

نحن نتحدث عن RedwoodJS. ماذا يعني بالضبط أن تكون إطار عمل Jamstack كامل المكدس؟ تحدثت إلى بطل المجتمع أنتوني كامبولو لمعرفة ذلك.

وتظهر الملاحظات

  • ريدوود ، JS
  • أنتوني على تويتر
  • سلسلة مقالات أنتوني نظرة أولى على RedwoodJS

تحديث اسبوعي

  • "مقدمة إلى تشغيل Lighthouse بطريقة برمجية"
    بقلم كاتي بومان
  • "تنشيط مكونات React باستخدام GreenSock"
    كتبها نعمة كروفيغا
  • "التصميم للاهتمام"
    كتبه فيكتور يوكو
  • "استخدام GraphQL المتقدم في مواقع Gatsby على الويب"
    كتبه عليم اسياكا
  • "مقارنة أساليب التصميم في Next.js"
    كتبه Adebiyi Adedotun

نسخة طبق الأصل

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

درو: مرحبًا أنتوني. كيف حالك؟

أنتوني كامبولو: مرحبًا. أنا محطمة ، شكرا جزيلا لاستضافتي.

درو: أردت أن أتحدث إليكم اليوم ، وربما يكون واضحًا من المقدمة ، حول RedwoodJS. بالنسبة لأولئك الذين لم يسمعوا عن RedwoodJS من قبل ، على مستوى عالٍ ، ما هو؟

أنتوني: أعتقد أن هناك طريقتين يمكنك وصفهما به اعتمادًا على المكان الذي يأتي منه الأشخاص ، ولكن التعريف المتعارف عليه هو أنه إطار عمل مكدس بدون خادم لـ Jamstack. لذلك ، فهو يجمع بين تطوير الويب الكامل المكدس مع عناصر من نوع AWS Lambda بدون خادم و Jamstack ، وهو أمر مهم هذه الأيام.

درو: إذن ، إنه إطار عمل مكدس كامل يحاول تجميع الكثير من الأفكار حول نظام تطوير Jamstack البيئي؟ هل هذا صحيح؟

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

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

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

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

أنتوني: نعم ، هذا هو أول شيء أحب أن أشرحه للناس عندما أعرض عليهم مشروع Redwood ، وهو أنه monorepo. لذلك ، لديك الواجهة الأمامية والخلفية الخاصة بك في نفس الريبو ، ثم يعيش كل واحد منهم في مجلداته الخاصة. لديك مجلد ويب ، وهو الواجهة الأمامية ، وهو مشابه إلى حد ما لما ستحصل عليه من تطبيق Create React. بعد ذلك ، لديك مجلد API ، وهو النهاية الخلفية الخاصة بك ، وهذا هو المكان الذي يتم فيه دفع جميع وظائفك بشكل أساسي إلى معالج GraphQL كبير يتم نشره في AWS Lambda من خلال Netlify.

درو: حسنًا ، بدءًا من المقدمة ، كما ذكرت ، يعتمد على React. هل هذه React بالإضافة إلى مجموعة من كود Redwood ، أم أنها مجرد React عادي؟ ما هو التوازن هناك؟

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

درو: إذن ، تمت تهيئة React بمجموعة من الأدوات الأخرى التي تعمل بشكل جيد مع React لمنحك نظامًا بيئيًا فعالاً للقيام بهذا النمط المعين من المهام. هل هذا وصف عادل؟

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

درو: أعتقد أنها نقطة ألم شائعة تسمعها من الكثير من الأشخاص عندما يحاولون البدء في إطار التطوير الحديث مع تطبيقات JavaScript من جانب العميل وتكوين حزمة الويب ، وتكوين جميع الأشياء المختلفة ، وعمليات الإنشاء ، و بناء خطوات. يمكن أن يكون حقل ألغام تمامًا ، أليس كذلك ، لتوصيل كل شيء معًا والعمل؟ وهي فترة طويلة قبل أن تصل إلى "Hello، World!". إذن ، هل تقدم لنا Redwood كل ما تم تكوينه مسبقًا؟

أنتوني: نعم ، إنها اتفاقية حول فكرة نوع التكوين ، لأن لديك… كان توم ، كما لو أنه بنى GitHub مع Ruby on Rails and Rob ، أحد المساهمين الأساسيين الآخرين ، لقد كان مطور Rails إلى الأبد. لديهم الكثير من الأفكار التي يتوافقون معها فلسفيًا من حيث ريلز ، لكنهم يريدون أن يأخذوا تلك الاصطلاحات على أفكار التكوين ، وأفكار إطار عمل المكدس الكامل ، وتنفيذ ذلك مع كل التقنيات الحديثة التي لدينا الآن.

درو: لقد ذكرت أن Redwood يمنحك جهاز توجيه أو جهاز توجيه ، كما نقول في هذا الجانب من البركة ، هل يأتي مع أشياء مثل المكونات الافتراضية وأي من هذه الأشياء في React ، أم أنك في ذلك الوقت لتنفيذ كل ذلك بنفسك؟

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

درو: إذن ، ربما يمكننا الخوض في ذلك قليلاً؟ ما هي الخلية من حيث ريدوود؟

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

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

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

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

أنتوني: نعم ، وأعتقد أنه من المثير للاهتمام حقًا أننا رأينا عدة محاولات مختلفة لحل هذه المشكلة ، لأنني أعني أنه كان لديك أشخاص يقولون ذلك إلى الأبد ، "لماذا لا يوجد Rails لـ جافا سكريبت أم ريلز للتفاعل؟ " هناك مقابلة رائعة مع راديو Full Stack بين مايكل تشان وآدم ووثان بعنوان React ليست منافسًا لـ Rails. هذا هو أحد الأطر المختلفة.

أنتوني: الآخرون هم BlitzJS الذي حصل على قدر كبير من الضجة ، ثم Bison هو نوع جديد وقادم. لديهم جميعًا كومة متشابهة ، لكنهم يستخدمون قطعًا مختلفة. سيكون لديك استعلام React بدلاً من Apollo ، أو سيكون لديك Chakra بدلاً من Tailwind. الأشخاص الذين يجمعون كل هذه القطع معًا في مكدساتهم ، كل هذه الأكوام نوعًا ما ، إنهم يقاتلونها ، كلها منافسة ودية للغاية. في الواقع ، هذا شيء أقدره حقًا ، هو أننا في الواقع نتعاون جميعًا بين الأطر أيضًا. لا يوجد عداء هناك.

درو: لذلك ، ذكرنا أبولو و GraphQL ، تستخدم Redwood GraphQL بشكل كبير كواحدة من الأجزاء الأساسية ، أليس كذلك ، من إطار العمل؟ ربما يمكننا تخصيص حلقة بودكاست كاملة لـ GraphQL فقط ، ولكن بالنسبة لأولئك الذين ليسوا على دراية ، ما هو الجزء الذي تقوم به GraphQL هنا ، ما المشكلة التي تحلها في هذا السياق؟

أنتوني: نعم ، هذا سؤال رائع. عندما أخبر الناس بما يجب أن يعرفوه ليبدأوا بداية جيدة مع Redwood ، أود أن أقول إنه كان يجب عليك استخدام تطبيق Create React ، فقط إذا كنت قد أنشأت تطبيق Create React ، وقمت بنشره على Netlify أو فيرسيل ، هذا سيجعلك بداية جيدة. بعد ذلك ، تعرف على القليل على الأقل من GraphQL لأنها مركزية للغاية. لذا ، فإن GraphQL هي الطريقة التي ستتحدث بها واجهتك الأمامية مع نهايتك الخلفية. يقولون إنها لغة استعلام لواجهات برمجة التطبيقات ، والفكرة هي أنها من المفترض أن تكون بديلاً لطرق RESTful API ، وبدلاً من القيام بهذا الشيء RESTful ، فأنت ترسل استعلامات تحدد بالضبط بنية البيانات الهرمية التي تريد تلقيها مرة أخرى من قاعدة البيانات. لذلك ، يتطلب الأمر وقتًا أطول قليلاً لبدء التشغيل حتى يتمكن خادم GraphQL الخاص بك من التحدث إلى القطعتين. وبعد ذلك ، بمجرد الحصول عليها هناك ، يتمتع مطورو الواجهة الأمامية بالقدرة على الحصول على البيانات بطريقة أكثر مرونة. لا تحتاج إلى كل هذه النقاط النهائية المختلفة لواجهة برمجة التطبيقات التي يحتاج شبابك الخلفي إلى الاستمرار في صنعها.

درو: إذا كانت هناك تغييرات في المتطلبات في الواجهة الأمامية ، فمن المفترض أنه يمكنك تعديل استعلام GraphQL الخاص بك ولن تحتاج إلى مساعدة شخص يعمل في النهاية الخلفية لإجراء هذا التغيير نيابةً عنك؟

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

درو: إذن ، لدينا GraphQL هناك مما يمنحنا القدرة على الاستعلام عن نوع من النهاية الخلفية. في ريدوود ، ما هي النهاية الخلفية؟

أنتوني: أجل. هناك طريقتان مختلفتان لإنشاء الواجهة الخلفية الخاصة بك. هناك طريقة للخروج من الصندوق باستخدام البرنامج التعليمي ، وهو استخدام قاعدة بيانات Postgres المنشورة على Heroku ، وهي سهلة للغاية وبسيطة للغاية. بعد ذلك ، يتحدث تطبيق Redwood الخاص بك إليه باستخدام Prisma. لا أعرف ما إذا كنت معتادًا على Prisma على الإطلاق ، لكنه يشبه O / RM. يقولون على وجه التحديد إنه ليس O / RM ، إنه منشئ استعلام ، وهو مستوى أقل قليلاً. ولكن من أجل شرح الأمر فقط للناس ، فإن Prisma هو الشيء الذي يتيح لك التحدث إلى قاعدة البيانات الخاصة بك. يقوم بالترحيلات الخاصة بك ويقوم بإعداد الجداول الخاصة بك. إنه يقوم بجميع عناصر SQL حتى لا تضطر إلى كتابة SQL. بالنسبة لي ، هذا يبدو وكأنه O / RM. لا تحتاج بالضرورة إلى استخدام Prisma على الرغم من استخدام Redwood.

أنتوني: لقد قمت بالفعل بإنشاء دليل عادل لتطبيق المفهوم حيث استخدمنا FaunaDB بدلاً من ذلك. FaunaDB ، لديهم واجهة برمجة تطبيقات GraphQL الخاصة بهم ، لذا يمكنك فقط إرسال GraphQL API مباشرة إلى Fauna ، ثم إجراء تحولات قاعدة البيانات الخاصة بك بهذه الطريقة. تفقد الكثير من وظائف واجهة CLI الخاصة بـ Prisma ، ولكن Prisma حقًا عامل ملائم للعمل بسهولة مع قاعدة البيانات الارتباطية الخاصة بك. لكن في الحقيقة ، أي شيء يمكن أن يخطر ببالك ، يمكنك معرفة كيفية ربطه مع Redwood هو ما اكتشفته لمجرد أنه مبني على GraphQL والمقصود هو أن تكون قادرًا على التحدث مع كل هذه الأجزاء المختلفة.

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

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

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

أنتوني: نعم. نعم ، هذا هو بالضبط. لذلك ، في مجلد واجهة برمجة التطبيقات للجهة الخلفية ، لديك مجلد lib به db.js ، ويتم إعداد عميل Prisma افتراضيًا فقط. إذن ، هذا كل ما تحصل عليه من الصندوق ، وكما قلت ، يمكن لـ Prisma العمل مع قواعد بيانات مختلفة. يمكنه التبديل بين SQLite للتطوير ثم Postgres للإنتاج ، هذا النوع من الأشياء. إنها في الغالب علاقات علائقية في الوقت الحالي ، لكن خارطة الطريق بها أشياء مثل مونغو وفاونا.

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

أنتوني: هذا هو بالضبط كيفية إعداد البرنامج التعليمي ، وهذا هو سير العمل الذي يظهر لك.

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

أنتوني: نعم ، لا ، هذه نقطة جيدة ، لأنني أقول أنه بالنسبة لكل الأشياء الجديدة التي تجمعها Redwood معًا ، هناك بعض الأشياء التي تقول في الواقع أن الطريقة القديمة والمجربة والصحيحة هي الأفضل في الواقع. لذلك ، فهي كبيرة حقًا في قواعد البيانات العلائقية. يأتي ذلك من تجربة توم مع استخدام ريلز والحصول على خلفية ارتباطية. كان Active Record هو الطبقة O / RM التي قصد Prisma تقريبها.

درو: أعتقد أننا نتحدث عن بنية بدون خادم هنا مع Redwood ، وتحدثنا إلى Chris Coyier وأعتقد أن حلقتين أو ثلاث حلقات ، كل شيء عن استخدام واجهات برمجة التطبيقات ووظائف السحابة والأشياء. لذا ، إذا أخذنا خطوة إلى الوراء ، إذا كنت تفكر في إطار عمل قائم على الخادم ، كما ذكرنا Ruby on Rails أو شيء مثل Laravel في عالم PHP. حتى مع واجهة React الأمامية ، فإن طلب واجهة برمجة التطبيقات الخاص بك سيشغل كودًا هو كود ريلز أو كود Laravel بالإضافة إلى كود المستخدم والتكوين. هل هذا هو نفسه مع ريدوود؟ هل هناك كود خادم Redwood حقيقي يتم تشغيله ، أم أن المزيد من الأدوات والبنية والغراء هو ما يمكّنك من تنفيذ التعليمات البرمجية الخاصة بك؟

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

درو: إذن ، هناك أدوات نشر ، تأخذ كل التعليمات البرمجية التي كتبتها ، وتجمعها معًا في نوع من الكرة السحرية من التعليمات البرمجية التي يمكن تنفيذها في السحابة وتضعها على AWS أو تفعلها لا يزال يتعين عليك إدارة هذه العملية بنفسك؟

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

درو: نعم ، لأنها نقطة مهمة ليست بسبب وجود عدد قليل من المجالات المختلفة التي نتتبعها هنا. أعتقد أن لدينا ثلاثة مجالات مختلفة. لدينا تطبيق React للواجهة الأمامية ، والذي يعمل في المتصفح ، ومن ثم لدينا واجهة برمجة تطبيقات تعتمد على GraphQL ، وتعمل كوظيفة سحابية ، والتي تستجيب لاستفساراتنا ، ولكنها تتفاعل بعد ذلك مع مخزن البيانات الذي يستخدم Prisma. ومخزن البيانات هذا هو ماذا وأين في هذا ، لأنه لا يمكنك تشغيل خادم MySQL على Netlify ، هل يمكنك ذلك؟

أنتوني: نعم ، هذا هو المكان الذي يأتي Heroku فيه. لذلك ، في الجزء الأخير من البرنامج التعليمي ، تقوم بنشر الواجهة الأمامية الخاصة بك على Netlify ثم تقوم بنشر النهاية الخلفية الخاصة بك في Heroku Postgres ويمكنك فقط الحصول على متغيرات التكوين الخاصة بك من Heroku ، قم بتوصيلها في Netlify. إن الحصول على الواجهة الأمامية لـ Netlify للتحدث إلى الواجهة الخلفية لـ Postgres هو أمر بسيط حقًا. لقد أرادوا أن يذهبوا مع الشيء الذي سيكون أسهل على أي شخص أن يتم نسفه ، ولكن لا يزال لديهم تقنية جيدة ومستقرة ومُختبرة في المعركة. في النهاية ، ما تحصل عليه من الصندوق بمجرد اتباع التعليمات ، أمر لا يصدق حقًا.

درو: سيكون عشاق Jamstack على دراية بخدمات مثل FaunaDB التي ذكرتها والتي توفر متجرًا للبيانات كواجهة برمجة تطبيقات ، و AWS لديها DynamoDB ، وحصلت Google على Cloud SQL ، وما إلى ذلك. لذلك ، ذكرت أن Redwood تبحث في التكامل ، أو أعتقد أن Prisma هو المكون الذي يبحث في التكامل مع هذه الأنواع من الخدمات في المستقبل؟

أنتوني: نعم ، هذا سؤال جيد. هذا شيء أتحدث إليه بالفعل مع Ryan Chenkie في Prisma حول نوع من المساعدة ، ما هو نوع قصة قاعدة البيانات لـ Redwood للأشياء التي لا تعمل بالضرورة مع Prisma؟ هل سيكون من الأفضل اكتشاف طريقة لجعل Redwood تعمل معها بشكل مباشر كما فعلت مع Fauna أم أنه سيكون من المنطقي أكثر تنفيذ برنامج تشغيل لـ Prisma؟ لذلك ، هناك طرق مختلفة للتعامل معها. من الواضح أن هناك مليون قاعدة بيانات مختلفة الآن يرغب الجميع في استخدامها ، لذلك ما مدى تحفيزك للحصول على مخزن البيانات الخاص بك عليه. هناك الكثير من مساهمات المنتدى التي يتم تقديمها هناك.

درو: إذن ، نظرًا لأن Prisma يفهم نموذجك ويعرف كيفية الاستعلام عنه ، فهل يمكنه إنشاء نوع من عمليات الترحيل أو أشياء من هذا القبيل لمساعدتك في إعداد قاعدة البيانات هذه؟

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

درو: يبدو أن امتلاك أداة جيدة حقًا حول الأطر هو اتجاه حديث تمامًا ، أليس كذلك؟ لكي لا نقول فقط ، "إليك كل الأشياء التي يمكن أن يفعلها إطار العمل هذا ، ولكن ربما إليك بعض أدوات CLI التي ستقوم بمجموعة كاملة منها نيابة عنك." هل تمتلك Redwood أدوات لأشياء مثل مولدات CLI وأشياء تساعدك على العمل بسرعة؟

أنتوني: ربما تكون هذه أكبر ميزة رئيسية تحصل عليها من Redwood ، هي أنك تحصل على مجموعة كاملة من المولدات المتطورة للغاية. بالنسبة لأي شخص شاهد العرض التوضيحي الأصلي لـ Ruby on Rails ، والذي قدمته DHH ، فقد أنشأ مدونة في غضون 15 دقيقة وقام بكل ذلك باستخدام Rails ، والناس مثل ، "توقف ، هذا رائع." هذا هو التأثير الذي تتماشى مع Redwood. يريدون منك أن تكون قادرًا على نسج كل شيء بسرعة كبيرة حتى تتمكن من إنشاء صفحات ، ويمكنك إنشاء تخطيطات ، ويمكنك إنشاء خلاياك ، التي كنت أتحدث عنها ، ويمكنك تنفيذ أمر سقالة من شأنه إنشاء واجهة CRUD. لدي قسم كامل ، الجزء الرابع من سلسلة المدونات ، فقط يشرح كل الكود الذي تقدمه لك السقالة. يمنحك الكثير من التعليمات البرمجية. هناك مولد معطل ، وهناك أيضًا منشئ Tailwind الذي يهيئ الريح الخلفية لك.

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

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

أنتوني: نعم ، هناك خياران مختلفان للمصادقة. يمكنك استخدام هوية Netlify. هذا هو الإعداد الافتراضي إذا انتقلت إلى البرنامج التعليمي ، ثم يمكنك أيضًا استخدام Auth0 ، ثم واحد لست على دراية به يسمى Magic.Link ، ومن المحتمل أن يكون هناك زوجان إضافيان مضافان في المستقبل. لكن نعم ، هناك حلان مدمجان هناك بالفعل ، وهذا هو آخر شيء تفعله ، لذا فإن الجزء الأخير من سلسلة مدوناتي المكونة من 12 جزءًا هو Auth one. لا أعتقد أنني اكتشفت استخدام Auth قبل أن أستخدم Redwood. إنه صعب وقد قاموا بعمل جيد بالتأكيد.

درو: هل يتكامل ذلك على مستوى الطريق ، أو مستوى الطريق ، آسف ، كيف يمكنك تأمين الأشياء؟

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

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

درو: يبدو أن نشر كل من الواجهة الأمامية وجوانب الخادم ، والأشياء الوظيفية بدون خادم ، مناسب بشكل طبيعي للنشر إلى Netlify. هل أنت مقيد بذلك مع ريدوود؟ أعني ، لقد ذكرنا أن Tom Preston-Werner هو أحد المؤيدين الرئيسيين لهذا الإطار ، وهو أيضًا عضو في مجلس إدارة Netlify. هل تعتقد أن هناك احتمالية لحدوث اقتران شديد للغاية إذا كنت ستختار Redwood كأساس لمشروع؟

أنتوني: نعم ، هذا شيء يدركه توم بالتأكيد. لقد استثمر في الكثير من الشركات التي تطفو على السطح. استثمر في Prisma و Fauna. إنه يريد فقط صنع الأدوات التي يريد استخدامها. لا يتعلق الأمر برغبتنا في حبسك في هذا الشيء بقدر ما بناه Netlify ، وهو يعتقد أنه الخيار الأفضل ، ولهذا السبب قاموا ببنائه حوله. لكنهم لا يريدون أن يتم قفله في أي هدف نشر واحد ، ولهذا السبب لدينا عمل يتم إنجازه على أشياء مثل إطار العمل بدون خادم وتحدث بعض الأشخاص عن Begin. نريد أن نكون واقعيين ، نريده أن يعمل مهما كانت حالة استخدام شخص ما. لذلك ، نوفر لك 90٪ من الطريق وبعد ذلك عليك فقط توصيل آخر شيئين لجعله يعمل مع أي خوادم تختارها.

درو: أعتقد أنه حتى Netlify يستخدم AWS Lambda لوظائف الخوادم ، لذا فهو حقًا جزء النشر الذي تعتني به Redwood هناك ، وفي الواقع يمكنك نشر ذلك في Lambda بنفسك. إن نشر الواجهة الأمامية هو مجرد ملفات ، أليس كذلك ، هل يعتمد CDN على باقي الملفات؟ لذلك ، هناك قدر كبير من المرونة هناك دون أن تكون مقيدًا جدًا.

أنتوني: نعم ، هناك مصطلح يتحدث عنه توم باعتباره الفكرة الفلسفية الأساسية وراء Redwood ، وهو أننا نريد الوصول إلى آلة نشر عالمية. هذا نوع من الأفكار ، هو أنه يمكنك فقط نشر الأشياء وليس عليك التفكير في الأمر على الإطلاق. لقد كان يتحدث عن هذه الفكرة لسنوات وسنوات وسنوات ، وهذا ما كان Jekyll يتحدث عنه في اليوم. عندما تسمع ذلك الآن ، فأنت مثل ، "أوه ، هل تقصد مثل Netlify؟" هذا هو الأساس الذي يمثله Netlify لمعظم الأشخاص الذين يعملون في الواجهة الأمامية. إنهم لا يفكرون حتى في النشر بعد الآن ، حتى أنه ليس مجرد فكرة.

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

أنتوني: نعم ، وشيء واحد يجب أن أشير إليه أيضًا ، لقد قمنا مؤخرًا بإعداد النشر الافتراضي لـ Vercel Redwood ، لذلك عندما تقوم بالنشر على تطبيق من جانب الخادم ، يمكنك أن تقول ، "لدي تطبيق Gatsby ،" و يعرف بالضبط كيفية إنشاء تطبيق Gatsby مقابل NextApp. لدينا هذا من أجل Vercel الآن. لذلك ، هناك بالفعل خيارات جيدة حقًا بخلاف Netlify أيضًا ، إذا كنت مهتمًا أكثر بذلك.

درو: إذا أردت البدء وإنشاء تطبيق وإدخاله في الإنتاج هذا الأسبوع ، فهل Redwood جاهز لذلك؟ هل هي ناضجة؟

أنتوني: نعم ، لدينا حوالي ستة تطبيقات قيد الإنتاج حاليًا. الأول كان يسمى Predict COVID ، والذي ظهر في مارس ، وهو يشبه تطبيق تصور البيانات في الوقت الفعلي. بعد ذلك ، لدينا مكرر. يتم تنفيذ ديف بواسطة روب ، إنها مثل وظيفة كرون مثل شيء بالنسبة لـ Jamstack. ثم ، هناك Tape.sh ، Duoflag أعتقد أنه واحد آخر. لذلك ، هناك على الأقل حفنة. إذا ذهبت إلى Redwood repo رائعًا ، فيمكنك رؤية قائمة بها جميعًا. إذا ذهبت إلى منتديات المجتمع ، يمكنك العثور على منشورات مكتوبة لها أيضًا ، لأن الناس وضعوها قيد الإنتاج وقالوا نوعًا ما كيف سارت الأمور. لقد نجحوا جميعًا حتى الآن ولم يقل أحد ، "لن أستخدم هذا مرة أخرى أبدًا."

درو: لكنها جديدة جدًا. أعتقد أنه لا مفر من ذلك ، ولكن من حيث النضج ، فإن Redwood جديد تمامًا ، ويحظى بمتابعة جيدة.

أنتوني: حسنًا ، إنه مضحك ، إنه كذلك وليس كذلك. تم الإعلان عنه في مارس. في تلك المرحلة ، عمل توم وبيتر عليها لمدة عام تقريبًا. So, they'd already put a ton of upfront work into this, so it wasn't like I'm going to announce this project with a Read Me and then start building it. By the time they announced it, it wasn't… It's not a 1.0 now, but it's pretty dang close in terms of what people would expect out of a 1.0. But, Tom is very against what we call type driven development so he always errs on the say it's not ready. So, we say it's not ready for production even though it's in production.

Drew: I think one thing that people sometimes get burned on using frameworks is that they'll build a project around the framework and then that framework will very quickly go to another major version that had backwards incompatibilities, and they're then left with a big project to update everything onto the new version of the framework. Is that something that's likely to happen with Redwood? I mean, none of us has got a crystal ball, but just with the technologies that are involved and the way it's structured, do you think that's a big danger or a little danger?

Anthony: Yeah, it's a super valid concern and definitely something the team has thought about. The CLI has an upgrade command, so you can basically every time there's a version bump, you just do a command and it bumps you up the version. I've been dealing with this a little bit just because of the series I wrote, I started it when it was on version 11 or 0.11, it's like 0.17 or something now. So, I've been slowly iterating on it as it's gone but nothing breaks. It's all, you get slowly things, or like “Oh, this is kind of a nice little touch you've got here,” but it's pretty much set in stone architecturally. Redwood as it's structured, the front or the back end is not going to change at all. It was very well thought out in terms of what they want architecturally. That's why they built it, so they could get something that's structured like this thing.

Drew: I guess with modern web development, there is a certain point where you're just never going to get away from being reliant on dependencies updating themselves and changing. I mean, even using React, React goes through as many different changes as anything else.

Anthony: That's exactly why Tom inventing semantic versioning.

Drew: I guess from the other side of that coin, if Redwood did happen to go away, which is always something we consider when picking a framework, if development stopped somehow, I guess the impact on a particular app might not be too great because it is just so heavily built on existing other projects around. Is that-

Anthony: Well, some would say that a Redwood tree can survive a lot, it survives for a very long time. That may have been why it's called that, is that you can just make a site and deploy it and it's not going to break, it's just going to work. So yeah, maintainability, sustainability, all that kind of stuff, that's huge. Being built by people who tried to scale Rails apps, I imagine they've thought a lot about that. But in terms of the going away part, that's always going to be a danger with any open source project, so I think what you have to look for is how enthusiastic is the community to continue it without the team if that ever happens. I don't think you even need to worry about that because Tom's a billionaire and he has a venture funding thing that is funding some of the development. It is an open source project that is well funded actually. It has four full time members, Tom, Rob, David, and Peter. You just go to the forums, you can see the activity that's going on, so I wouldn't worry about that too much-

درو: طبعًا.

Anthony: Beyond normal open source worries that come along with that stuff.

Drew: What is the community like? You mentioned the community, are there lots of people using it and contributing to the code base or is it mainly the core team who are doing the development?

Anthony: Yeah, it's very much structured to be a community thing. They want to get as much buy in from the community as possible, and this comes from the lineage like you said. There's few people with more open source cred than Tom, so he's done a really great job of bringing people into the fold. I think just my story in general is a big win for the community because I came in, I'm a boot camp student, I'm learning all this stuff as I go. I'm not pushing code to the repo, I'm making doc fixes and writing blog articles and stuff, but they still invited me to the core contributors meeting because they saw what I was doing and they thought it was adding value. Yeah, there's really a lot of things about how they approach community building that I have a lot of respect for, and that is why I've been so invested in it and putting so much of myself into it.

Drew: Some frameworks have got this sort of natural bent for certain types of projects. علي سبيل المثال. The Python framework, Django came out of online news publishing, and so it's a really good fit if you want to rapidly publish content like you would in a news organization. Does Redwood lean in any particular direction when it comes to the type of projects? Is it suited for content publishing or building web applications or-

Anthony: It's made to be fairly agnostic to that. It wants to be a tool that you use for a lot of stuff. First, before it was called Redwood, it was called Hammer, the idea being that you do a lot of stuff with a hammer. But, there definitely is a kind of sweet spot, which I think is the multi client type applications. So, if you know that you're starting with a web front end but you're pretty sure you're going to end up with a mobile client as well, then it's a really good fit for that because it starts you off in a way that you're going to be able to extend into having multiple clients with GraphQL, which we kind of talked about a little bit. So, I'd say that'd probably be the first thing that I would say is its sweet spot. But, it's meant to work for as many things as possible.

Drew: Does Redwood have a published roadmap of where it's going? What can we expect to be coming in the near future?

Anthony: Glad you asked. We just put out a roadmap to 1.0 less than a month ago, it was probably like two or three weeks ago. It kind of itemizes things that we're working on, things we think we're kind of close on, things we think we still have a long ways to go on. That kind of helps the community see where can I help contribute. That's one of the things we're really great about is showing here are the things that still need to be worked on. They're aiming for 1.0 by the end of the year. We'll see where we get with that, but that's the trajectory we're currently on.

Drew: One of the beauties of a Jamstack and a serverless approach I always think is that it's this idea of lots of pieces loosely joined that has served us so well in computer science up until this point. It should be really easy to scale up a Jamstack and serverless project because you can add multiple front ends or you could put more resources behind running your functions, and you can scale up a big engineering team by having people work on different small pieces. Is there a danger that adopting a framework around all of that, that you might be taking a distributed architecture and creating a tighter binding than you might otherwise have? Could Redwood become the monolith that acts as a bottleneck in your engineering efforts?

Anthony: Yeah, this is something I think about a lot because as I learned web development, I was taking… I'm in a boot camp that supposedly is full stack development, but you learn each piece in isolation. We're essentially learning the PERN stack, but you learn React, and then we learned Express. We never talked about how it actually works together. So, I do think that there is definitely a danger of not being able to comprehend in your project because of how it's all wired up. So, what I really liked about Redwood is that it just made sense. It was a mental model of how to think about my entire app and all the pieces and how they fit together in a way that really made sense to me. But, what I was surprised to find doing the Fauna project is that it's much more modular than you would think based on… You talk about it, and like you said, it sounds like it's a monolith thing, but you can rip pieces out and replace them with other pieces and they can still work. So, it's made to be a fully integrated solution, but not a solution that is tightly coupled just because this is a good way to integrate all these technologies doesn't mean you need to tightly couple them to integrate them well.

Drew: Yeah, that sounds a very promising way of structuring things, and it's going to be really exciting to see what happens with Redwood as it gets to version 1.0. Is there anything else we should know about it that we haven't talked about?

Anthony: No. I mean, I would say if you're interested, just check out the tutorial on YouTube, the RedwoodJS tutorial. They have what they call tutorial driven development, which is kind of a play on Read Me driven development, which is another thing Tom coined, that you should start with a Read Me, and then create your code to make sense with what your Read Me was. This is the idea of you create a tutorial and then you write your framework to make the tutorial work. So, that's why it's a really easy way to get spun up with it because it was made to make sense of going through the process of learning it. They've really thought about how to actually get onboarded into a massive framework with all these different pieces and all this different new tech. They progressively reveal it to you as you go. The series that I wrote is very heavily influenced by it. I essentially built the same project, but I write my own stuff as I go, and reference the docs. So, if you're interested in just learning Redwood, start with the actual tutorial and then check out my series.

Drew: So, I've been learning all about Redwood, what have you been learning about?

Anthony: Yeah, so I've been learning about CMSs, and I was actually really curious to get your thoughts on this because I imagine you've been around the block, you know a lot of CMSs. Obviously, you know you've got your WordPress's, your Drupal, but what's really interesting with something like Redwood is since you have this GraphQL stuff baked in, it has the CMS, it's just such a natural fit. So, I'm trying to figure out, what are interesting headless CMSs to check out? Which ones have GraphQL integration? Which ones have different sweet spots? If I wanted to take a CMS to build an app with RedwoodJS, what would you recommend?

Drew: That is a good question, and I'm not sure I have an immediate answer. I have looked at lots of different CMSs, not particularly with a view to GraphQL. I've not worked with GraphQL myself yet, and so that was not-

Anthony: Oh man, you've got to join the club, dude.

Drew: Yeah, no, I'm definitely getting onboard. But yes, I have a requirement at work that may be coming up to know a bit more about GraphQL, so it's certainly one of the things that I need to be learning.

Anthony: I actually learned GraphQL through Redwood. I didn't really know GraphQL, and I'd say you should know a little bit before going into it, and I had a very, very tiny basic knowledge. You can actually learn what a schema definition language is, and that GraphQL kind of jargon. You'll learn a lot and you'll pick it up as you go with Redwood.

Drew: Yeah, I should definitely get onboard and maybe doing some Redwood is the way to do it. Perhaps I need to pick up a project and start going with Redwood and see where it takes me.

Anthony: Yeah, at the very least I would say just check it out, just because it's interesting. I find it to be just a really fascinating thought experiment of how do we do modern web application development differently and more coherently.

Drew: If you, dear listener, would like to hear more from Anthony, you can find him on Twitter at ajcwebdev. His comprehensive series of articles about getting started with Redwood are on the Redwood community site, which we'll link to from the show notes. Of course, you can find all about Redwood and get started at RedwoodJS.com. Thanks for joining us today, Anthony. هل عندك كلمات فراق؟

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