API-based Web services receive a lot of noise, but the REBOL IOS architecture shows that you can build somewhat more robust applications through declarative services. The power of REBOL Link and applications like it comes from a strong rendering engine combined with a transparent mechanism for connecting the client to the server. Instead of making remote procedure calls to retrieve data, REBOL uses a messaging architecture to retrieve the information necessary to build its core objects, along with whatever data it needs to work on.
This architecture may seem familiar. In fact, it's exactly the same way the Web itself works, except where HTML requires an HTML browser, REBOL uses its own engine to interpret and display REBOL script language. This document-oriented approach also means that the application doesn't necessarily have to reside on the client. You can create applications that are accessible from a centralized server, and because of the text nature of REBOL the applications can be individually customized for each user or customer.
REBOL supports an extensive set of protocols, including the ability to work across FTP, HTTP, NNTP, POP, SMTP, TCP, and UDP. Thus, you can use REBOL to create both an email server and an email client. Perhaps you can even create a newsgroup reader that extracts the contents and converts them into both POP protocol format and HTML pages across HTTP.
REBOL can also make calls out to Web browsers for additional display and to redirect content from HTTP calls, filtering information in or out as appropriate. That means REBOL can act as an intermediate Web server, loading in data (like XML files) and performing localized transformations on that data before sending it on to the browser.
room for improvement
There are a few deficiencies in the product, but these shouldn't keep people from trying it out. However, these problem areas do indicate that the product has room for improvement.
The default editor that comes with REBOL (again, written in the language) is woefully underpowered, though it's easy enough to edit REBOL documents with other text-based editors. I don't believe that the poor quality of the editor represents a language limitation. If it does, it could seriously undermine REBOL's efficacy as a collaborative environment. Yet, because you have the option to use another default editor, you can use whatever you're most comfortable with.
The REBOL library is fairly robust, but it also has a sophisticated extensibility model that lets users develop Reblets to access almost any external library procedure. This comes at the cost of some portability, which is often a reasonable trade-off.
Similarly, for a language that is so tied to a declarative model, it would be useful to have filters for creating XML versions of REBOL scripts. This shouldn't be difficult to do. It could be written in REBOL in all likelihood. What's more, the lack of a built in XSLT resource dulled the shine on this product slightly, though again this could be implemented via external function calls to a command line XSLT processor written in Java or C++. Carl Sassenrath says that sometime this summer he's partnering with another company that has a good XSLT processor. He couldn't provide further details, but did say that it's the fastest existing XML implementation.
According to Sassenrath, another complaint he hears often is that REBOL isn't open source. The scripts are open source, but the system itself is not. Sassenrath says that the company plans to release the system one day, but that it needs to age a bit more. "While we control it, we can give 100 percent confidence that a script you write on one machine will run on any other machine. Once we open it, that will start to fade." Strangely enough, this hasn't proven to be a problem for the many other languages that have been released openly.
wrapping it upThe REBOL IOS is still evolving. There are several places where a more complete script library would make up for the limitations imposed by the language itself. REBOL IOS's declarative language system gives it an advantage, however, in that these aren't crippling limitations, the way they might be with a compiled language. Declarative models become increasingly robust over time as people use them, while procedural code tends to go out of date or become dependent upon large (and usually expensive) overhauls from iteration to iteration.
REBOL is exciting. In several respects it points to a different future for application development than the large hierarchical programming systems like Microsoft's .Net, or Sun's Java. It extends the HTML browser metaphor to a mode where applications can reside across many different systems, yet stay very lightweight and flexible. REBOL lets you create programs without possessing extensive coding experience. It's a language that should only become richer over time.
Kurt is an author, trainer, consultant, and researcher who specializes in XML-based technologies. He's also president of Cagle Communications. You can contact him at [email protected].