1 - Introduction
To those coming from a Unix background, "source" is often equated with "free", and "binary" with "commercial". The reasons for this are straightforward - Unix is cross-platform, source code is the lowest common denominator, the average user is a programmer (even if they don’t know it) and each machine has a compiler.
But source code is not for everyone, and end-users are not "stripped-down developers". One can see why in the Windows and Mac desktop OS world "source” usually means "hassle" and "binary" mean "convenience".
Into this world come scripting languages that facilitate the rapid development of cross-platform graphical applications. But the only deployment options are source (which provides only one side of the equation) or platform specific binary wrapping (which provides the other).
What is needed is a deployment model that provides the simplicity of a single file binary download with the openness of a source distribution. Such a model shouldn't force the user to become a programmer and nor should it necessarily mean applications become closed. And it should be a deployment model flexible enough to effectively support various deployment media - from network based installation to CD-ROM installation.
This paper describes the experiences with Starkits – an advanced deployment facility for Tcl/Tk applications.
Tcl/Tk is a simple yet powerful cross-platform scripting language with advanced features like Unicode and I18N support, unity of data and code, a variety of object oriented extensions, threading and event driven I/O, byte compilation, 64bit support, a graphical toolkit and a virtual filesystem (more on this later).
A Starkit is a single file packaging of Tcl/Tk scripts, compiled code and application data. It is interpreted using Tclkit - a single file Tcl/Tk interpreter.
The paper shows how to construct a Starkit and shows how to construct cross-platform Starkits containing compiled extensions for several platforms. It also looks at some advanced topics such as the architecture of a Starkit, code privacy, database management, adding help to a Starkit and installation options. The benefits of the Starkit approach compared to the alternative wrapping strategies are addressed, as is the ability to build executables for multiple platforms on a single platform.
Whilst the discussion is in the context of the Tcl/Tk language, the principles are general and could be applied to other scripting languages.