Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Web Development

When a Language Becomes a Platform


when a language becomes a platform

REBOL IOS Express


April 2002

A distributed desktop is an idea that makes intuitive sense when you hear about it, but one that can become quite complex logistically. The desktop is more than just a file repository; it needs to be able to perform any number of activities, from providing support for window and widget APIs to protecting documents so that they can be worked on collaboratively. The desktop must be lightweight, because people are accessing the Web from devices other than just their computers. It needs to be extensible enough that people can build robust applications, yet simple enough that people don't have to be hard-core programmers to build these apps.

REBOL Technologies' Relative Expression Based Object Language (REBOL) Internet Operating System (IOS) products are an attempt to build precisely such systems. While there is certainly room for improvement, REBOL is nonetheless an impressive first foray into the problem of building a next-generation Web desktop.

REBOL is the brainchild of Carl Sassenrath, the system architect who designed the Amiga operating system more than a decade ago. This system was one of the first consumer-level multi-user systems in existence. Even now it commands a devoted following of Amiga fans, though the company that produced it dissolved long ago.

PROS
Lightweight, flexible, robust development language.

CONS
Low industry acceptance, language not yet open source.

Sassenrath envisioned REBOL as an operating system lightweight enough to be deployed anywhere, and the product is certainly making headway in this area. It currently works on more than 40 platforms including AIX, Amiga, BSD, HP/UX, Linux, Macintosh, Solaris, and Windows. As a consequence, REBOL is potentially useful as a way of deploying applications across the increasingly diverse and fragmented multi-system networks that are becoming commonplace in most businesses.

The key to Sassenrath's vision is that holy grail of contemporary distributed computing—an Internet Operating System (IOS). The REBOL IOS line is designed to create enough of a common architecture that sophisticated applications can be built easily for collaborative computing. The IOS consequently is targeted to several different applications, many of which currently exist only as distinct standalone products.

For instance, REBOL IOS makes building conferencing applications comparatively simple, using individual script components (lightheartedly dubbed Reblets) that can be tied together easily. The company offers several sample Reblets on its site. Many of the same core components can also be tied into building address lists, running real-time surveys, adding or viewing sales information as numerical tables or charts and graphics, sharing clipboard resources, and so on.

REBOL IOS isn't trying to replace the browser completely (you can embed REBOL applications within Web pages). Rather, it's intended as a way to create an easy-to-use collaborative environment that can work both independently and seamlessly with browser components. In addition, REBOL IOS supports a certain level of extensibility with other applications. It includes the ability to work with a wide array of external objects—Windows DLLs, Unix/Linux shared libraries, and so on. Because of REBOL's distributed nature, other interesting possibilities arise, such as creating a REBOL script that ties into external objects on one system and accesses them from another. REBOL can also work well with shell environments like Unix's bash shell or DOS.

REBOL IOS supports streaming for apps that use voiceover IP, MP3, video, and so on. As the company adds each new media type, it licenses the libraries and provides them on all platforms, so users on BSD or Linux can run the same apps as people on Windows.

REBOL's design is responsible for its easy deployment. The simple scripting language was designed to make network transactions transparent, with a feel that evokes both shell scripts and HTML. REBOL allows the creation of sublanguages or dialects that are handled within the general context of the main language to efficiently express semantic concepts over a network between computers, but without transmitting viruses or related problems.

Long term plans for REBOL include three distinct REBEL IOS products. REBOL IOS Express (shown in Figure 1) works in conjunction with existing Web servers to provide REBOL support, and is available both for purchase and as a demo from the REBOL site (www.rebol.com). REBOL IOS Lite includes its own server only for a company's internal use, while REBOL IOS Host provides this same service across the Internet. The latter two are still being developed.

REBOL IOS Express is an enterprise workgroup product with two parts: a server piece called REBOL Serve, and a client called REBOL Link. The product's price depends on several factors. The basic model has a per-seat client price of $100 (10 seats minimum) plus $1,000 per server. In addition, the company suggests an Alliance support package for $5,000 per year. Of course VARs, OEMs, ISPs, and large purchases are specially priced.

impressive graphics

Eye candy is important. IOS Express has sumptuous graphics, which are typically lacking in inter-system collaborative solutions. The demos that ship with even the basic product demonstrate its ability to cleanly work with graphic images. REBOL can apply a wide variety of filtering effects including the ability to blur and sharpen, apply gradient overlays, multiply image bitmaps together, and perform basic rotations on the images. In fact, REBOL was robust enough to let me create a credible Tetris game.

Because REBOL works by manipulating widgets at an abstract level, the rich graphics translated into the ability to create skins for various applications. For example, I made an input form that could then be skinned for use on the Macintosh, in Windows, and on Linux. Without knowing the origin, I wouldn't have realized that these weren't resources created expressly for the targeted platform. Such look-and-feel capabilities are, of course, part of most contemporary programming languages, but they often require a significant amount of work to pull off well. With REBOL, it was painless.

Also, REBOL scripts facilitate the easy markup of text for display, using a flow model similar to that of HTML. As a consequence, making features such as multi-page wizards becomes almost trivial. REBOL is made up of a series of objects, each of which can have one or more declarative facets applied to them. These objects include things like headline tags (h1, h2, and so on), body text, and more. The objects are then modified via facets. For instance, you can create a banner with an accompanying button using the script:

view layout [
banner "Hi, there!" white blue 
button green "Enter"
]

The view layout command is the primary interface for building dialogs and other system resources, and can be either typed into a command line or put into a REBOL script. Without knowing much more than a few basic commands, I found that I could put together a simple help system by saving a REBOL document file and reworking it in my own local folder (see Listing 1).


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.