عن المشروع

CodeWorld هي بيئة برمجة تعليمية مبنية بلغة Haskell. توفر نموذجًا رياضيًا بسيطًا للأشكال الهندسية والرسوم المتحركة والألعاب التفاعلية أو متعددة اللاعبين. تهدف البيئة المستندة إلى الويب إلى دعم التدريس من خلال محرر ومترجم بدون إعداد مسبق، ومشاركة سهلة وتخزين سحابي للمشاريع، والقدرة على تشغيل البرامج مباشرة في المتصفح باستخدام GHCJS. الأنواع - CodeWorld (code.world) يستخدم نسخة تعليمية من Haskell ومكتبات مصممة لدعم تعليم الرياضيات. - CodeWorld Haskell (code.world/haskell) يستهدف Haskell القياسي، بحيث يمكن تشغيل البرامج على الموقع باستخدام GHCJS أو تجميعها محليًا باستخدام حزمة codeworld-api و blank-canvas. - CodeWorld Blocks (code.world/blocks) يوفر واجهة سحب وإفلات للطلاب الأصغر سنًا؛ يلاحظ ملف README أنه لا يزال يحتوي على أخطاء ولا يُنصح باستخدامه. الحالة والدعم يوصف CodeWorld بأنه مستقر وقد استُخدم في المدارس لسنوات، مع قائمة جزئية بالمستخدمين في وثائق المستودع. تُجدول التغييرات الجذرية بين فصول المدارس النموذجية في الولايات المتحدة (K-12) لتقليل الاضطراب. توزع Google الكود ولكنها تذكر أن CodeWorld ليس مشروعًا رسميًا من Google ولا تقدم أي دعم؛ تُوجه الأسئلة إلى القائمة البريدية codeworld-discuss، ويوجد منتدى أسئلة وأجوبة موجه للطلاب في help.code.world. البدء يمكن للمستخدمين زيارة code.world مباشرة؛ لا يلزم تنزيل أو تثبيت لاستخدام الخدمة المستضافة. المستودع مخصص لمن يريدون عمل fork أو تعديل أو المساهمة في البيئة. البناء والنشر يوصف بناء وتشغيل CodeWorld بأنه طويل لكنه مؤتمت بواسطة نصوص تثبيت في الدليل الجذر، ويعمل على معظم توزيعات لينكس بما في ذلك Debian و Ubuntu و RedHat و CentOS. الخطوات: الانتقال إلى جذر المشروع، تشغيل ./install.sh، ثم ./run.sh، والوصول إلى النظام على localhost:8080. بعد التغييرات، يعيد ./build.sh تجميع CodeWorld نفسه باستخدام الأدوات والمكتبات المثبتة مسبقًا، ثم يبدأ ./run.sh الخادم. كما تُوثق أوامر بناء وتشغيل Docker، على الرغم من أن README يذكر أن Docker ليس بعد طريقة التطوير الموصى بها وأن الحاوية تفتقر إلى الوصول إلى معرف العميل، ومشاركة NFS، وخطوات إعداد أخرى. يُلاحظ أن Stack غير مدعوم للبناء المحلي ولا يعمل حاليًا كبديل للنصوص البرمجية أو Docker. المصادقة يدعم CodeWorld مصادقة Google، أو المصادقة المحلية، أو التشغيل مع تعطيل المصادقة مع وظائف مخفضة. بدون مصادقة، يمكن للمستخدمين كتابة وبناء وتشغيل الكود ولكن لا يمكنهم حفظ أو إدارة المشاريع والمجلدات. تتطلب مصادقة Google مفتاح Google API مخزنًا في web/clientId.txt؛ يلتقط المثيل الجاري التغييرات على هذا الملف. يربط README بوثائق Google Cloud لإنشاء مشروع ومعرف عميل OAuth، ويشير إلى أن هذه هي الآلية المستخدمة من قبل الموقع الرسمي المباشر. تستخدم المصادقة المحلية قاعدة بيانات SQLite3، وتخزن فقط تجزئات كلمة المرور BCrypt، وتستخدم مصادقة عديمة الحالة قائمة على JWT. يتم تفعيلها عند وجود ملف codeworld-auth.db في جذر التطبيق. تدير أداة سطر الأوامر codeworld-auth الحسابات: init-accounts ينشئ قاعدة بيانات فارغة، create-account ينشئ مستخدمًا بكلمة مرور عشوائية وحالة حساب مثل Expired، وأوامر فرعية أخرى تتعامل مع التحديثات والحذف. يجب إنشاء سر JWT في codeworld-auth.txt باستخدام generate-secret؛ يجب ألا يكشف الخادم هذا السر. تحذيرات على الخوادم الافتراضية، غالبًا ما تكون ذاكرة الوصول العشوائي الافتراضية غير كافية لـ GHC لأن CodeWorld يبني مشاريع Haskell كبيرة جدًا أثناء التثبيت. يقترح README إنشاء ملف مبادلة بحجم 2 جيجابايت باستخدام dd و mkswap و swapon؛ قد يكون التثبيت بطيئًا ولكن يجب أن ينجح، ويمكن عادةً إزالة ملف المبادلة بعد أول تشغيل للخادم ما لم تكن البرامج الكبيرة جدًا مقصودة. المساهمة تتضمن المساهمة الموافقة على اتفاقية ترخيص المساهم، مع التفاصيل في CONTRIBUTING.md. تذهب الأخطاء وطلبات الميزات الرسمية إلى متتبع مشكلات GitHub.