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
> 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.