Mission statement

To build the best practical cross-platform programming language for people to use

I agree we need to start somewhere, but in this statement, I find wanting something to be the "best" is vague and relative. My personal opinion is that the programming world doesn't really need or want a new general-purpose programming language. Furthermore the rebol family of languages have some pretty critical design aspects which are a deal-breaker for some programming domains. Rather than being limitations, however, I see this as liberating and I find myself in the camp of "rebol isn't for everyone. nor is it ideal for many programming domains".

  • rebol is one of the most dynamic and homoiconic languages in existence, while at the same time being simple, high-level and user-friendly.
  • The ability to create domain specific languages and to achieve data-wrangling/text-munging in more literate ways are just some of its super-powers.

In my opinion, we focus on the things that set rebol apart from other languages rather than the areas of overlap, areas which have been done, delivered, and documented so well in other languages that rebol has no place except in the rare case of a total rewrite.

1 Like

That is an interesting way of looking at it. I use REBOL for what some (including me) would consider insignificant little things. Maybe the the significance of REBOL is that with it I CAN do "insignificant" little things so quickly. That means that the features at the top of the wish list are those that I use (or would like to have) all the time for those projects, GUI, sftp, https, the "call" function, the "browse" function, ODBC, in a package that is a single executable interpreter that I can just download and run.

I also use rebol for short, quick-and-dirty shell-scripting, mostly for data wrangling, but I've made a few basic GUI apps and run a couple of CGI-based websites using rebol. And I think rebol is great for this. On the other hand, much of what I do with rebol is stuff that you can do with (almost) literally every other programming language, and the brevity and quickness of writing a rebol script is a subjective/personal/matter-of-taste thing. Hate to say it, but what do most devs who need to write a script/function/feature do -- they don't code it themselves, they take it from an existing library, codebase or framework, or worst-case they fish it off of stack-exchange and hack it into their project. I sound old, but I really think that today that many/most programmers don't want to write their own original code. It's just easier to follow the herd and enjoy safety in numbers.

We have a book floating around here called "Unix Power Tools" which is about how to do stuff with unix.

Based on my own past experience, I wonder what would happen to a person's mind if the first computer language he learned was REBOL.

At one time I started some notes for a programming class that I tentatively called "Coding Shop Class" that would be twelve one-hour lessons, using REBOL, that would get a person to the point where he could program some actual useful stuff on his own computer. The "shop class" idea comes from the classes offered in seventh grade many years ago called "industrial arts" where children, usually boys, learned how to use various tools through the process of building things (the drill press to make a cribbage board for example). I thought that REBOL would be good for this because it has all the needed parts in one package.

So, contemplating all that, as long as we are embracing the vagueness of "the best practical cross-platform programming language for people to use," how about spicing it up with "building the power tool for personal computing." Then the features we need are those that can make that happen.

the power tool for personal computing.

I think this statement is aimed in a better direction. As long as we're embracing the uniqueness and different-ness of rebol.

We are interested in this development because we loved our experience in using R2 that gave us tools to do many tasks we wanted to do using our computer, and felt using R2 was way simpler than using any other alternative that included many dependencies and complexities. Exactly in the way CS described it, fighting Software Complexity. So:
We want to recreate that R2 experience, being able to control our own computers, using the open sourced R3 alpha code and make an improved Rebol out of that, that will serve us in all those tasks we want to do on our various devices.

At the risk of sounding too opinionated, I'm not in love with a vision which seeks to relive or recreate the past. I also doubt R2 is a good frame of reference for anyone new to rebol, except perhaps from a historical perspective.

One of the reasons why I'm excited by HostileFork's work is that he really gets the how and why rebol is so unusual and that it will continue to be that way-- it needs to be that way. If the language design decisions were more conventional rebol would a lot more like other languages, and what's the value in that? HF has been pushing into some areas of really deep rebol voodoo, and I believe that this will help it evolve away from some of its legacy gaps/problems-- so the brilliant and somewhat immature "child" rebol that CS brought into the world can grow into a more fully-formed sui generis langauge that it has in its genes.

1 Like

Well Rebol isn't new so that invalidates that argument! Best is intended to be vague since it depends on what your needs are. I used the term practical but perhaps I meant rapid.

Yup! I'm tilting at windmills. Thanks for putting it out there so we can all pick it apart!

Carl wanted a language for everyone but then in one of his last blogs he backtracked and said Rebol was for experts.

I think if you're building anything decent, then yes, Rebol is for experts.
But if you want to do some simple scripting, Rebol also fits the bill.

JFI, mission statements for Reddit could have been, to be the front page of the internet, twitter where you can influence the most people for the least effort, github to be the world's source code repository, stackoverflow the place for the world to ask questions.

Well, by "everyone" he meant anyone who would consider writing code/markup for personal computing, but yeah.

Yes, I think CS modified his goal a bit based on real-life experience with rebol. It's 2018, not 1987 and conditions are not such that a network-aware, x-platform Logo-ified XML paired with a HyperCard UI is going to become a popular programming paradigm anytime soon, despite the underappreciated merits of that combination of tech.

JFY, mission statements for Reddit could have been, to be the front page of the internet, twitter where you can influence the most people for the least effort, github to be the world’s source code repository, stackoverflow the place for the world to ask questions.

Yes, this is a good way to look at it. Simple and concise, just like rebol. This is weak, but something like "Rapid programming solutions via the power of human language."

I think that comes to expressiveness and the wanting to make the language as english like as possible which @hostilefork is wanting to keep hence the picking away at expressions like length?.

1 Like

Amended mission statement to now read

To build the best rapid and practical cross-platform natural language programming language for people to use.

The R3/hf (ren-c) branch already has all of these. Sftp is ftp over ssh so not going to happen. But ftps which is ftp over ssl is easy enough since we already have ftp and ssl.

R3/a (Atronix) also has the GUI but doesn't have ODBC, or fixes to UDP for multicasting and other exotic stuff that I use.

I think rebol's human language power comes not necessarily from its syntax, which is more functional in style than English-like:

head remove back tail insert head copy blk last blk

I think the language power comes from the ability to create your own dialects, little declarative mini-languages or markup languages which can be about as English-like as you want.

Rebol's syntax is pleasant in that it's clean and removes most symbols/punctuation, but I don't think it's a significant selling-point either way. People who are willing to write code are typically able to overcome syntax challenges. I still can't believe how popular regular expressions are.

1 Like

Let's definitely not say (or think) that!



I don't know if I'd say "English", so much as I'd say that the goal is to build upon the language-making centers we already have in our head. I believe extending the power of infix expressions has done a lot for this.

My statement has been The Minecraft of Programming. To break that down into facets:

  • It must be Fun. DocKimbel also included slides in the "What is Red" presentation emphasizing this (a picture of an old Atari BASIC cartridge, and SpongeBob holding the letters F-U-N). He said "We want the fun back, that feeling from the 80s."...but I think of Red as being too willing to carry forward the WAT of older Rebol, as well as adding more of it. It's hard for me to have fun with a system that doesn't follow invariants...it simply feels too "cheap".

  • The mechanic should be Easy to Grasp. People need to be able to get a very visceral feeling of the evaluator, really early on. I've focused a lot on composability, so you don't get surprising results by combining things. Truly having an easy to grasp system isn't going to happen until there's more progress on the debugger (ideally even a Time-Traveling Debugger).

  • It should have strong elements of Personalization. (See also Back to "Personal Computing") While other languages are about declaring functions, Rebol is about declaring languages. With Rebol you shouldn't be afraid to make a language even as a one-off...to solve one problem you had, in one day.

On the technical side of things:

  • The only prerequisite for building is an ANSI C Compiler from 1989 (more or less, but mostly enough that you can still say that). People who've read the the K&R C book and can make it through the comments should be able to understand the interpreter. This is not just a "technical stunt" but a heuristic guideline for helping curb complexity and look for more grounded ways of solving problems.

  • The only prerequisite for running the EXE is What came with your OS.

So as a mission statement I might say something more approximating the lines of:

The Easy-To-Grasp Personalizable System for Writing Concise Programs in Languages that You Specify

1 Like

So how's that different from forth which is classically the dialect making language?

Clearly many goals are the same. Forth is older and its mechanics somewhat simpler and better hammered through than Rebol2/R3-Alpha.

But I believe that relatively speaking, Forth is illegible. And I think many of the real differentiating advantages over Forth are factors that have been advanced and refined in Ren-C, which has the hope of bringing in some rigor as well.

I can confirm from my (very recent) experiences with Forth that it is definitely a pain to program in.