Version 1 of Developing for a Single Platform

Updated 2007-02-21 20:00:36

Kevin Walzer}: While Tcl/Tk is designed to be a cross-platform toolkit, it is entirely possible to use it to focus on developing for a single platform. In my case, I develop shareware for [Mac OS X. Here are some strategies to keep in mind if you develop for a single platform:

1. Look for platform-specific extensions to integrate as deeply as possible with your chosen platform. In my case, I use a lot of packages that are Mac-specific: maccarbonprint, tclAppleHelp, carboncritlib, and others. These packages implement Mac-specific functionality that users expect from commercial software on the platform. I also use tile for general native look-and-feel.

2. Consider purchasing commercial extensions, if necessary, to further improve the look-and-feel of your application. This is not a strategy for open-source programs, obviously, but commercial software can benefit from this. For instance, I used various Linux-based open-source icon sets in my programs for a long time; they looked a bit out-of-place compared to other software on the platform. More recently I purchased a set of Mac-style icons for my programs, and have begun to update the GUI's of my programs.

VuMan before:

http://www.codebykevin.com/blosxom/business/vuman-old.png

and VuMan after:

http://www.codebykevin.com/blosxom/business/vuman-new.png

3. Finally, pay attention to interface conventions on your platform. In my case, I've designed/styled some standard Tk widgets (menubutton, entry widget) to behave in a manner more consistent with other applications on the Mac; note the "gear" button in the screen shot above. If I used these widget designs on Windows or Linux, they would work, but they would look out-of-place.

A sample of a Tcl/Tk program that strives for deep integration with Windows is WITS:

http://magicsplat.com/wits/screenshot.png

In my case, the reason for this deep push into platform-specific look-and-feel and behavior is to increase the sales of my programs. If you are developing cross-platform software on a commerical basis, some trade-offs may have to be made.