Recently, the first public version was released of the alpha development version of REBOL 3, the advanced programming language by Carl Sassenrath of Amiga OS fame. Now, native versions have also been released for Linux and Mac OS X. Like the private version of a year ago, the Linux version runs on Syllable Server. These versions are currently comparable to REBOL/Core 2, without the graphical system, and can be downloaded through here. REBOL is an important part of Syllable’s cross-platform strategy.
I don’t run Syllable, but it’s great to hear that an alpha of R3 for OS X has been released.
REBOL is one of the most underrated programming languages in history.
“REBOL is one of the most underrated programming languages in history.”
Just out of curiosity, what makes Rebol so underrated? Or more specificially, what makes Rebol so good?
Good question. Another variant is, if its so great, why do not more people use it for more significant projects? If you ask that on forums where this stuff is discussed, you never get an answer.
Development does seem to be very slow, V 3 is coming out at a snail’s pace. Documentation is pretty hard to come by. And yet it seems to have enormous promise, small, fast and powerful, totally cross platform, and with an easy to use gui kit on top. Has anyone made a serious effort to use it for real projects?
In a way, this story is a bit typical of the atmosphere around it. Without wanting to be unkind, its a story about an OS no-one uses or is likely to use in anger, which now runs a programming language very few people run either.
What is everyone missing?
Edited 2009-02-07 08:20 UTC
Also a good question. This has been discussed so many times in the community and there are many possibilities. I will only list one, as it’s very important now that REBOL 3 is under development:
REBOL 2 has great potential, but it also has many shortcomings: Poor sound support, entirely closed source model, some features are pricey, poor support for high precision math, the GUI engine is sparse and incomplete in some areas, ports are slow, complex and buggy. There’s no unicode support at all, no threading or modules. Documentation is almost 8 years old and some parts are not documented.
Some of these problems have been remedied by third party add-ons, but some parts like threading can’t be solved properly without rewriting the kernel of REBOL, which is what REBOL 3 gives us.
To some, these problems with REBOL 2 are showstoppers for people who otherwise may have had a great experience with REBOL, because there are other parts at which it truly excels. I think that is the major reason, REBOL hasn’t entirely caught on with the public.
I want to explain the chronology:
At the REBOL Devcon in 2005, Carl Sassenrath, creator of REBOL explained that he really missed threading and was contemplating how to add that to REBOL 2. In early 2006, he began development of REBOL 3 instead.
REBOL 3 is a complete rewrite from scratch. In mid 2007, REBOL 3 went into internal alpha, released to a few people (one of them was me) and it didn’t take more than a few days to realize how much work was left at that point. But the rewrite showed that some of the parts that are a complete showstopper in REBOL 2, not only work, but are of a great design in REBOL 3. So far, REBOL 3 is aiming to trounce almost every single shortcoming of REBOL 2. This can be done thanks to the input of developers who have worked with REBOL 2 over the past 8 years.
Around this time, we also set up a MediaWiki server. One problem with REBOL 2 is a lack of new documentation, so for REBOL 3, all documentation is stored in a wiki. We decided it was not a good idea to write our own custom Wiki at this time or use one of the available REBOL based wiki solutions, but the one that drove Wikipedia. If it can drive Wikipedia, it can drive our Docbase:
http://rebol.net/wiki/
But we’ve come to realize that at some point, we need to write our own solution for tight integration with REBOL 3.
In late 2007, work began on the GUI engine, codenamed VID3. Opposed to the idea of extending the original GUI engine (VID), a new one was created, where the goal was completeness and where it wouldn’t be very difficult to produce certain mundane UI elements as is the case in the original VID.
I worked on the skin for VID3, but the developer, Gabriele Santilli was then moved to QTask (a very large project management system written in REBOL, available at qtask.com), and so, little development happened on it during those last months of 2007.
During this came a big discussion on modules, or how to construct separate name spaces for separate code modules. Carl worked on this on and off and finally declared, that it would be postponed until later in the development phase.
Around Christmas 2007, REBOL 3 alpha was released to the public for Windows only.
In early 2008, a it was discovered that supporting unicode would either require some slap-on extra datatypes in the language, making unicode a special case or it would require rewrites of major parts of the kernel for proper support.
Given REBOL’s design philosophy, things are not slapped onto REBOL 3, so it took two months to do this rewrite. REBOL 3 now supported unicode from the bottom up:
http://www.rebol.net/r3blogs/0117.html
After this, we started to look at the GUI again and Carl noticed complexity problems of VID3, one of which was that it was over 80 kb in size. Now, for those of you who are used to Java or Python or whatever, this would be completely unimportant and irrelevant, but one of the main features right at the heart of REBOL is absurdly small script sizes.
Carl scrapped VID3 and began writing his own GUI engine, codenamed VID3.4. Three months later he published an internal alpha of that engine which does nearly the same stuff, but only being less than 20 kb in size!
In August 2008, I began writing skins for this engine and found it to be easier to work with than VID3 and it was not hard to see how much work had been put into the design of the GUI engine: Every time we requested a new feature, it is a question of adding 2-5 lines of code in one place. I worked on the skin until december 2008 where I had to go work on another project and expect to return in March for finishing the skin. At this time, VID3.4 still has some layout bugs, so if you try it, please be forgiving, and the skin is one of Carls colorful ideas.
A very early version of the official skin can be seen here:
http://www.rebol.net/r3blogs/0154.html
In the meanwhile, Carl saw that it was important to release REBOL 3 on a larger scale, so he began working on RebDev. RebDev is a kind of BBS with built-in filesharing and source repository and it can work in a plain text console or in a browser.
Since mid-January 2009 it has been Carl’s primary form of communication with the community. RebDev is the successor to DevBase, which is an earlier attempt at an open code repository.
You can start RebDev by typing “chat” in the console, when R3 starts.
Until RebDev came along, development happened in a darknet with only a few select people allowed to join. At the moment, adding new user accounts is frozen due to a problem with adding user accounts with Unicode names.
Where do we stand?
There is a lot of work left to do and these are not easy problems to solve. Modules and threads are the biggest issues as well as fixing almost 300 bugs in the bug database, available here:
http://curecode.org/rebol3/view-tickets.rsp
Every single schedule has slipped since day one, so saying that REBOL 3 will be released as beta on a specific date is impossible at this time. Since first alpha, over 80 releases have been made. But there is a plan and if you follow the outline of that plan, well, things are going as planned. You can’t make a time table from that plan
I use REBOL full time for projects, so it fullfills my promises. Documentation is always being fought for and this is one of the most painful aspects of REBOL 2, given that some really nice features in the port system are completely undocumented and are still secret.
Had I had proper documentation years ago, I’m sure that I would have learned many of its secrets in much shorter time. This is why some developers spend time teaching newcomers about fallacies in REBOL 2. The best thing a newcomer can do, is ask questions.
I won’t comment on the OS, but REBOL is one heck of a rabbit hole to fall into, and it’s very, very deep. It made me very productive, compared to other languages and it’s a wonderful glue language. It’s best shown by demoing REBOL rather than talking about it:
http://hmkdesign.dk/rebol/movies/rebol_osx.mov
http://hmkdesign.dk/rebol/old/movies/rebol.html (requires flash)
Thanks. Thoughtful and informative answer.
REBOL 3 is what i have been looking forward to for 2 years. can’t wait for it to hit beta.
What is even better is that the Syllable devs have been busily coding away on an open-source clone of Rebol, called “Orca”. Here’s the link –
http://trac.geekisp.com/orca/wiki/OrcaProject
Although that site says that the “Orca creator has stopped the development of Orca to focus his efforts on Thune.” – the project is still going. Kaj (one of the devs mentioned on that page) is (iirc) Kaj de Vos, one of the Syllable devs.
Good on the Syllable devs for daring to be different and doing stuff like this!