Version 11 of A Poor Boy does Deployment

Updated 2002-09-16 17:10:42

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.

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.

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.