التطوير
المساهمة في التطوير
مشاريع تنتظر مساهمين
اتفاقية المساهمة
فريق العمل
مساهمون

يستخدم مشروع تطوير لغة الأسُس مستودع Git لحفظ الشفرة المصدرية ويُستخدم نظام Redmine لإدارة المهام والشوائب وأيضاً للتبليغ عن الشوائب أو الأخطاء. يُطور المشروع في بيئة لينُكس وتستخدم التقنيات التالية لتطويره:

  • القلب: كُتب القلب باستخدام C++17.
  • المكتبات المعيارية: تستخدم المكتبات المعيارية C++17 و LLVM.
  • يُبنى المشروع باستخدام cmake.

مستودع الشفرة المصدرية للغة الأسُس

راجع وثيقة تعليمات البناء والتشغيل للتعرف على خطوات البناء من الشفرة المصدرية وتفاصيل الاعتماديات الخارجية.

المساهمة في التطوير


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

إن لم يكن عندك القدرة أو الوقت للمساهمة، فبإمكانك المساهمة بالتبرع لهذا المشروع الخيري:

مشاريع تنتظر مساهمين


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

دعم مزودين آخرين في مكتبة هـوية (Identity)

تدعم مكتبة هـوية تسجيل الدخول إلى موقعك باستخدام خدمة جوجل للمصادقة. نحتاج لتطوير المكتبة لإضافة الدعم لمزودين آخرين مثل:

  • فيسبوك
  • مايكروسوفت
  • تويتر
  • جت هب يتطلب دعم خدمة جديدة في هذه المكتبة إنشاء صنف جديد لتلك المكتبة بطرية مشابهة لصنف خدمة جوجل.

تطويرات مـنصة_ويب (WebPlatform)

إضافة دعم لعمليات WebGL

مـنصة_ويب لا تدعم حاليًا عمليات WebGL، وهي العمليات التي تستخدم لعرض الرسوم ثلاثية الأبعاد على المتصفح. نحتاج لإضافة الدالات المطلوبة لدعم عمليات WebGL ويتضمن ذلك تعريف الدالات والأصناف المطلوبة وربطها بالواجهة البرمجية للمتصفح.

إضافة الدعم لمقابس الويب (WebSockets)

مقابس الويب (Web Sockets) تستخدم لإنشاء اتصال ثنائي الاتجاه بين المتصفح والخادم لتمكين إرسال الرسائل بالاتجاهين. لا يوجد حاليًا أي دعم لهذه العمليات في مـنصة_ويب، ولا في مكتبة Http التي تعتمد عليها مـنصة_ويب لإنشاء الخادم. يتضمن هذا المشروع تمكين إنشاء مقابس الويب في مكتبة Http ثم تحديث مـنصة_ويب لتمكين تعريف الدالات التي تستقبل الرسائل عبر المقبس، وقد يتطلب ذلك إنشاء مبدلات (modifiers) خاصة لهذا الغرض. الهدف تمكين المستخدم من تعريف مقابل الويب في برنامجه بأبسط وأوضح طريقة ممكنة.

إضافة الدعم للاقط الصوت

يتضمن هذا المشروع تمكين مستخدم مـنصة_ويب من استخدام لاقط الصوت لتسجيل الأصوات أو إنشاء تيار بيانات لنقل البيانات الصوتية (كما في حال إجراء مكالمات صوتية).

إضافة الدعم للكاميرا

يتضمن هذا المشروع تمكين مستخدم مـنصة_ويب من استخدام الكاميرا داخل برنامجه لالتقاط الصور أو المقاطع المرئية وتمكين إنشاء تيار بيانات لنقل البيانات المرئية (كما في حال إجراء مكالمات الفيديو).

تمكين مشاركة الشاشة

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

تمكين استخدام DataDog مع التطبيقات المكتوبة بمنصة الويب

خدمة DataDog تتيح للمستخدم مراقبة أداء موقعه وتوفر العديد من القياسات المهمة لمن يريد مراقبة أداء خادمه. يتضمن هذا المشروع تمكين المستخدمين من مراقبة أداء المواقع المطورة باستخدام مـنصة_ويب عبر خدمة DataDog، وهذا يشمل:

  • مراقبة أداء المنافذ المرئية والبيانية (أي تسجيل كل استهداف لأي منفذ مع تسجيل وقت التنفيذ).
  • تمكين المستخدم من إرسال السجلات (log messages) إلى خدمة DataDog.
  • تمكين المستخدم من تسجيل أداء قاعدة البيانات.

قد تكون النقطتان الأخيرتان ممكنتين من دون إجراء أي تعديل على منصة ويب (عبر استخدام أدوات DataDog التي تعمل على مستوى نظام التشغيل)، لكن النقطة الأولى حتمًا تحتاج لبعض التعديلات على مـنصة_ويب.

تطويرات مكتبة صـفوف (Rows)

تمكين الانتقالات (migrations)

تمكين المستخدم من إنشاء انتقالات لجداوله وبياناته في مكتبة صفوف.

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

تمكين استخدام العمليات اللا تجزيئية فيى جميع عمليات القراءة والكتابة من قاعدة البيانات. استخدام العمليات اللا تجزيئية اختياري.

تمكين العلاقات بين الجداول (Relations)

تمكين المستخدم من تعريف العلاقات بين جداوله في تعريفات أصناف البيانات. تتيح هذه العلاقات:

  • تحميل قيد متعلق من قيد آخر. مثلا، استخدام قيد ا لتحميل القيد ب المتعلق به دون الحاجة لتمرير قيم المعرفات يدويًا.
  • تمكين تحميل القيود مع متعلقاتها في عملية واحدة.

مكتبة للتعامل مع قاعدة بيانات مونغو (MongoDB)

إنشاء مكتبة للربط مع قواعد بيانات مونغو دي بي. متطلبات المكتبة:

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

إضافة ربط لمكتبة TensorFlow

إضافة مكتبة للربط مع TensorFlow للتعلم العميق. تتيح المكتبة استخدام TensorFlow للاستدلال (inference) والتدريب.

بناء مكتبة لإرسال الرسائل

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

مكتبة للمصادقة متعددة العوامل

إنشاء مكتبة لتمكين المبرمج من تفعيل المصادقة متعددة العوامل (multi-factor authentication) بالاعتماد على أحد الخدمات الجاهزة.

مكتبة للترجمة النصية

إنشاء مكتبة لتمكين المبرمج من إجراء الترجمة الآلية للنصوص بالاعتماد على أحد خدمات الترجمة، مثل مترجم جوجل.

مكتبة لتحويل الكلام إلى نص والعكس

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

مكتبة لبوابة مُيسّر للدفع الإلكتروني

إنشاء مكتبة للربط مع [بوابة ميُسر للدفع الإلكتروني](https://moyasar.com/) لتمكين المبرمج من استلام الأموال من زبائنه عبر هذه البوابة.

مكتبة للدفع عبر رصيد الهاتف المحمول

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

مكتبة لقراءة وكتابة ملفات YAML

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

مكتبة لقراءة وكتابة ملفات XML

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

مكتبة لتعريف متغيرات عمومية مع مزامنة تلقائية بين المسالك

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

مكتبة لكتابة الاختبارات الآلية

إنشاء مكتبة لتسهيل كتابة الاختبارات الآلية. تتيح المكتبة:

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

مكتبة لكتابة السجلّات

إنشاء مكتبة تمكن المستخدم من كتابة السجلّات (log messages). تتيح المكتبة:

  • طباعة الملاحظات بمستويات متعددة (خطأ، تحذير، إعلام، إلخ).
  • تصفية الملاحظات اختياريًا حسب المستوى.
  • الطباعة إلى ملف أو إلى تيار الخرج (output stream) أو تيار الأخطاء (error stream) أو تيار اختياري يوفره المستخدم.

ربط مع مكتبات Vulkan

إنشاء مكتبة ربط للغة الأسس مع واجهة Vulkan لبرمجة تطبيقات الرسوميات والوسائط المتعددة.

ربط مع مكتبة raylib

إنشاء مكتبة لربط لغة الأسس مع مكتبة raylib لبرمجة الألعاب وتطبيقات الوسائط المتعددة.

ربط الأسس مع محرك Godot

تمكين محرك الألعاب Godot من تنفيذ بُريمجات تحكم مكتوبة بلغة الأسس إلى جانب اللغات الأخرى التي يدعمها المحرك حاليّا.

دعم لغة الأسس في متحكم صغري

دعم لغة الأسس في إنشاء برامج لمتحكم صغري (microcontroller) مثل آردوينو أو أي منافس آخر يدعم استخدام لغة السي. يتطلب هذا المشروع إنشاء مكتبات الربط اللازمة للتحكم بالحُويسيب مع توفير الطريقة اللازمة لتحميل البرنامج على الحُويسيب.

ربط مع مكتبة libusb

إنشاء مكتبة ربط للغة الأسس مع مكتبة libusb لتمكين المستخدم من التحكم بمنافذ USB. هذه المكتبة مهمة لمجال إنترنت الأشياء وبرمجة الأنظمة المدمجة (embedded systems).

ربط مع مكتبة rabbitmq-c

إنشاء مكتبة لربط لغة الأسس مع مكتبة rabbitmq-c، وهي مكتبة تتيح استخدام نظام RabbitMQ لإرسال الرسائل بين الأنظمة الحوسبية.

مكتبة لخدمة خرائط جوجل

إنشاء مكتبة للربط مع الواجهة البرمجية لخدمة خرائط جوجل لتمكين المستخدم من عرض الخرائط داخل تطبيقه.

مكتبة لتحديد الموقع الجغرافي

إنشاء مكتبة لتمكين تحديد الموقع الجغرافي من خلال عنوان IP، عبر الربط مع أحد الخدمات الجاهزة لتحديد المواقع.

إضافة لغة الأسس إلى VS Code

إنشاء إضافة لدعم لغة الأسس في محرر VS Code. تحتاج هذه الإضافة لتمكين:

  • تلوين الشفرة المصدرية المكتوبة بلغة الأسس.
  • تمكين الإكمال التلقائي للملفات المكتوبة بلغة الأسس. كخطوة أولى يمكن للإكمال التلقائي أن يكون بسيطًا، بحيث لا يكون مرتبطًا بالسياق.

اتفاقية المساهمة


بمساهمتك في هذا المشروع فأنت:
  • تشهد بأنك تملك الحقوق لأي شفرة مصدرية تقدمها لهذا المشروع.
  • وتعطي فريق العمل الحق في استعمال شفرتك ونشرها وتطويرها وبدون أي قيود ضمن هذا المشروع.

فريق العمل



مساهمون