Rebol - a language for SAFE apps?


#1

I just came across Rebol through the Odroid Magazine (February 2014) and it looks very interesting. Relatively young, designed to simplify client/server programming and handle both data and metadata together which they describe as something akin to XML being executable, and being touted for the “X Internet” (eXecutable Internet) - see Why Rebol?

Info

I’m only just reading up about it on WikiPedia and now the official website http://www.rebol.com/ but it strikes me it would be work looking at as an alternative to JavaScript/Node.js for building SAFE apps.

Open Source License

It began with commercial versions and restrictive license, but was released as open source in Devember 2012 (under the Apache 2.0 license) so like SAFE, being handed over to the community which is working towards Rebol 3).

Let me know what you think and if you think it looks worth investigating and maybe building something. My first thought is how it might help people build web-like-apps on SAFE, but to be honest even a “Hello Safecoin balance” could go viral :slight_smile:

This isn’t a project, but I’m not sure if there’s a more suitable category.


#2

The entire language is designed with secure computing in mind; this is accomplished chiefly by strict adherence to the object-oriented computing model, which in its pure form has properties that support secure computing. The E language and its standard library employ a capability-based design philosophy throughout in order to help programmers build secure software and to enable software components to co-operate even if they don’t fully trust each other. In E, object references serve as capabilities, hence capabilities add no computational or conceptual overhead costs. The language syntax is designed to be easy for people to audit for security flaws. For example, lexical scoping limits the amount of code that has to be examined for its effects on a given variable. As another example, the language uses the == operator for comparison and the := operator for assignment; to avoid the possibility of confusion, there is no = operator.

Since E is intended to support secure co-operation, the canonical example for E programs is the mint, a simple electronic money system in just a few lines of E. The following code defines a function that makes mints, where each mint has its own currency. Each mint can make purses that hold its currency, and any holder of two purses of the same currency can securely transfer money between the purses. By quick examination of the source code, an E programmer can easily verify that only mints may change the amount of money in circulation, that money can only be created and not destroyed, that mints can only create money of their own currency, and that only the holder of a purse can change its balance.

I recommend the E Programming language.


#3

I know about REBOL. It’s the baby of Carl Sassenrath, who was one of the chief minds behind the OS in the Commodore Amiga which was amazing for its time. He ended up being forced out of Amiga due to his plans for where he was going to take the OS next and ended up going nomad for a long time.

I’d have a huge amount of time for anything Carl would do. Myself and he have corresponded in the past on our similarites of vision, though whether he would remember me I don’t know. All that said, I would suspect that REBOL would be too fine grained for the SAFE network.

Niall


#4

@ned14 please can you say a bit more about this, and any better suited alternatives.


#5

REBOL looks very interesting. I’ll have to check that out. I have been trying to suggest an old-timer for decentralized apps, to various groups working on DACs and D-Apps. Wait for it… SmallTalk - but reborn on the web in the form of http://amber-lang.net/

If you know about ST, you know its advantages - a huge one being live debugging. Amber seems perfectly adapted to SinglePageApplications and I have seen demos of two Amber SPA nodes talking to each other live via a DHT-like mechanism. For sure it would be great to implement blockchains and other decentralized mechanisms and implement a clean, live, browser front-end that handles all the presentation cleanly and simply.

" Amber is written in itself, including the compiler, and compiles into efficient JavaScript, mapping one-to-one with the JS equivalent. "


#6

Carl was aiming for a data stream programming platform, something of a holy grail to computer scientists, and one which one day will surely be realised as it is the next great leap forward for all software. REBOL is actually very old, Carl tried it at Amiga and got pushed out the window for it, and even then (he won’t mind me saying this) he had ripped the whole design and approach mostly from earlier attempts at the same thing going back to its originator, Englebart, who in turn had actually lifted it from von Neumann and others. Plan 9 is one of the best known attempts at the same thing, but it was a whole OS and it had to break legacy compatibility which meant no one adopted it as the Unix v2.0 it was intended as (and do remember Plan 9 was designed by the original designers of Unix to fix its problems). Carl was trying the same thing as an application layer atop conventional operating systems to improve the legacy interop, but in the end it doesn’t solve a problem which those with power and resources currently realise they have. That will change once Moore’s Law stops of course, and technologies such as Carl’s will finally get properly funded. Some form of data stream platform is inevitable, I know Microsoft have some ideas on that too.

Now, the reason it won’t fit well with SAFE is because SAFE is a big fat chunky thing while REBOL is light and delicate. It’s the same reason why PHP and traditional LAMP won’t work on SAFE - SAFE imposes big fat chunky requirements on client code, mostly due to the need for encryption and not trusting anything, which adds latency all over the place. REBOL, if I remember correctly, needs a low latency underpinning to work at all reasonably. Same as PHP/LAMP actually.

Niall