KnoRBA Project Overview
Introduction
KnoRBA is a forward thinking research and development project to change the basics of software engineering towards what our highly networked and distributed computing world demands.
Since the advent of computer languges, hardware has undergone extreme revolutions. Today, an average car uses between 50~100 networked processors to work. Homes and streets are filled with sensors and mobile computing is ubiquitous. Professional workstations do the task of what used to be done with a supercomputer, and supercomptuer are exponentially massive, aiming towards the era of exascale computing.
Even though abstractions for programming languages have evolved from a single routin, to functional, to procedual, to object-oriented, the way a program works have mostly remained the same: local and sequential.
KnoRBA is bidding to radically change this trend -- not only in a specific area like HPC or IoT, but in the fundamentals of computer engineering -- by using "agent" as a general purposed programming component model for the first time. A KnoRBA program is merely a collection of concurrent autonomous agents sharing the same system resources provided for them by the Agent Runtime Environment (ARE). The ARE works like a micro-kernel operating system. It runs and manages the life cycle of agents and agent-based applications. But it relies on agents running on it to perform system tasks like connecting to other nodes, interacting with user, etc. A KnoRBA application has no main thread. There is no single starting point. Just like the human brain works, a KnoRBA program starts from anywhere a stimulation (message) comes in, and goes idle when there is no stimulations.
Architecture
Unlike your everyday computer programs, KnoRBA agents do not compile into executables. They compile into shared/dynamic libraries. A KnoRBA app is simply a bundle of these binaries in a directory with .kap extension or archive with .kar extention. This bundle is supplied with a manifesto file that is used to create named agent instances, declare their connections and relations, etc.
Each physical node runs one instance of Kernel ARE -- which is an ARE running a special app called the Kernel.kap. This ARE would connect to the others and establish a distributed backbone on which other apps would run. Then, it stands by for app execution requests. Each user app would be run on a "Vritual" ARE that spans across all available node.
It is enough to submit your program to one of the local Kernel AREs. It will be sent to all other AREs automatically if necessary.
The xData layer provided for every agent ensures all agents across language and platform boundaries can understand each other. This is called implementation transparency. KnoRBA language front ends provide a set of APIs for the programmer to represent program data (variables) in portable KnoRBA format that can be transmitted via xData layer.
Sub-projects
KnoRBA project consists the following:
-
KnoRBA Agent Runtime Environment (ARE)
-
Language front ends
-
KnoRBA C++ Library (libKnoRBA)
-
Java (legacy, not maintained)
-
... more to come ...
-
And, a sister project called the KFoundation wich is to fill the lack of modern but elegant standard libraries in C++.
So far libKnoRBA, ARE and KFoundation combined, consist of about 40,000 lines of code.