REBOL 3.0 Component Architecture
Carl Sassenrath CTO, REBOL Technologies Updated 26-Mar-2008 REBOL 3 Home Page
Purpose
This document describes the REBOL 3.0 component architecture from the
top design level. It is meant to provide an overall description of the
system, and we do not cover the deeper technical details here. (That is
the subject of separate documentation.)
Structure
The primary goal of REBOL 3.0 is to build a lightweight, extensible platform architecture that operates over a wide variety of operating systems and devices.
REBOL 2.0 was primarily closed source (except mezzanine functions and protocol schemes). As a result, REBOL Technologies (RT) was responsible for porting all components to all operating systems (more than 40 systems and over 150 product executables) as well as building and maintaining components such as MySQL, Oracle, ODBC, audio output, encryption, etc. This put a heavy burden on RT to keep these up-to-date and fully tested.
In order to achieve our REBOL 3.0 goal, we introduce a hybrid-open-source model. The benefit of this approach is that it enables the REBOL development community to add and help maintain extended features, while at the same time keeping the REBOL language as a singular standard that operates identically over all systems and devices.
There are four structural components to this model, as show in the diagram below:

Each of these components is explained below.
(1) Host Environment - Open
The host environment is the "main program" that runs REBOL. It can be a stand-alone program such as REBOL/View, a plugin for a web browser, a web server, an interactive development environment (IDE), or even embedded within custom applications.

The environment defines an operating system abstraction layer (OSAL) that can be ported to a wide range of systems, including desktop systems, set-top boxes, mobile devices, and cell phones. This approach gives developers a way to run and improve REBOL on their specific target platforms.
For example, REBOL may be part of a web browser plugin that gets downloaded from a web site when required. RT itself may support the Firefox or IE browsers. Other browsers could be supported by members of the development community and distributed via the RT website.
On the server, REBOL may be embedded within an Apache web server module (mod) or started as a bonafide Windows service or OSX bundle. Again, the range of possibilities is restricted only by the needs and talents of developers.
RT will provide an online source code archive location for developers to access and improve the host environment.
(2) Runtime Core - Closed
This is the OS independent kernel that provides standard REBOL capabilities across all systems and devices. It is this component that makes REBOL operate identically on Windows, OSX, Linux, BSD, Sony, Nokia, Nintendo, and other systems.
It should be noted that this component is not open source; it is a proprietary core. However, source code escrow licenses are available to REBOL customers who need to protect their software investment with guaranteed access, should that situation become necessary.
(3) Internal Components - Open
The Internal Components provide many of the essential built-in features of REBOL. For example, the visual interface dialect GUI-builder, image loaders for GIF and JPG, the scalar vector graphics library (AGG), the CALL function for running external programs, the TCP/IP network interface and most common protocols are all a resident part of REBOL. There is no need to import these modules. They are part of the standard system.
However, many of these components are not proprietary in nature and several are also OS dependent. For example, the interface to the audio playback hardware or USB serial ports would be designed specifically to match the API of each OS. Having such components be open will make them available on a greater number of systems.
This is also where the mezzanine functions of the system reside, and as those functions are improved, they will become an integral part of future releases.
RT will provide an online source code archive location for developers to access and improve these Internal Components.
From time to time, we will add new Internal Components as part of the standard REBOL system distribution. However, to avoid potential "bloating" of REBOL, only components that satisfy specific requirements will be added.
(4) External Plugins - Open/Closed
External Plugins provide extended features for REBOL. These components are only needed for specific types of applications, so they are not a standard part of REBOL. For example, interfaces to MySQL, Oracle, ODBC, and other database systems are best provided as external plugins. Other possibilities include loaders and savers for a wide variety of media (images, sounds, music, movies), voice over IP (VOIP), 3D libraries such as OpenGL, custom hardware, instrumentation interfaces, and so much more.
External Plugins can be:
- Open or closed source - We expect most plugins to be open source, but developers can also elect to create closed source distributions.
- Free or commercial: - Developers are free to select the licensing model that best suits their purposes. We want to encourage free distribution models like BSD, but we also want to enable commercial developers to build and sell their proprietary products.
- REBOL and/or C code: - A plugin can be just REBOL code, C code (with REBOL native declarations), or a combination of both. For example, a plugin might add a few native functions and also several mezzanine functions or a port scheme.
- Signed and/or encrypted: - Plugins can be digitally signed and encrypted for protecting the end user as well as the developer.
RT will provide a central archive for developers to distribute plugin components. In addition, RT products like REBOL/View will provide a plugin locator panel for easy review of and access to new plugins and updates.
|