Widespread application deployment
[1/3] from: sunandadh:aol at: 17-Jan-2003 8:57
In a different thread ( Re: ANN: rebol-framework-006) Bolek writes:
> Well, people are different
I think a key lesson here is that it is not easy to write a piece of software
that deploys well in all environments.
I take a lot of care about getting that sort of stuff right, but even then I
get plaintive calls saying "it falls over when I try x". My response is
always "if it doesn't work, I'll fix it"
Rebol scripts have a particularly difficult job here because they are so
cross-platform. Someone may be trying to run one of my scripts on a platform
I've never heard of, let alone tried to test on.
Another difficulty, as Petr, points out is the proliferation of versions. A
script using 'attempt is limited to platforms that support the latest view
beta. Those of us who are not running that, can't run a large chunk of what
has recently appeared on this mailing list.
There are similar issues with websites. A badly written website will look
okay on the monitor of the author, and may not even render elsewhere. But
there's no real excuse for failing to write a cross-platform website as all
the pitfalls and issues are well known and documented.
Rebol doesn't have such a core of knowledge as far as I know. There are not
that many large-scale, cross-platform Rebol applications out there, so we
haven't gathered a set of such rules.
I got a few though -- mainly from hard experience:
1. Always test what version you are running under and put out a message if it
won't be acceptable. (I once spent a week being told that an app didn't
work. "Are you sure downloaded Rebol version 3.whatever?" I ask several
times. They are adamant that they are. I send them a new version of the
script with a version check in. They apologise.)
2. Always use to-local-file and ro-rebol-file when displaying file names and
paths. Just because Rebol uses a platform-neutral file-naming convention
doesn't mean we have to force it on everyone.
3. Check all files before running them:
if not exists? %main-script.r [
print "Oops. Look like a problem with main-script.r. Please re-install"
halt
]
4. Never assume a monitor resolution. Take a cue from
system/view/screen-face/size and build panels that fit.
There's more. But that's a good start. Feel free to add to the list. Maybe
we'll end up with a useful article for when the 'zine comes back.
Getting deployment/installation details right is an art. And it's one that
Rebollers ought to excell at.
Sunanda.
[2/3] from: rebol-list2::seznam::cz at: 19-Jan-2003 12:55
Hello SunandaDH,
Friday, January 17, 2003, 2:57:12 PM, you wrote:
Sac> 2. Always use to-local-file and ro-rebol-file when displaying file names and
Sac> paths. Just because Rebol uses a platform-neutral file-naming convention
Sac> doesn't mean we have to force it on everyone.
it would be nice but 'to-local-file and 'to-rebol-file are native
functions and are not available in Rebol/Core :(
=( Oliva David )=======================( [oliva--david--seznam--cz] )==
=( Earth/Europe/Czech_Republic/Brno )=============================
=( coords: [lat: 49.22 long: 16.67] )=============================
[3/3] from: sunandadh:aol at: 19-Jan-2003 18:49
Oldes:
> it would be nice but 'to-local-file and 'to-rebol-file are native
> functions and are not available in Rebol/Core :(
Getting the details right isn't easy, is it!? Just think of the number of
platforms and the versions of Rebol out there.
--I'll modify my comment by saying do the file name conversions for View
applications (and I'm sure there are exceptions there too).
-- I'll also note that (in fact checking your comment -- you are right!) I
discovered that "to-local-file" is sort of built-in even to Core -- it will
handle files in both local and neutral format. Example:
exists? join %"/" "c:rebol\core31\rebol.exe"
== true
exists? join %"/" "c/rebol/core31/rebol.exe"
== true
This is on a Windoze machine. I don't know if that's true on other platforms
What we really need for a useful application deployment checklist is a list
of gotchas by rebol version (such as your example) and a list of gotchas by
platform
Sunanda.