Hi, just wanted to get my opinion out there, and see what people have to
say. One of my major requests for the Rebol engineers is for them to not be
afraid to break existing code with new versions of Rebol. The language is
so new that it'd be a shame to not change something that needs changing for
the sake of not breaking existing code, when it might be a thorn in all of
our sides later.

It's a huge shame when a language becomes loaded down with baggage and
inconsistencies so that old code will still run. I read an article a little
while back which talked about how the developers of Perl can't go back on
some design decisions now that were made before the last version. Something
also about how one of the Perl developers exposed more of the internals of
Perl to the programmer than should have been, which they can't hide again
because people use it. Also, they're stuck trying to get rid of all these
silly context changing variables which were put in in the early days of the
language that can cause unexpected results.

I'm not implying that Rebol has any baggage or inconsistencies at this
point. I think the reason I'm writing is because there have been discussions
about what to add to 'parse. Don't be afraid to break anything if you think
it will make Rebol better, please! If you have to make 'parse not work for
some of the existing code out there, in order to make 'parse act how you
want it to, it's worth it.

One reason Rebol can be different in this respect is because it has
versioning built right in from the start. I'd like to propose making the
"needs" refinement to the REBOL object be mandatory, or maybe issuing a
warning that code may not run as expected in newer versions of Rebol if a
program doesn't specify what version of Rebol it needs. This way, when
something should be changed down the line, it will be possible without
breaking existing code.

Obviously making something backwards compatible like this requires that
Rebol keeps older versions of code (for built-in functions) in with the
newer versions, maybe calling a certain version of 'parse, for example,
based on what version was specified in 'needs'. Obviously Rebol could get a
little bloated this way, but I'd much rather have it this way as opposed to
the Rebol engineers having to make concessions in their design of the
language.

Anyway, in conclusion :) I think Rebol is great, and I just want to see it
prosper. I'm getting to see the growth of a language, in its technical
development, its popularity, and its culture, from the very beginning. It's
too late for languages like Perl (which has had to go through a bunch of
rewrites. The last version had to be rewritten (not *quite* from scratch,
according to Larry, since he says some of it was evolved from Perl 4), and
the next major version is likely going to be a total rewrite also (Topaz)).
My wish is to see the developers of Rebol not care so much about backwards
compatibility for awhile, at such an early stage of the language, and for
them to always keep in mind that a consistent language is a beautiful thing.
If we start encouraging keeping track of versioning for Rebol now, in the
beginning, it may save us many headaches in the future. Thanks for Rebol,
and may it change the world.

Keith

Reply via email to