[Python-3000] GUI -- an API, not a toolkit

Talin talin at acm.org
Wed May 10 08:46:31 CEST 2006


Greg Ewing wrote:

>>Qt, Java Swing, and .Net Windows.Forms are all examples of what I would 
>>consider "good" API designs. All three of them are powerful, 
>>comprehensive, and have relatively clean APIs. I would be perfectly 
>>satisfied to have the equivalent of any one of them in the Python space.
> 
> 
> But none of them have been designed with Python in mind.
> 
> In my experience, from a Python perspective, most GUI toolkit
> APIs are needlessly complicated due to deficiencies in the
> underlying language, such as lack of keyword arguments, or
> properties, or introspection, or duck typing, etc. By standing
> back and re-thinking the design Pythonically, many things can
> be made much simpler.

Sorry, I meant to say that I wanted the feature set of Windows.Forms or 
Swing; I didn't mean to imply that the API should be an exact copy.

My bottom line is this: I like the general idea of a lightweight, 
Pythonic UI library. What I have a hard time agreeing with is the 
specific design goals that you've proposed. Minimalism is good, but 
PyGUI, at least as I understand it, takes it to excess IMHO.

If it weren't for the fact that I suspect that you and I would never 
come to agreement on architectural decisions, I would probably be quite 
excited about your project :)

You said, at one point, that one of your major motivations was that you 
were writing this for yourself. There's nothing wrong with that. 
However, I want to tell you what happened to me:

1987, I was just starting to work on Music-X (which eventually went on 
too become one of the most popular Midi editing programs on the Amiga.) 
I hung out at the local music store, pestering the staff, so that I 
could learn everything I could about samplers, sequencers, controllers, 
and all that fun stuff. I told them all about my plans, listened to 
their feedback, got lots of great ideas.

I told them that I was primarily writing this for myself, and that even 
though it was going to be sold commercially, the feature set would be 
primarily the features that I would need - which provoked a very strong 
reaction: "No you don't." Writing for myself was fine for a hobby 
project, but if I wanted to be professional, I needed to think of my 
customers first, and myself second.

Which is not to say that I completely abdicated the role of designer - 
it was still my duty and my right to be the judge of what features 
should go in and what shouldn't. But if those judgements aren't informed 
by the needs of the people out there who would be using my work, then 
there's no justification for them to take me seriously.

-- Talin


More information about the Python-3000 mailing list