Why Rebol?

The Rebol programming language started from a fresh sheet. Its creators sought to capture the holistic purity of LISP, while natively supporting the realities of our always-on, network-connected, multi-platform world. The goal was to follow a certain philosophy of software design to its logical conclusions, in order to create a uniquely sustainable tool for managing complexity.

More than a decade of careful engineering has produced an astonishing technology. The interpreter fits in under a megabyte on Windows, Mac, and Linux... despite including modern network protocols, Unicode, a GUI interface builder, date/currency arithmetic, and much more. Single lines of Rebol can perform feats that require importing bulky libraries in other languages (or writing hundreds of lines of custom code).

The system is so compelling that it has consistently won admiration from those who use it, including key figures behind today's Internet technology:

"Rebol's a more modern language, but with some very similar ideas to LISP, in that it's all built upon a representation of data which is then executable as programs. But it's a much richer thing syntactically.

Rebol is a brilliant language, and it's a shame it's not more popular, because it deserves to be."

Douglas Crockford, founder of JSON, 2009 [link]

Yet despite such accolades, Rebol has failed to gain widespread use. It's not tracked or listed in even the Top 100 of the Tiobe language popularity index.

So why haven't people heard of it? If they have, then why aren't they using it?

A Key Problem

There is only one complete implementation of Rebol, and it is distributed exclusively in binary form by Rebol Technologies Inc ("RT").

Today's developers have spoken clearly: open standards are a non-negotiable requirement. This is the promising ethos of the post-internet era, and consensus becomes stronger each year. Though organizations still use proprietary tools to fill certain niches, few are willing to hinge their code capital on a proprietary infrastructure that locks them into a single vendor.

There is a quandary because Rebol can't be thrown carelessly into the organic open source ecology. Centralized design is its raison d'être, and losing that control could destroy its unique nature. The open-source movement hasn't yet found a foolproof answer for companies with great products who face this scenario.

RT has historically punted on this crucial issue. But by trying to divert the discussion to ever-more improvements in their technology, they've missed significant mindshare opportunities for the Rebol language. Less compelling systems have taken the spotlight and drawn massive communities, making it very difficult to sell Rebol usage inside any organization.

Now that the revolutionary 3.0 release of Rebol is cementing its final design, there can be no more stalling. It is time for winds of change.

The Freebōl Mission

Our goal is to rally stakeholders around building a reference implementation of Rebol 3 under the Affero GPL. It should fit seamlessly into Linux distributions, where one can simply type:

apt-get install freebol

Those using Freebōl will be confident they have a compatible Rebol interpreter that meets the licensing standards of the Free Software Foundation. For those whose projects favor performance over Stallman-style freedom, we expect them to replace the interpreter with RT's much more optimized binaries.

We defer to RT on all issues of language design. Yet since a formal language spec does not exist yet for Rebol 3, achieving semantic parity will require opening up the regression suite that RT uses internally. We also need an unambiguous written promise that that they will not use patents or litigation to hamper open-source implementations.

Hopefully Rebol Technologies recognizes that these steps are crucial for the language's future, and joins us as partners in telling Rebol's open-standards story. If that story is secured, many benefits can be realized long before a viable Freebōl interpeter exists.

Implementation Strategy

Previous attempts at alternate interpreters have been made, though none are actively developed in sync with the version distributed by RT. What's more, the people behind these projects have made radical implementation choices (not surprising given the passions that probably attracted them to Rebol in the first place!) Some have tried to use non-mainstream languages, while others have sought to use hand-optimized C code to rival the official product.

Freebōl will build a modest, obvious, and complete version of Rebol 3.0. Instead of seeking to compete with the current Rebol implementation on benchmarks of size or speed, we will try to match expectations of current interpreters of Python and Ruby (when their library code is included.) We will use C++ with the cross-platform Qt toolkit, because of its Unicode foundation and clean cross-platform Gui design.

turbine