[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