[Pythonmac-SIG] coding preference
Jack Jansen
Jack.Jansen at cwi.nl
Mon Jan 24 00:16:49 CET 2005
On 22-jan-05, at 2:21, Kevin Ollivier wrote:
> Hi Jack,
Hi Kevin!
First: sorry for my bad choice of words. "throwaway apps" especially is
not what I should have said, and some of the other words were badly
chosen too. I definitely don't want to belittle the work you're doing
with wxPython (and other people with other toolkits), far from it!
> I think you're getting bogged down by the differences between
> platforms rather than abstracting them. ;-) Which is what any
> cross-platform developer will need to do if they wish to succeed,
> regardless of what GUI toolkit(s) they use. For the most part, it
> isn't 'what' the native toolkits (or platforms) do that differ, it's
> 'how' they do it. So if you program 'what' you want to do, and design
> the toolkit to figure out 'how' to do it correctly on each platform, a
> lot of times you can get the right look *and* feel without much extra
> effort. Granted, there are some technical challenges (look at Apple's
> Carbon text control technologies, like MLTE for example, where
> sometimes you need to manually implement even basic, standard
> functionality), but I have a hard time understanding how these
> difficulties are insurmountable.
I guess my real point is that once you abstract that far enough you're
at the MVC level. To name just a few paradigms that differ between Mac
and Windows:
- Standard menu structure and shortcuts, i.e. where the Preferences
command is, whether it's called Preferences or Settings and its
shortcut, the Windows menu, Help, etc. are completely different.
- Treatment of toolbars. Windows users like oodles of them, Mac users
are used to one. Windows programs often have them filled with dropdown
menus, etc.
- Mac preferences tend to be direct manipulation, windows preferences
tend to be cancel/ok/apply style.
- Mac programs tend to require every command to be available somewhere
in the menu bar, with toolbar/contextual menu entries used as shortcuts
only. No such rules on Windows.
- Two-paned browsers are ubiquitous on Windows. On the Mac they look
otherworldly.
- The Mac floating palette style is cumbersome on Windows (cf. all
Adobe software), and the Windows MDI architecture translates very badly
to the Mac: window-in-a-window is abysmal, but multiple toplevel
windows is bad too because there often tend to be really many of them.
Tabbed windows for, say, editing multiple source files is the norm on
Windows (probably because of MDI or the Visual Studio example) but
makes Mac users scream.
By the time you've special-cased all of these there's not all that much
machine-independent code left:-(
> Well, that depends on the programmer. Even a Mac developer can create
> an application that doesn't "feel" like a Mac application; it really
> isn't very hard if you try. (And for people coming from Windows, that
> will be their natural inclination anyways.) It's arguable that the
> problem is the toolkit at all - it's the developer simply not taking
> Mac design considerations into effect. Yes, toolkit affects their
> ability to do this, but in the end a tool is just a tool. I see no
> fundamentally technical reason a cross-platform GUI toolkit *cannot*
> provide a user with the ability to create a well-designed Mac
> application.
Right, but where a local toolkit will get a lot of things right
automatically (or because the skeleton programs already do a lot of the
right things) with a cross-platform toolkit you'll have to be aware of
the issues...
> Just be aware that for all but 'throwaway' apps, this means that some
> developer is going to have to learn and master three different GUI
> toolkits, and create, test, debug, document, and package three totally
> different interfaces. Maybe you have time to put in the extra effort
> when writing your apps, but I think a lot of people don't. And when a
> PHB is told that the only way to support a minority platform is to do
> that work, s/he's going to say - sorry, just build the Windows
> version. For my app, I can tell you without doubt - if I had to do
> what you suggest, Mac support would not be an option. Bye bye Mac
> port.
Well... for a commercial app you'll have to do the testing, debugging
and packaging anyway. So you'll save on creating and documenting. With
only a little on the latter: Adobe and Macromedia (and my previous
company, Oratrix) did the multiplatform documentation by putting in one
section on the mac (installation and first run) and using a mac
screenshot once in every 5 or so. And then one proofread adding a
couple of paragraphs.
> I performed some training last summer, and to be honest, the Mac users
> at the training were quite glad that a Mac version of my app existed
> and that they weren't marginalized users (as they often end up being
> in the real world) who would need to "pick up a PC" to undergo the
> training. It certainly wasn't as 'slick' as an Apple app, but it
> worked and some people quite liked it. And in the end, that's how I
> personally measure whether a technology is "good" or not. Whether or
> not it has a positive impact.
Fully agreed. I guess that where I said "throwaway app" I should have
said "applications that provide a unique service that isn't available
anywhere else". Whether that unique service is for you yourself only
(as in a throwaway app) or for a larger community isn't the point.
But if your app is competing with other products (an IDE, an image
editing program, a database or spreadsheet, whatever) it will really
have to stand out in functionality to offset the disadvantages of a
cross-platform toolkit.
--
Jack Jansen, <Jack.Jansen at cwi.nl>, http://www.cwi.nl/~jack
If I can't dance I don't want to be part of your revolution -- Emma
Goldman
More information about the Pythonmac-SIG
mailing list