Alusus' project uses Git for source code control, and it uses Redmine for task and bug management as well as for reporting bugs and other errors. The project is developed under a Linux environment and it uses the following technologies:

  • Core: Written in C++17.
  • Standard Build Libraries: Written in C++17 and LLVM.
  • The project is based on cmake.

Alusus' Source Code Repository

Visit the Building and Running Instructions document for details on steps to build from source code as well as external dependencies.

Contributing to the Project


The team is in need of volunteers in the areas of programming, documentation, as well as spreading the word among the programming community. Contribution to this open source project has many benefits. In addition to benefeting the society, working on this project gives you experience in latest technologies and builds a reputation of being a professional and highly skilled programmer. Whoever contributes to this project will have his name added to the official website either as a contributor or as a core team member. Core team members are those who can contribute continuously and dedicate a certain number of hours every week. Those will get an email address @alusus.org.
There are many scopes to which a person can choose to contribute as explained in the next section.

If you can't contribute or don't have the time, then you can help by donating to the project:

Projects Awaiting Contributions


The following is a list of projects awaiting contributors to work on them. This list represents what we consider to be more important than other projects, but contributors are free to choose to work on a project outside of this list if they wish.

Supporting Additional Providers in Identity Library

The Identity library currently supports logging into your website using Google authentication service. We need to expand the library to add support for other providers such as:

  • Facebook
  • Microsoft
  • Twitter
  • GitHub

Adding support for a new service in this library involves creating a new class similar to the Google service class.

WebPlatform Developments

Adding WebGL Operations Support

WebPlatform currently lacks support for WebGL operations, which are used for rendering three-dimensional graphics in the browser. We need to add the necessary functions to support WebGL operations, including defining the required functions and classes and integrating them into the browser's API.

Adding WebSockets Support

Web Sockets are used to establish a bidirectional connection between the browser and the server to enable two-way messaging. Currently, there is no support for these operations in WebPlatform, nor in the Http library that WebPlatform relies on to create the server. This project involves enabling the creation of Web Sockets in the Http library and then updating WebPlatform to enable defining functions that receive messages through the socket. This may require creating special modifiers for this purpose. The goal is to enable users to define Web Sockets in their programs in the simplest and clearest way possible.

Adding Audio Capture Support

This project aims to enable WebPlatform users to use audio capture to record sounds or create a data stream for transferring audio data (such as in voice calls).

Adding Camera Support

This project aims to enable WebPlatform users to use the camera within their programs to capture images or video clips and enable the creation of a data stream for transferring visual data (such as in video calls).

Enabling Screen Sharing

This project aims to enable WebPlatform users to capture a shot or a video of the screen and enable the creation of a data stream to transfer this data when sharing the screen with other users.

Enabling DataDog Usage with WebPlatform Applications

The DataDog service allows users to monitor the performance of their website and provides many important metrics for those who want to monitor the performance of their server. This project aims to enable users to monitor the performance of websites developed using WebPlatform through the DataDog service, including:

  • Monitoring the performance of UI and data endpoints (i.e., logging each access of any endpoint with execution time).
  • Enabling users to send log messages to the DataDog service.
  • Enabling users to log database performance.

The last two points may be achievable without needing any modifications to WebPlatform (by using DataDog tools that operate at the operating system level), but the first point definitely requires some modifications to WebPlatform.

Rows Library Developments

Enabling Migrations

Enabling users to create migrations for their tables and data in the Rows library.

  • This feature is to enable migrations by adding functions to the data model class to transform the table from a previous version to the current version.
  • The migration function is only required if a previous version of the table is found in the database. In other words, the function can be removed once the user confirms that it has been executed on all database instances.
  • If the table does not exist in the database, migration functions are not required, and the Rows library automatically creates the table based on the class definition.
Enabling the Use of Transactions

Enable the use of transations in all database read and write operations. The use of transactions should remain optional.

Enabling Model Relations

Enable users to define relations between their data models in the class definitions. These relations allow:

  • Loading a related record from another record. For example, using a record to load the record related to it without manually passing identifier values.
  • Loading of records with their related entities in one operation.

MongoDB Database Interaction Library

Create a library to interact with MongoDB databases. Library requirements:

  • Enabling all read and write operations from the database.
  • Enabling reading data and automatically converting it into a class object written in Alusus language, and vice versa, meaning reading data from a class object and automatically converting it into the format that MongoDB expects.

TensorFlow Library Binding

Adding a library to bind with TensorFlow for deep learning. The library enables the use of TensorFlow for inference and training.

Building a Messaging Library

This project aims to create a library for sending messages across different platforms such as SMS, social media, and email. The goal of the project is to choose one of the comprehensive messaging services, such as the Twilio service, and build a library to interface with this service.

Multi-Factor Authentication Library

Creating a library to enable programmers to activate multi-factor authentication relying on ready-made services.

Library for Text Translation

Create a library to enable programmers to perform automatic translation of texts using a translation service such as Google Translate.

Library for Speech to/from Text Conversion

Create a library that converts speech to text, and text to speech. It can rely on a ready-made service and make the library just a wrapper for this service, but if possible, building a library that does not rely on an external service would be the better option.

Binding Library for Moyasar Payment Gateway

Create a library to integrate with Moyasar electronic payment gateway to enable programmers to receive payments from their customers through this gateway.

Library for Payment Using Mobile Phone Credit

Many people do not have credit cards, but almost everyone has mobile phones. Some services provide the ability to receive payments from customers through their mobile phone credit. The goal of this project is to find a service that provides this capability and create a library to integrate with this service.

Library for Reading and Writing YAML Files

The goal of this project is to create a library for reading YAML files and converting them into class objects that can be easily accessed from within the program. The second step of the project is to enable writing, i.e., enabling writing a class object to a YAML file.

Library for Reading and Writing XML Files

Create a library for reading XML files and converting them into class objects that can be easily accessed from within the program. The second step of the project is to enable writing, i.e., enabling writing a class object to an XML file.

Library for Global Vars with Auto Multithreading Synchronization

Create a library that facilitates the creation of global variables that can be safely used across multiple threads. The aim of the project is to create a template class that receives the user's data type and handles synchronization of access to the data, allowing the user to choose between synchronization during both read and write (i.e., at any given time there is no more than one thread accessing the variable) or synchronization during write only (i.e., at any given time there is no more than one thread writing to the variable, but multiple threads can read the data at the same time).

Library for Automated Testing

Create a library to facilitate writing automated tests. The library enables:

  • Defining automated tests as functions.
  • Executing automated tests and providing detailed execution results such as the list of successful and failed tests.
  • Filtering tests that the user wants to execute.
  • Setting a maximum execution time for each test.

Logging Library

Create a library that allows the user to print log messages. The library enables:

  • Printing log messages at multiple levels (error, warning, informational, etc.).
  • Optionally filtering messages by level.
  • Printing to a file, standard output stream, standard error stream, or an optional stream provided by the user.

Integration with Vulkan Libraries

Create a binding library for Vulkan API to enable building multimedia applications using Alusus language.

Integration with raylib Library

Create a binding library for raylib library, for developing games and other kinds of multimedia applications.

Integration with the Godot Engine

Enable the Godot game engine to execute scripts written in Alusus language alongside the other languages currently supported by the engine.

Support for Programming Microcontrollers

Add support for using Alusus language to develop programs for microcontrollers such as Arduino or any other competitor that supports using the C language. This project requires creating the necessary library bindings to control the microcontroller and providing the necessary method to upload the program to the microcontroller.

Integration with libusb Library

Create a binding for libusb library, to enable the user to control USB ports from Alusus programs. This library is important for the Internet-of-Things field and embedded systems programming.

Integration with rabbitmq-c Library

Create a binding for rabbitmq-c library, which allows using the RabbitMQ system to send messages between computing systems.

Library for Google Maps Service

Create a library to integrate with the Google Maps service API to enable the user to display maps within their applications.

Library for IP Geolocation

Create a library to enable geolocation based on IP addresses, by integrating with one of the ready-made location detection services.

Add Alusus Support to VS Code

Create a VS Code extension to add support for Alusus language to the editor. This extension needs to enable:

  • Syntax highlighting for code written in Alusus language.
  • Auto-completion for files written in Alusus language. Initially, auto-completion can be basic, i.e., not context-aware.

Contribution Terms and Conditions


By submitting any contribution:
  • you certify that you own the rights to any code you are submitting, and
  • you agree to give the team permissions to use, distribute, and further develop your contributions without limitations within this project.

Development Team



Contributors