General REBOL questions
[1/12] from: bgs:tas:verizon at: 15-Jun-2002 17:03
Hello,
I've been looking into REBOL/View recently and it looks really terrific.
I have some generic questions if someone knowledgable has a moment:
1) As everything in REBOL is compiled into a single executable (no
seperate modules) and as more and more protocols, language enhancements,
etc. are added, will the single executable ever get to the point where
it's too large? Just keep getting bigger and bigger. At what point
would it become too large and cumbersome?
2) How are obsolete features/protocols being retired? e.g. if REBOL
supports a protocol that no one uses enough anymore to justify it being
in the executable, will they keep it in there indefinitely for backwards
compatibility or are they removing/retiring those types of features with
new versions?
3) When I fire up REBOL it brings up the REBOL desktop. I assume the
desktop is a REBOL script, but is this script imbedded into the
executable itself? If so, what if you want to modify it? Shouldn't
there just be some kind of default startup-script defined and the user
can make that whatever they want without burdening the executable with a
built-in script that they may not want to use anyways?
4) I did a search on Dice.com and didn't find 1 job for REBOL.
Hopefully their new licensing terms I read about in the archives of
this mailing list will change that. More Java-like licensing where
REBOL still controls the design but developers are allowed to use it
freely for commercial purposes. REBOL would then make their money
licensing REBOL and associated applications to larger corporations for
commercial purposes.
FYI - REBOL/View is already pretty tiny, so for the fun of it I
compressed it with the UPX executable packer and it shrank significantly
more! It shrank from 503KB to 313KB! (38% smaller!) Here's the
address for UPX: http://upx.sourceforge.net/
Thanks!
Brian
[2/12] from: carl:cybercraft at: 16-Jun-2002 15:33
On 16-Jun-02, Brian wrote:
Hi Brian,
Welcome to the REBOL List.
A lot of tricky questions there. (: I'll have a go at one of them,
anyway. (And I'm sure the others will get answers as well. They're
not all new questions, I assure you.)
> 3) When I fire up REBOL it brings up the REBOL desktop. I assume the
> desktop is a REBOL script, but is this script imbedded into the
<<quoted lines omitted: 3>>
> executable with a built-in script that they may not want to use
> anyways?
I think the Desktop script is loaded when you launch View, though I'm
not absolutely sure about that. But I believe it's quite small so I'd
guess it wouldn't use up too many resources.
However, it's easy to make it so View launches to just the Console,
not the Desktop. Just change the...
desktop: true
line in View's "prefs.r" file to...
desktop: false
and the Desktop won't display. (Entering "Desktop" in the Console
will still allow you to run it if you want to though.)
As to a default startup-script, there is one. Look for a file called
user.r
. (It and the prefs.r file should be where you installed
View.) You can have that launch any scripts you like at startup.
Make a backup of the original though of course, to prevent any
modifications you make to it mucking up the way View launches for you.
Hope that's of some help.
--
Carl Read
[3/12] from: al:bri:xtra at: 16-Jun-2002 18:16
Brian wrote:
> ...will the single executable ever get to the point where it's too large?
Just keep getting bigger and bigger. At what point would it become too
large and cumbersome?
At the moment, most Rebol.exe are around 500KB. OpenOffice is around 100MB,
Forte for Java is around 125 MB (I think it's called something else now).
For some people too large could be when it exceeds the capacity of a 1.44MB
floppy disk. So Rebol still has the capacity to expand to around three times
it's original size. I don't think this is a limitation, IMO.
> FYI - REBOL/View is already pretty tiny, so for the fun of it I compressed
it with the UPX executable packer and it shrank significantly more! It
shrank from 503KB to 313KB! (38% smaller!) Here's the address for UPX:
http://upx.sourceforge.net/
See what I mean? :)
> 2) How are obsolete features/protocols being retired? e.g. if REBOL
supports a protocol that no one uses enough anymore to justify it being in
the executable, will they keep it in there indefinitely for backwards
compatibility or are they removing/retiring those types of features with new
versions?
Currently the NEWS protocol is optional. It can be loaded by 'do-ing the
script. Also the 'if/else construct I believe is obsolete; people can use
'either or 'if instead. I believe the difference is small in size.
Andrew Martin
ICQ: 26227169 http://valley.150m.com/
[4/12] from: petr:krenzelok:trz:cz at: 16-Jun-2002 11:06
Brian wrote:
> Hello,
> I've been looking into REBOL/View recently and it looks really
<<quoted lines omitted: 5>>
> the point where it's too large? Just keep getting bigger and bigger.
> At what point would it become too large and cumbersome?
I think that it is just temporare state. Remember Carl designed AmigaOS
and modularity and componentisation is his way to looking at how things
should work. I believe, that rebol is pretty well modularised under the
hood. So, separate components, pluggable in real-time will surely come,
once there is some important one, which would enlarde rebol.exe
significantly ... till then, however, - relax :-)
> 2) How are obsolete features/protocols being retired? e.g. if REBOL
> supports a protocol that no one uses enough anymore to justify it
> being in the executable, will they keep it in there indefinitely for
> backwards compatibility or are they removing/retiring those types of
> features with new versions?
Just one thing to remember - one thing is .exe file, and second
completly unrelated thing is - how does it unpack itself into memory.
Rebol/View is NOT started internally, untill some View related
functionality is called. So - it just sits and takes its place in
executable, not memory. The same could be probably said about network
protocols. And if not, they are pretty tiny.
You can use some tool/profiler available (IIRC DocKimbel did one, just
look and find it on his reb-site) to play with it. You can use function
'free (/Command only?), 'unset, or just assign something to none!
> 3) When I fire up REBOL it brings up the REBOL desktop. I assume the
> desktop is a REBOL script, but is this script imbedded into the
> executable itself? If so, what if you want to modify it? Shouldn't
> there just be some kind of default startup-script defined and the user
> can make that whatever they want without burdening the executable with
> a built-in script that they may not want to use anyways?
We can't modify it yet. I hope RT will a) separate it from exe in the
future b) provide its source-code c) provides easy way of how to
overload/replace it ...
> 4) I did a search on Dice.com and didn't find 1 job for REBOL.
> Hopefully their new licensing terms I read about in the archives of
<<quoted lines omitted: 3>>
> licensing REBOL and associated applications to larger corporations for
> commercial purposes.
Yes, licensing model ... We all complain to MS licensing, but to be
fair, I find selling features pretty common in other languages for free
(sound, shell and library), pretty limiting and one of factors of rebol
unsuccessfull adoption. Other's are free to have their own opinion, just
don't flame, please, or I will make even harder-to-swallow statements
regarding mySQL, Fast-CGI etc. modules ;-)
> FYI - REBOL/View is already pretty tiny, so for the fun of it I
> compressed it with the UPX executable packer and it shrank
> significantly more! It shrank from 503KB to 313KB! (38% smaller!)
> Here's the address for UPX: http://upx.sourceforge.net/
Yes, that's cool, isn't it? :-) Well, 1.44 is not limit for me. On my
new computer, I already have no floppy instaled anyway. I use USB Pen
device, 128MB and it mounts automatically from W98 to WXP, even Linux
can find it. It's just so cool - no more crappy floppies :-)
Cheers,
-pekr-
[5/12] from: jason:cunliffe:verizon at: 16-Jun-2002 4:13
Hi Brian
Well Carl and Andrew answered your Qs 1,2,and 3.. but that leaves the hard one:
> 4) I did a search on Dice.com and didn't find 1 job for REBOL.
> Hopefully their new licensing terms I read about in the archives of
<<quoted lines omitted: 3>>
> licensing REBOL and associated applications to larger corporations for
> commercial purposes.
Firstly, I find REBOL is curiously 'hidden' from many web searches. For example
there are many REBOL scripts which are published as rebsites, accessible through
/View Desktop which don't appear at all via Google. This is a shame, and a
nuisance too.
Someone wrote a REBOL 'search' script a while back in response to this. But I
still regard it as design deficiency in /View's Desktop that it does not have
smarter listing, searching and sorting features for rebsites and their contents.
Technically it would not be hard, but the UI design and initiative from RT has
recently been oriented to building up REBOL/IOS and the company's small, but
brilliant technical resources have all been focused on the same task.
Which means that REBOL is still off the normal web 'radar' in many ways. That
includes JOB listings. REBOL has a tiny programmer community still, with almost
no other public presence, [but it did make to the Webbies], so it is unlikely
that you will see job listings showing up in the obvious places soon.
But if you look at problem solving, ie. the tasks those jobs are needed for,
REBOL's features come shining forth. Not enough people know about REBOL yet. But
when they learn about it, they often immediately want to use it. Project and
application requirements.
Just this week I presented a preliminary web site design to a company. It was
all about core graphic design and interface ideas, and use of FlashMX. During
the meeting I happened to show Flash menu tree loading and opening XML files
served on another Vanilla site I am building. The client was soon interested in
Vanilla. I showed some REBOL scripts for it I had written. They were immediately
impressed by the simplicity and elegance of vanilla's design, and then by the
tiny size and power of REBOL.
Could we use this for small content management site for another client of
ours...? [I smiled.]
REBOL is a formidable and unique tool in any programmer's kit. Depending on the
situation it can be your best secret weapon or best new chance to innovate. Many
companies want only high profile technologies. Ones they can go to the books
store for and fund shelves full of it. They want the freedom to hire any number
of programmers trained in it. People are very often afraid of new tools, or ones
which may seem to make them too dependent on an individual developer. Python and
PHP were both in this Catch-22 position until a couple of years ago. Now they
have turned the corner fully into public respectability. They have reached a
plateau and are entering their golden years.
REBOL is brilliant and already incredibly useful, but still very young. In these
times developers will not be very likely to be asked/hired specifically to use
it. Instead they will be the ones introducing it because it is the best tool for
the job. Probably also the fastest and most fun to use.
I hope it too gains the wider audience it deserves. Licensing and lack of
certain features hold it back. IMO, it could/should be better promoted and needs
to unlock the CALL library features for non-commercial free use. RT's website
could be much better. More books are needed, especially for /View and IOS.
Anyway, welcome to the list.
./Jason
[6/12] from: kemp:extelligence at: 16-Jun-2002 10:59
Great questions, I've been wondering these myself.
Here's a few more:
1. What's the execution model for Rebol? It seems to combine the best of my
favorite HLL (Smalltalk) and LLL (FORTH), and I'm wondering if it's
basically stack-based as in FORTH? Any docs on this? Any docs on in-memory
structures, esp 'image ?
2. Is it purely interpreted, or runtime-compiled (Q1 above may answer this
if FORTH is indeed the answer :)
3. To protect commercial applications, can Rebol scripts be precompiled or
otherwise obfuscated?
4. Is there/could there be a 'Rebol Web Start' (I'm sure that true 'Rebols'
would prefer 'Rebol NET Start' here!) to ease the initial deployment of web
applications?
5. Any thoughts of Rebol's use in K-12 education? From language, ease of
use, and deployment?
Thanks,
Kemp
[7/12] from: rotenca:telvia:it at: 16-Jun-2002 20:03
Hi Brian
> 3) When I fire up REBOL it brings up the REBOL desktop. I assume the
> desktop is a REBOL script, but is this script imbedded into the
> executable itself?
Yes, like all the mezzanine code, the network handlers, bitmap images and so
on.
> If so, what if you want to modify it?
All the stuff of desktop is in the block
ctx-viewtop
which becomes an objects when you first execute the function desktop. Here it
is the source:
desktop: func [][
if block? ctx-viewtop [ctx-viewtop: context ctx-viewtop]
ctx-viewtop/init-desktop
do-events
]
> Shouldn't
> there just be some kind of default startup-script defined and the user
> can make that whatever they want without burdening the executable with a
> built-in script that they may not want to use anyways?
If you want to remove all the desktop code you can do:
ctx-viewtop: none
desktop: none
You should gain a little more than 100 Kb, after the command
recycle
But the 118 words added by the desktop code to the global context cannot been
recycled.
---
Ciao
Romano
[8/12] from: joel:neely:fedex at: 16-Jun-2002 16:35
Hi, Kemp,
Kemp Watson wrote:
> Great questions, I've been wondering these myself.
>
> Here's a few more:
>
> 1. What's the execution model for Rebol? It seems to combine the
> best of my favorite HLL (Smalltalk) and LLL (FORTH), and I'm
> wondering if it's basically stack-based as in FORTH?
>
Simply think expressions. Forget stacks. They don't help you to
understand REBOL behavior at all. (And I'm was an old FORTH hacker
years ago...)
> Any docs on this? Any docs on in-memory structures, esp 'image ?
>
No. Well-guarded secret, or something.
> 2. Is it purely interpreted, or runtime-compiled (Q1 above may
> answer this if FORTH is indeed the answer :)
>
Neither. When the interpreter LOADs REBOL source, it builds a
structure that is essentially equivalent to what the source says.
There's no assembly-like "byte code" or any such stuff. What you
see is what it gets (conceptually). However, you can also write
REBOL expressions that build up blocks and then cause their
evaluation (as code) in much more interesting ways, since REBOL
doesn't distinguish between "code" and "data". For example:
>> phrase: [print ["has" "letters"]]
== [print ["has" "letters"]]
>> foreach word ["my" "dog" "has" "fleas"] [
[ stuff: copy/deep phrase
[ insert next second stuff length? word
[ insert second stuff mold word
[ do stuff
[ ]
"my" has 2 letters
"dog" has 3 letters
"has" has 3 letters
"fleas" has 5 letters
You can add
print mold stuff
at the end of the body of FOREACH if you want to see what got
build, but the punch line is that conventional notions of
translation don't apply (and are, in fact, harmful to learning
to use REBOL).
Hope that helps!
-jn-
--
; Joel Neely joeldotneelyatfedexdotcom
REBOL [] do [ do func [s] [ foreach [a b] s [prin b] ] sort/skip
do function [s] [t] [ t: "" foreach [a b] s [repend t [b a]] t ] {
| e s m!zauafBpcvekexEohthjJakwLrngohOqrlryRnsctdtiub} 2 ]
[9/12] from: g:santilli:tiscalinet:it at: 17-Jun-2002 0:43
Hi Kemp,
On Sunday, June 16, 2002, 4:59:55 PM, you wrote:
KW> 1. What's the execution model for Rebol? It seems to combine the best of my
KW> favorite HLL (Smalltalk) and LLL (FORTH), and I'm wondering if it's
KW> basically stack-based as in FORTH? Any docs on this? Any docs on in-memory
KW> structures, esp 'image ?
Stack based AFAIK. No docs, but some of us have developed some
models. :)
KW> 2. Is it purely interpreted, or runtime-compiled (Q1 above may answer this
KW> if FORTH is indeed the answer :)
Interpreted.
KW> 3. To protect commercial applications, can Rebol scripts be precompiled or
KW> otherwise obfuscated?
REBOL/Encap encapsulates your script with the interpreter.
Regards,
Gabriele.
--
Gabriele Santilli <[g--santilli--tiscalinet--it]> -- REBOL Programmer
Amigan -- AGI L'Aquila -- REB: http://web.tiscali.it/rebol/index.r
[10/12] from: bgs::tas::gte::net at: 16-Jun-2002 18:33
Wow, great responses and lot of'em! Thanks, I appreciate it!
Like everyone else here, between family and work I have limited free time
available to learn new things and before I commit this precious time I
wanted to be sure it was on something that was worthwhile and REBOL sure
seems to fit that profile. Hopefully RT is healthy financially and will be
around for sometime to continue to successfully promote/develop REBOL.
I think that if REBOL can...
- Stay small like it is.
- Remain CONSISTENT and not become cluttered (e.g. remove the desktop script
from the /View executable :-)
- Improve the licensing (allow more commercial use), open up /Pro features
for free also.
- basically keep doing what they're doing!
...it has a very bright future ahead of it.
If you're not bored of me yet I have a follow-up question:
- I understand there is a REBOL 3.0 on the horizon and that it will be
significantly different from the current version. Any information on 3.0
available yet?
Thanks!
Brian
[11/12] from: greggirwin:mindspring at: 17-Jun-2002 10:18
Hi Brian,
<< - I understand there is a REBOL 3.0 on the horizon and that it will be
significantly different from the current version. Any information on 3.0
available yet? >>
There are always rumors of things to come. Some say async networking, some
bugs are fixed in the current beta release (2.5.2) which will also apply to
3.0 of course, and there are a few new mezzanine functions. One of the big
things that I think many people want to see is modules. I don't think anyone
outside RT knows exactly how this will work, but it should make it easier to
build large systems in pieces. Today you can use objects to create
namespaces, but I bet Carl and the gang will make it even better with
modules.
--Gregg
[12/12] from: greggirwin:mindspring at: 17-Jun-2002 10:21
Hi Kemp,
<< 4. Is there/could there be a 'Rebol Web Start' (I'm sure that true
'Rebols'
would prefer 'Rebol NET Start' here!) to ease the initial deployment of web
applications? >>
I'm not sure what you're after exactly, but there are a few different
deployment tools people have written. Some take all the scripts for your
app, compress them, put them in a single file, and make that file a
self-extracting REBOL script. As long as REBOL is installed on the machine,
it does the rest.
<< 5. Any thoughts of Rebol's use in K-12 education? From language, ease of
use, and deployment? >>
I think it has great potential, like Logo, for that purpose. I think Carl
mentioned that future licensing might have a special clause to allow REBOLs
use for education. Not sure though.
--Gregg
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted