Simon Edwards
KDE application development using Python
Please introduce yourself and your role in KDE
I started using KDE as a user and application developer when KDE 1.0 came out.
Since then I've developed a Linux firewall utility called Guarddog, and
beginning with KDE 3.3 I've been maintaining a copy of the Qt/KDE Python
bindings in KDE CVS kdebindings module. I've also a got KDE/Python project or
two on the go and am involved with KDE-NL.
How does Python compare to C++ for KDE development?
I think it's an excellent language for developing KDE applications. In my
opinion it is better language choice than C++ for most applications.
Python is a mature language with the features you need to be able to develop
fast and effectively. It has the usual features that you expect to see in a
high level language, classes/OOP, exceptions, garbage collection, and so on
and so on. But the feature I like the most is that it works the way you
expect it to. There are very few hidden catches, and the language is small
and simple enough that it will fit in your head. All together this makes
development a lot faster and a lot more enjoyable.
How does Python compare to other high level languages such as Perl or Ruby for KDE development?
Getting a working set of bindings compiled and installed has traditionally
meant downloading and building 3 different pieces of software and making sure
that you've picked a set of versions that are mutually compatible and
compatible with your version of KDE/Qt. This has acted as a deterrent to
anyone wanting to write and distribute Python software that users can easily
install and use. And since there are few KDE Python programs, distributors
have had little incentive to package and distribute the bindings. Catch-22.
Now, that is KDE applications, Qt based applications are a different story.
Phil Thompson tells me that hundreds of commercial licenses have been sold for
the Qt part of the bindings. The next commercial Qt application you see could
very well have Python under the hood.
Why do you think that so few KDE applications have been written with Python, given the maturity of the bindings?
Getting a working set of bindings compiled and installed has traditionally
meant downloading and building 3 different pieces of software and making sure
that you've picked a set of versions that are mutually compatible and
compatible with your version of KDE/Qt. This has acted as a deterrent to
anyone wanting to write and distribute Python software that users can easily
install and use. And since there are few KDE Python programs, distributors
have had little incentive to package and distribute the bindings. Catch-22.
Now, that is KDE applications, Qt based applications are a different story.
Phil Thompson tells me that hundreds of commercial licenses have been sold for
the Qt part of the bindings. The next commercial Qt application you see could
very well have Python under the hood.
Do you hope that one day Python may be the native language for KDE or Qt?
I'd certainly like to see the day when higher level languages are regulary
used for KDE development. Interest in languages other than C++ certainly
seems to be increasing inside the KDE project. So I don't think we will have
to wait long before that day comes. After all the computer industry has
always moved to higher level languages when possible. Look at the use of Java
in business, or even, dare I say, Visual Basic. There is probably more high
level code being written these days than C and C++.
What do you think of the current license change for Qt for windows in the upcoming Qt4? Will this result in python bindings for Qt4 on Windows?
[extra question added by Fab]
Would it be realistic to write the whole of KDE in Python?
Well, you've got the technical problem of how would other languages interface
with KDE objects written in Python, and the fact that some parts of KDE are
speed critical, think GUI drawing and rendering. Further, I think there are
large tracts of KDE that could be written using Python. The KDE Control
Center is a good example. There is really no reason why the whole thing
couldn't be done using Python.
How do you see the Python bindings fitting in with other technologies like Korundum, KJSEmbed and Kommander?
I see Python as an alternative to C++ for application development. Kommander
is directed more towards the rapid development of GUI front ends to shell
programs. KJSEmbed strikes me as being better suited for scripting and macros
inside a host program, than for application development. I have my doubts
about the suitability of Javascript for large programs. Mind you, the Mozilla
people have been doing this for quite some time now. Anyway, there are lots
of places that can use different programming tools. There is room for
everyone.
Lastly, some thanks need to go out to Phil Thompson and Jim Bublitz. The
people who did the hard work of creating the Python bindings in the first
place. Thanks guys!