REBOL logo

Web 3.0 starts here. Smarter, faster, better.

 
LANGUAGE

COMPANY

 


REBOL.COM
REBOL.NET 
   


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.

Updated 26-Mar-2008 [Edit] Copyright 2008 REBOL Technologies