• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp4382
r3wp44224
total:48606

results window for this page: [start: 3001 end: 3100]

world-name: r4wp

Group: #Red Docs ... How should Red be documented [web-public]
Henrik:
11-Jan-2013
Yes, it managed only a single page, and yes, the hard part is flow 
of paragraphs across pages, not generating multiple pages in itself.
Henrik:
11-Jan-2013
and I hope DRAW or similar will be available for Red.
Pekr:
12-Jan-2013
Kaj - sounds like sure thing but also news for me :-) AFAIK you and 
Doc were not much interested in bringing View to Red. Well, unless 
you mean DRAW equivalent done using different engine ...
Group: !REBOL3 ... General discussion about REBOL 3 [web-public]
BrianH:
21-Jan-2013
The exports of regular modules are collected in the lib context (the 
"runtime library") when they are initially imported. All potential 
conflicts between exports of different modules, any overrides that 
need to be done when you upgrade a module or use another module to 
make changes, these are all managed in lib. All modules import stuff 
from lib. You can tell if a module is loaded by checking for it by 
name, and for that matter even the module system itself can only 
tell if a module is imported by checking for it by name.
BrianH:
21-Jan-2013
Private

 modules were a side effect of the module name being optional. If 
 a module doesn't have a name, you can't check for whether it is already 
 loaded, so you have to load it again every time it is requested. 
 The module itself can't even tell if it was loaded before, so it 
 can't know whether it needs to resolve conflicts between itself and 
 other instances of itself. That makes it basically unsafe to have 
 an unnamed module export to lib. So instead, we skip the lib middleman 
 and import those exports directly into the target module or user 
 context, which makes the unnamed module effectively owned by that 
 target, a "private" module.


We found this facility useful enough that we added an explicit option 
to make it private (options: [private]). That makes it possible to 
have a named private module, which has some interesting abilities 
just from having a name. Having a name means that you can have the 
module load only once, and being private means that if you want to 
use its exports you have to import the module explicitly, so combined 
it means an explicitly accessed module that can share resources with 
other targets that also explicitly import the same module.
Maxim:
21-Jan-2013
one big difference is that slim doesn't bind to a global library 
area.   each module is completely shielded and imports "on its own". 
 

its a hierarchical system without namespaces.
Maxim:
21-Jan-2013
but I'll probably be using modules as the basic construct for slim 
R3, instead of objects... in my model, it might not really matter, 
I manage access/biding to/from modules actually altering and expanding 
the module when it is being loaded.


the data being sent to slim isn't executed directly, the block is 
sent to a manager, which does some binding and security stuff first.
Maxim:
21-Jan-2013
anyhow... Brian and I will eventually get to actually implementing 
the R3 module /  slim model sometime this year.  I don't want to 
start a philosophical debate here.  :-)
Maxim:
21-Jan-2013
I mean, I will implement, based on discussions and tests I'll have 
with Brian, to understand the intricasies of why/how modules are 
as they are now.
Gregg:
21-Jan-2013
Brian, is there a doc that has your above comments in it? http://www.rebol.net/wiki/Module_Design_Details
looks like it covers a lot of ground, but I don't know if you wrote 
it, and whether it has some of the design notes included. I think 
they're very useful and informative.
Gregg:
21-Jan-2013
And it should have links to Slim and other alternatives.
BrianH:
21-Jan-2013
Gregg, I wrote that doc (and forgot the link, thanks), but it needs 
updating. It is about one or two rewrites behind.
Gregg:
21-Jan-2013
Hard to keep up, and keep track, with everything. :-)
BrianH:
21-Jan-2013
Maxim, slim modules are like R3's named private isolated modules. 
And the equivalent of the "global library area" in R2 is system/words, 
so if you have any code that binds to or imports from system/words 
then you have the equivalent of lib.
BrianH:
21-Jan-2013
Btw, module systems like slim are the reason why I changed the underspecified 
parts of Carl's original module system into features that you might 
find familiar. It wasn't based on slim specifically, or even Gabriele's 
system, but an earlier module system that I wrote for the Apache 
module version of R2 back in 1999. It had similar characteristics 
to your module systems because I had come from strong modular languages 
like Oberon and Delphi, and because I had to solve some of the same 
problems you did.
BrianH:
21-Jan-2013
Most of the characteristics of R3's module system are the result 
of combining the system model of R3, the binding model of Rebol, 
and Carl's goal of simplifying things for developers not familiar 
to modular programming. Every bit of syntax that Carl wanted to be 
optional or minimal in order to make things easier for end-developers 
had semantic consequences. The runtime library lib, for instance, 
is the result of having to manage a modular multithreading system 
that can be used by scripts that can be written as if R3 were single-tasking 
and monolithic like R2. Doing that requires that modules have certain 
characteristics (such as a name).
BrianH:
21-Jan-2013
If R3's system model changes, that *would* affect the semantic model 
of modules. Right now the task! model is a bit underspecified and 
extremely underimplemented, and the module system is built around 
Carl's proposed tasking behavior. If that changes, as it might since 
Carl's proposal isn't fully implemented yet and is incomplete even 
in spec, then we might have to tweak the semantic model of modules 
accordingly.
Ladislav:
21-Jan-2013
And, BTW, Andreas, regarding the 15 vs 17 digits: I think that we 
can give in easily in this case, just put 

system/options/decimal-digits: 17


to your rebol.r and MOLD decimal will behave exactly like MOLD/ALL 
decimal.
GrahamC:
21-Jan-2013
https://github.com/gchiu/Rebol3/blob/master/protocols/prot-send.r
and with the latest prot-smtp.r can now send attachments .. I tried 
a 60Mb one and it went fine.


same syntax as in R2

send/attach [carl-:-rebol-:-com] "Carl, need to remove the spam from blog 
comments" %attachment.exe
Bo:
23-Jan-2013
And [carl-:-rebol-:-com] is not Carl's email address any longer. :-)
GrahamC:
23-Jan-2013
I know what Carl uses as his email and yes, I knew it wasn't what 
I wrote above.  Last time I looked he had an s at the end of this 
name.
GrahamC:
23-Jan-2013
Is there a document anywhere that outlines the differences between 
R2 and R3 for those porting/writing apps now?  I'm thinking that 
those of us still using R2 should try and stick to something that 
will be compatible with R3.
Ladislav:
24-Jan-2013
This is a public group, MaxV! I assume that your action will force 
Carl to change his address and not give it to you...
Scot:
24-Jan-2013
As a matter of practice I generally share contact information for 
other people ONLY through individual private channels and NEVER on 
email.  Just a thought.
GrahamC:
24-Jan-2013
Has anyone had any contact with Steven Solie about the Amiga R3 build? 
 I see from his site http://solie.ca/that in 2010/11/23 he had R3-GUI 
up and running.
BrianH:
27-Jan-2013
Since he didn't ask about exporting and the 'private option, I didn't 
mention such issues.
Sunanda:
27-Jan-2013
I believe you can email the stackoverflow admins, Brian, and they 
can transfer stats to your new account.
GrahamC:
27-Jan-2013
For completeness I've asked the question about exporting and private
BrianH:
27-Jan-2013
SO didn't previously require you to create an account or even provide 
an email address to answer questions. Since I didn't care about SO, 
I didn't bother to make an account. Now they require an email address, 
and use that email address to determine who you are. Creating an 
account is almost an extra, just a way to give you a nickname and 
profile info.
GrahamC:
27-Jan-2013
You need a reputation of at least 20 to use the SO chat system ... 
and with ticks, you're already there.
GrahamC:
27-Jan-2013
Also, SO has an API so we can potentially grab all the Rebol tagged 
questions and also host them on rebol.org if we need to.  It's not 
stuck in the SO system
BrianH:
27-Jan-2013
I can imagine that if you want to have a module somehow negitiate 
some passwords and don't want them to leak, or some other security 
issue, you might want to write the module to be isolated. Also, if 
Maxim wanted to port slim to R3, or someone wanted to port Qtask 
(I forgot what it's called now, sorry) or some other code written 
for Gabriele's PowerMezz modules to R3, they might want to use named, 
private isolated modules.
BrianH:
27-Jan-2013
One interesting use of isolated modules is to use IMPORT/no-share 
to force a module to load isolated even if it wasn't written for 
that. This is a way to use modules that are too messily written, 
that make too many unnecessary changes, and try to limit the mess 
a bit.
Pekr:
31-Jan-2013
Id depends, how fast is CALL, but especially on Linux, there should 
be very little overhead. E.g. I found out, that PHP, for Unicode 
conversions, just calls iconv. If you don't call the function in 
loop, I would go the CALL way, with tiny wrapper parsing results 
back. But - CALL on R3 misses /output and /wait ...
BrianH:
31-Jan-2013
I'm getting metaphorically killed by the FOREACH function blowing 
a system assertion 1207 periodically. I'm trying to process a couple 
thousand files and it's dying before it's finished. The script will 
need to be rewritten to call another R3 instance per file, just to 
make sure that it completes.
BrianH:
31-Jan-2013
There's only so much of the process that can be rewritten to uzse 
FORALL. And of course MAP-EACH is getting hit by the same bug.
GrahamC:
31-Jan-2013
and it's not a memory leak?
BrianH:
31-Jan-2013
I'm going to switch the rest of the code to non-rebinding loops and 
see if that helps.
BrianH:
31-Jan-2013
And it's an emergency too, we really need that analysis.
BrianH:
31-Jan-2013
It might be easier. It's parsing, and uses MAP-EACH a lot, and there's 
a bug in MAP-EACH in R2 (that's my fault, sorry), but that is one 
approach I'll have to consider.
Andreas:
31-Jan-2013
I mean, can you quickly run a test binary and see if things improve?
BrianH:
1-Feb-2013
Apparently I can make it last longer by using the *EACH functions 
less., switching to loops that don't allocate contexts. However, 
I create objects to store the data, so those eventually cause the 
crash. Still repeatable, so it's probably happening after allocating 
a certain number of objects/contexts. It acts identically on 32bit 
and 64bit Win7, crashing at the same point in the process.
BrianH:
6-Feb-2013
Ladislav, document it then. It's too useful to drop. And according 
to the docs you couldn't use get-words in SET block at all, so I 
never wrote code that had them. SET block with anything other than 
word! is rare, at least until R3 added FUNCT, which makes set-words 
very common.
BrianH:
6-Feb-2013
Not really. It would only be a problem if people started using this 
and someone wanted to remove the feature.

It hasn't been a problem so far, and there's nothing wrong with the 
code. This code:
    set [:get-word] [word]
is currently equivalent to this code in R2:
    get-word: get 'word
BrianH:
7-Feb-2013
Agreed, and speaking of which I also noticed RETURN/redo, which even 
has a visible option and I didn't notice it before. It's a general-purpose 
function trampoline, and as hard as I try I haven't run out of new 
ideas for how to use it.
BrianH:
7-Feb-2013
And, it does break through the APPLY security trick, which I might 
want to review some code about. I think that needs a ticket.
>> apply does [return/redo :add] [1 1] 1 1
== 2
BrianH:
8-Feb-2013
If you have any code that uses SET block! block! or SET object! block!, 
and the values block might possibly have unset values in it, then 
*your code is buggy*. If you want the unset values to be assigned, 
you should be using SET/any. If you want the unset values to trigger 
errors (a fair assumption, since you're using SET instead of SET/any), 
those errors are currently *not* being triggered because of a bug 
in R3. Either way, check your code.
BrianH:
8-Feb-2013
If you're using SET block! block! or SET object! block! in cases 
where you can get unset values and are expecting errors to be triggered, 
then your code is buggy until this is fixed. If you are expecting 
it to *not* trigger errors, then your code will be buggy until you 
change to using SET/any - it's just accidentally working until this 
is fixed, and then will properly not work after it is fixed.
AdrianS:
11-Feb-2013
So there's no short list (i.e. not something that goes into the kind 
of detail Bindology covers) of documented changes? In the meantime 
I asked this on StackOverflow:

http://stackoverflow.com/questions/14818324/is-there-a-summary-of-the-differences-in-binding-behaviour-between-rebol-2-and-3
BrianH:
17-Feb-2013
It can do more than that, but that's the basics. And you can have 
words as well, not just numbers.
BrianH:
17-Feb-2013
If you are writing tests, there are a few things you should know 
about the behavior-as-designed of REWORD:

- values is a collection of key/value pairs, like a map. If a block, 
no reduce is done, it's just data.

- Keys are converted to strings if they aren't strings already, and 
are considered equivalent if their strings are equivalent.

- Empty strings don't count, but the check for empty keys is done 
after the string conversion so none is not empty, it's "none".
- If a value is unset or none, the key/value pair is ignored.

- If the same key is specified more than once, the last value of 
that key takes precedence.

- After all of the key/value conflicts are resolved, if there are 
ambiguities between keys (like "ab" vs. "a") then the first key gets 
priority. That means that you probably want to put the longer key 
first, same as with PARSE alternates.


If we're writing tests, we need to write tests for all of those. 
And we probably need tests because it was intended that REWORD be 
converted to a native for speed after we settled on its behavior. 
The current REWORD works as designed, but we might want to tweak 
the design after further discussion.
BrianH:
17-Feb-2013
Oh, and if a value is a function, that function will be called every 
time with an argument of the string at the position of the escape. 
We need to test for that too. This makes *really* flexible replacement 
possible.
AdrianS:
17-Feb-2013
just cut and past - almost
BrianH:
17-Feb-2013
And edit, because SO is much better for this kind of thing. And maybe 
provide a little context for why the function exists at all.
AdrianS:
17-Feb-2013
And that calls for a downvote? Well, that's a great incentive to 
ask questions.
BrianH:
17-Feb-2013
One of the problems of SO (generally, not in this case I hope) is 
that the asker chooses which answer is the accepted one, not someone 
who knows enough about the situation to know which answer is better. 
So I tend to try to work around this social bug by answering earlier 
to discourage less-informed people from trying to answer badly. In 
this case, I have to answer because I'm the one who designed and 
wrote the function, at Carl's request.
Andreas:
17-Feb-2013
AdrianS: I don't think BrianH downvoted your question. But whoever 
did (I didn't either) probably has a point, as it's a very broad 
and open question. SO generally prefers more specific questions based 
on actual problems, so that it's reasonably clear when an answer 
is practical.
BrianH:
17-Feb-2013
I didn't downvote it, and I might have enough reputation to rewrite 
it so it's a better question. Or request that Fork does, because 
he certainly does.
AdrianS:
17-Feb-2013
From now on, I'll have to be careful in asking question where you're 
the intended answerer since you go overboard in the details. It might 
makes sense in some cases to just put a summary and leave a note 
that there's more to be said somewhere down the road.
BrianH:
17-Feb-2013
Well, we've been encouraged lately to put these up, and we can point 
other pages to SO if need be, or copy the answers to a documentation 
page when we have those. I mostly see it as a place to write short 
documentary articles in a Q&A format, much like Yahoo answers is 
a place to write jokes in Q&A format.
Cyphre:
22-Feb-2013
yes, the problem is MINGW is using own 'custom' version of MAKE called 
"mingw32-make.exe" which doesn't behave well on the R3 makefile (at 
least from my experience).
So my Windows setup is:
-I installed CodeBlocks with MINGW support

-then I installed MSYS and extracted only 'necessary' files from 
MSYS/bin folder and put it into CodeBlocks\msys\bin\ folder
-then I deleted the MSYS instalation to not have bloat on my disk

-I set paths to CodeBlocks\MinGW\bin CodeBlocks\msys\bin in the WIndows 
console

-from now I can  just type MAKE ALL in the CMD console and R3 builds 
fine


Just in case here is the list of "necessary" MSYS/bin files I extracted 
(around 3MB of data):

cp.exe
make.exe
mkdir.exe
msys-1.0.dll
msys-iconv-2.dll
msys-intl-8.dll
msys-regex-1.dll
msys-termcap-0.dll
rm.exe
rmdir.exe
sh.exe
Cyphre:
22-Feb-2013
If you wantt I can put the "minimal" MSYS bin folder into a zip archive 
so you can download it and just copy it into your codeblocks instalation...
Cyphre:
22-Feb-2013
I did the same for Ladislav and it worked for him well AFAIK.
Cyphre:
22-Feb-2013
just unpack it and copy to <your path to codeblocks>/CodeBlocks/ 
main dir
AdrianS:
22-Feb-2013
Actually, to keep things as simple as possible for people, all you 
need is Code::Blocks, the CB project file and a slightly modified 
make-make.r that is soon to be checked in by Andreas (or which I 
could provide). Then, you can build from CB (and debug), navigate 
your C source propertly, etc.
Andreas:
25-Feb-2013
And starting first with the basics I need (/wait + /input /output 
/error). (So no full scheme & async at the start.)
Rebolek:
25-Feb-2013
Great news, Andreas! Linux is good for me and basic input/output 
is enough too. Just what I need.
Andreas:
25-Feb-2013
I discovered some interesting PARSE functionality, which I have not 
known about before. TO and THRU with integer arguments seem to do 
absolute positioning:

>> parse "abcd" ["abc" to 2 "bcd"]
== true


Anyone seen this before? I added a CC ticket as a reminder to document 
it (http://issue.cc/r3/1964) -- if anyone knows about a place where 
this is documented already, I'd be happy about a pointer.
Andreas:
25-Feb-2013
(And it does so in R2 as well, so I may have picked the wrong group.)
Andreas:
25-Feb-2013
Ladislav: thanks, forgot to list that. And it's at least a place 
where we can add it right away.
BrianH:
25-Feb-2013
Well, that behavior seems like an undocumented feature. And a useful 
one :)
Maxim:
25-Feb-2013
I find that becomes quite assymetric in use.  if TO is going to change 
behaviors... relative in some cases and absolute in others... using 
weird datatype conventions (which seem to be completely different 
from the rest) then I'd rather have a new Absolute keyword which 
works just like to on All datatypes.
Andreas:
25-Feb-2013
But this was pretty much the first thing I started looking at, which 
already lead me down the rabbit hole of testing it in R2 and R3, 
looking for documentation, filing a documentation request against 
R3 and discovering and reporting a bug against R3 (and I'll probably 
continue down the hole and fix that bug). So I didn't get much further 
towards other goodies, yet :)
Cyphre:
26-Feb-2013
Guys, was there any discussion about the COMPRESS/DECOMPRESS natives 
in R3? Do we really need these functions to use some 'custom' compression 
format that noone in the world uses and when it is based on zlib 
anyway? Wouldn't be better to change this in R3 and use for example 
ZIP format? What do you think?

I remember Carl saying the custom format is more efficient but I 
tried to compress couple binary or text files to compare with ZIPped 
results and I don't see any significant difference that would be 
worth the current format incompatibility.
Cyphre:
26-Feb-2013
Henrik, I was more thinking to rip the old zlib code out of Rebol 
and put there some more actual(or even smaller) implementation (latest 
zlib or miniz etc.)
Henrik:
26-Feb-2013
Pekr, I don't think it's the same thing, plain and simple.
Henrik:
26-Feb-2013
Would you not want a single, universal way to store and retrieve 
application state from disk? ZIP does not do that.
Pekr:
26-Feb-2013
Well, then I am wrong, ok. Not sure .rip format was anything in common 
with app state serialisation. I thought it was just plain and simple 
packaging mechanism - having a header, and binary container for compressed 
app modules/scripts ...
Henrik:
26-Feb-2013
(and if it turns out, that it was not the goal with .rip, then the 
goal should be changed to do this)
Oldes:
26-Feb-2013
If you want something modern, add support for LZMA compression. And 
please don't mix compress with zip - zip is high level, compress 
should be low-level function (idealy supporting more formats)
Henrik:
26-Feb-2013
Storing bindings, managing upgrades of data structures, structural 
checks and error handlign, type assertion, etc.
Maxim:
26-Feb-2013
as far as i know, zip files allow prefix payload, so you can put 
stuff before the actual .zip file starts... just like REBOL allows 
stuff before the header.   I've seen a demo of a single file which 
is  an .exe,  .pdf ,  and .zip all at the same  time!
Bo:
26-Feb-2013
Old Bug, New Bug, Red Bug, Blue Bug?


I'm using the ARM build from rebolsource.net and getting the following 
unexpected behavior:

>> template: read %template.html


It outputs template as if it was a binary file, although it is plain 
text.

The build date on the package was 24-Jan-2013.
BrianH:
26-Feb-2013
Cyphre, Rebol compression is the same as zip deflate, but it's not 
the compressed part that's more efficient, it's the headers. The 
zip format has some fairly extensive headers, and Rebol compression 
doesn't. We do need compression to support compressed scripts though, 
so we need something. That doesn't mean we can't have something more 
flexible, and if we stick to what we can get from zlib (since we're 
linking it anyway) we can get this flexibility nearly for free.
BrianH:
26-Feb-2013
The ZIP format is supposed to be like a directory/file structure. 
I would rather have it supported as a zip:// port scheme, like file:// 
is for files and directories.
BrianH:
26-Feb-2013
It's not a single-stream model like zlib or gzip - those would be 
better supported by COMPRESS and DECOMPRESS.
Cyphre:
26-Feb-2013
BrianH, yup I realized how it works now and I even fixed the /gzip 
quirks in DECOMPRESS...so I can decompress zip chunks with CRC32 
checksums now. But there is still one annoying bug, that the current 
zlib code doesn't handle the CRC32 calculation well on bigger files 
than 32kB :-/ Now I'm trying to fix it so the crc32() calls works 
in the "CRC running" mode where the final CRC32 is calcualted from 
smaller chunks of data which a file consists of.

I'll hopefully push this on github If I manage to fix it succesfully.
BrianH:
26-Feb-2013
We would still need to be able to compress and decompress in a R2-compatible 
way, even if it's optional, not the default. For interoperability.
Cyphre:
27-Feb-2013
BrianH: I think we should change the /GZIP refinement to /CRC32 so 
it is independent of the format. Then we can create mezanine/scheme 
support code for various higher-level formats (ZIP, GZIP etc.) at 
the REBOL scripting level.

BTW I have finally fixed the current /GZIP refinement problems so 
now I'm able to ZIP/UNZIP uzing rebol script without the 'PNG load 
hack' that is on rebol.org. In fact I modified the rebzip.r to work 
with R3 and the ZIP/UNZIP operations are now "instant" when comparing 
to the R2 version. So I guess this is a good proof we can write fiast 
zip:// scheme with just the current COMPRESS/DECOMPRESS natives.
Cyphre:
27-Feb-2013
cool, so looks like we could try to replace the old code in the future 
with these and see if it makes R3 better.
Sunanda:
27-Feb-2013
Is anyone working on the mezzes CHANGES and UPGRADE ?

When run from the new builds, they simply head back to rebol.com 
and do not show the latest goodies from the github.
BrianH:
27-Feb-2013
Miniz looks nice. Smaller is better for something we're statically 
linking, and the license works too. How is the error reporting and 
recovery? That has been a problem with DECOMPRESS.
Pekr:
28-Feb-2013
and async parse! :-)
PeterWood:
28-Feb-2013
The LiveCode KickStarter campaign to first re-structure the code, 
make it easy to accpept contributions, build a new IDE and some modernisation 
has raised over 500,000 GBP (more than 750,000 USD).


Same Carl didn't try something along those lines before releasing 
REBOL 3.
BrianH:
28-Feb-2013
It's actually pretty easy to see how they managed it. It was:

- A multi-language IDE (not a programming language, people already 
get those for free)
- With a GUI with an emphasis on modern graphic design (pretty!)
- With a fancy demo (more pretty!)

- With an initial focus on programming languages and development 
platforms that are already popular (built-in customer base)


Powerful IDEs are some of the only development tools that people 
are still willing to pay money for (i.e. Visual Studio). Most people 
can't choose what language they write in, but they more often can 
choose their IDE. And for crappy-but-IDE-friendly languages, an IDE 
can make all the difference in your productivity. They're not as 
helpful for really powerful extensible languages like Rebol or Perl, 
unless the language is so bad that just about anything would help 
(Perl). Plus, since an IDE is an end-user app you can afford to GPL 
it, since the only stuff built on it are add-ons - that doesn't work 
for programming languages unless they have a clear distinction between 
user code and built-in code that is distinct enough to not violate 
the GPL distinctions, because most of the competition is permissive 
- and without the GPL restrictions there is nothing to sell, so there 
is no business model to get a return on investment.


It's nice to point to other open source projects and say "See! We 
could have done that!" but unless those are comparable projects their 
success isn't comparable either.
BrianH:
28-Feb-2013
Programming language projects for (unfairly) unpopular programming 
languages are not commercial endeavors anymore, they're charities. 
GPL/commercial programming languages that might possibly GPL-infect 
the user programs are just dead now - they're not even sad anymore. 
It doesn't matter if the license is carefully arranged to make user 
programs not affected; most users aren't lawyers and there are much 
more unambiguously permissive no-cost alternatives out there that 
might be good enough, and some of them are popular.
BrianH:
28-Feb-2013
Don't knock charities though. Charities can be very successful if 
they get enough industry support. Python, Perl and GCC are made by 
charities.
BrianH:
28-Feb-2013
And it doesn't take a lot to run a programming language charity for 
a somewhat minimalist language. You don't need a lot of people to 
get the job done. Something maximalist like .NET or Java (when you 
include their runtime libraries) can need a lot of people, but something 
small like Rebol or Red doesn't need as much. You can get enough 
people to fund development even for a charity project just by being 
useful enough.
BrianH:
28-Feb-2013
OK, so it's a single-language IDE aimed primarily at the education 
market, still with a nice-looking GUI if not as modern, with an appeal 
based on Apple-fan nostalgia for HyperCard. That's a tougher sell, 
but since it's education market you can get away with GPL/commercial, 
and since it's Apple-nostalgia you can raise that much money from 
merely thousands of investors instead of the millions that you'd 
need if you were going for a less-well-off target market. Makes sense, 
but it's still nice to see.
NickA:
28-Feb-2013
Livecode is a great tool - the values remind me a low  of what made 
REBOL attractive years ago.  It's just a really productive and well 
designed tool, easy to use, powerful, cross platform (iOS, Android, 
Windows, Mac, Linux, server), it's SIMPLE and geared towards getting 
work accomplished.  That's it's only goal, and the company has always 
tried to make good real-world choices about productivity.  And they're 
keeping the system modern and relevent.  The REBOL community would 
be helped by watching what they do...
3001 / 4860612345...2930[31] 3233...483484485486487