2002-09-16 (September 16, 2002) So here we are again... the last time I released any code to the world at large was on July 22, 2002... about two months ago. Now this doesn't mean that I haven't been tcl'ing - I just can't get enough! So what does it mean? It means deployment SUCKS! I WANT TO KILL IT ---- '''Do what your users do''' When developing, its a MUST that you run your code with the interpreter that your users are going to be using. If you don't do this, then you're just going to get so angry when you find that your program just won't run with the binary from that new wrapping tool you're using. Let me give you some concrete examples from my own painful development/deployment. When I write fun code, I choose Tcl/Tk because its fasttttt. I write and it doesn't work what ever, I hack it till it does. Sure I won't win any ACM awards for its engineering, but life is more exciting that way. '''can't find my own head''' So I take my code, usually the bootstrap code is called something like main.tcl, and it calls a bunch of libraries that I write for that app, in something like a scripts/ directory. Now I want this code to run - I don't mean every tiny detail looking the same - I just mean PLEASE RUN when wrapped for distribution to my buddies. But damn it, main.tcl just can't find its scripts when wrapped! This is using [freewrap], which totally munges the paths of files when wrapped. Not to mention doesn't work anymore (5.2 and 5.3 introduced a wicked bug where the freewrap'ed app just sits there when run from a path that contains spaces - like C:\My Documents\My Pictures). Now don't get me wrong, [freewrap] is cool. But talk about a NON-INTUITIVE (read - INSANE) way of packing the paths. It drove me just about nuts trying to figure this out. Btw, this is because it uses the paths of the directory you're in with the ZVFS. So its like - where you executed the command becomes part of the product. I used to accept this because '''hey its insane, but it works'''. [freewrap] served me well for Mind Web, and it sure looks like it works for a bunch of other people, since my fave mp3 player [snackamp] uses it too for distro to windows boxes. So I'm not trashing [freewrap], its just blame it on my psychosis. '''what the hell is eq, use [string equal]''' The second problem with wrapping it, apart from having a hell of a time figuring it out, and then finding weird bugs in it, is that it just totally divorces you from your great users. You develop and test using something like ActiveTcl, then all of a sudden a different version of the Tcl/Tk interpreter gets wrapped with your scripts. This is not good at all, because you might be using 8.4 features but deploying it with 8.3 - MADNESS WILL ENSUE.