Windows Software by WordTech
   


About
Windows Software by WordTech: Developing beautiful apps for Windows

Your Host
Kevin Walzer, software developer.

Home

Subscribe to RSS Feed
Get a syndicated feed of my weblog.

Archives
2011


Categories
Business
Software
General

       
Tue, 30 Aug 2011

Saying hello to Windows

I've been a Mac software developer for nearly a decade, and a nearly-Mac-only user for almost that long. During that time Apple has staged a remarkable comeback, even a renaissance, and the market for Mac software has exploded, allowing many developers to earn a living developing just for the Mac.

Unfortunately, I'm not one of those developers. I earn some additional income from Mac development, but it isn't enough by itself to pay the mortgage. As a result, I decided earlier this summer that it was time to expand my product portfolio.

There are many ways for a business to expand its portfolio. One way is vertically, by developing new products. That has been my long-term plan, and remains so. But another way to expand my portfolio is horizontally--that is, by finding new markets for existing product.

That's what I'm doing here.

Specifically, I've decided to port some of my existing Mac programs to Windows. I can't port all of them, as some of my products integrate with Mac-only projects such as the MacPorts software project--but several of them are general enough in focus to make it feasible to bring them to Windows. Windows remains the largest desktop operating system in existence, and I think it makes sense to try to reach users there.

Today I'm releasing the first result of this effort: QuickWho for Windows. QuickWho is a utility that provides administrative and geographic information about Internet domains, in a pleasant-to-use graphical interface.

Porting QuickWho, the simplest of my applications in terms of its feature set, was nonetheless not a simple project. My use of a cross-platform language and GUI toolkit (Python, Tk) made some aspects of porting the application easier, but I wanted to be respectful of the Windows user experience, and this meant that a quick-and-dirty update of the application to run on Windows wouldn't be sufficient. I had to do a fair amount of under-the-hood rewriting to optimize QuickWho from its Mac version to Windows.

Here are a few of the things I undertook:

  • Translating the program's under-the-hood mechanisms to a Windows-specific context. QuickWho makes use of both Python-specific libraries for gathering domain information (which ran unchanged on Windows) and external command-line programs for geographic information about domains, and for printing. On the Mac, which is Unix underneath its shiny surface, such command-line tools are plentiful and a native part of the operating system. Windows lacks such utilities, so I had to search out Windows versions of these tools and bundle them with QuickWho.
  • Finding Windows-specific technologies to implement functionality comparable to the Mac version. On the Mac, QuickWho is scriptable from the Mac's AppleScript scripting language; users can write scripts to drive the application and retrieve data from it. Obviously, AppleScript is not portable to Windows. However, Windows does have various mechanisms for automating programs, and after some research, I found that adding a COM interface to QuickWho would provide the closest equivalent to AppleScript support. QuickWho can be automated by various Windows desktop scripting languages, such as VBScript. (One reason I chose COM as the scripting interface for QuickWho is that COM is the mechanism Apple uses in the Windows version of iTunes, which is a highly scriptable program.)
  • Adjusting the user interface to conform to Windows conventions. Some of these changes were obvious, such as using the Control key instead of the Command key for user shortcuts. Others were more subtle, such as adding buttons to the preferences dialog to save or cancel the changes to user preferences, or preparing a Microsoft-style compiled help manual (CHM) for user documentation. I wanted QuickWho to be a good Windows citizen and not stand out as an obvious port from another platform. Apple learned this lesson the hard way when they released a Windows version of Safari, its WebKit-based browser. The first Windows version of Safari pretty much directly replicated Mac interface conventions, which garnered significant criticism from Windows users. Subsequent releases of Safari for Windows made a greater attempt to fit in with Windows interface conventions.
  • In recognition that the Windows versions of my programs are taking a largely separate path and timeline from their Mac counterparts, I'm releasing them with a different website, and not making much effort to present them as cross-platform. I'm more interested in each version of the application fitting in well on its respective platform. I probably still have a number of things to learn about Windows development, but I feel confident that this release of QuickWho is a good first effort. I look forward to receiving feedback from users and, hopefully, selling some copies.

    Time will tell.

    [/general] permanent link