Non-C++ Apps in KDE Main Modules (Was: Guidance in KDE Admin)

Jim Bublitz jbublitz at nwinternet.com
Sun Mar 30 20:29:54 CEST 2008


On Sunday 30 March 2008 03:44, Alexander Dymo wrote:
> Once again, we'd better concentrate on writing great software. Reusing
> the code, using existing free software as much as possible is one of
> the ways to write great software. Why care about dependencies then?
> Let's let people making distros think about that.

Simon Edwards pointed me to this discussion - Simon maintains the KDE svn 
version of PyKDE and uic for PyKDE, I maintain the tarball version that's 
available at riverbankcomputing.com and write the tool that generates PyKDE 
sip files from the KDE h files. Phil Thompson is the author of PyQt and sip, 
which generates the C++ bindings from sip files, and is the runtime that 
allows the bindings to function. I've been doing PyKDE since late KDE2, Simon 
since late KDE3 - Phil has done sip/PyQt and the original PyKDE since early 
KDE1 at least. Most of the large distros and FreeBSD (and sometimes Solaris) 
have packagers.

I'm the guy who doesn't keep PyKDE up-to-date with KDE. Simon now has the 
tools to generate new PyKDE versions, so that should be less of a problem. If 
KDE maintains strict binary compatibility, that isn't much of a problem at 
all, because PyKDE lagging KDE simply means new classes/methods aren't picked 
up - previous apps should still work. However, one missing symbol in kdelibs 
(it happens) will break part or all of PyKDE if it's in one of the libs PyKDE 
binds.

PyKDE probably has bugs. I just fixed KCoreConfigSkeletion, which is broken in 
the current PyKDE release. PyKDE bugs get fixed either when I write an app 
using it and find a bug, or, as in the case of KCoreConfigSkeleton, someone 
else finds it. I'd love to have unit testing for all of PyKDE (the C++ test 
code isn't usable for PyKDE), but PyKDE binds about 600 classes and 10k 
methods. So the person who suggested that more apps using PyKDE would make it 
better is essentially correct. Some of the nicest improvements have been 
user-supplied.

I'm agnostic about whether KDE should have a core Python dependency. I agree 
with Alexander's earlier post about Ruby and Python as application languages 
- everything I write - PyKDE generation tools, my business accounting 
software, other stuff - is in Python. There's a great Python/PyQt/PyKDE IDE 
done by Detlev Offenbach called eric4, which includes a debugger that never 
crashes - if I hated Python, that would be enough motivation for me to use 
it. 

However I wouldn't overlook the "scripting" part of Python either. While PyKDE 
is a lot of overhead at runtime for the first instance (the 8MB cited sounds 
right, or maybe a little low) for a lot of people , the convenience or speed 
of development outweighs that. One of the most helpful things KDE could do to 
support other languages (without acquiring dependencies) would be to make 
plugins and similar things more easily writeable in other languages - for 
example, instead of requiring a specific .so lib, allow an .so lib that knows 
how to load an arbitrary Python script along with the interpreter (ie - pass 
the script name rather than looking for a specifically named .so lib). KDE3  
Panel applets and extensions allowed that. You can't create .so libs from 
Python.

I haven't looked at kross much yet, and maybe that will solve some of the 
problems, but some people would like to write plasmoids or ioslaves or other 
plugins in languages other than C++ and not have to write a C++ lib to use 
them. There were kate plugins using PyKDE for KDE3 and the same author may do 
them for KDE4.

As far as porting to OLPC or other devices, I don't have much to contribute 
there, except to note that PyQt was available quite a while ago for the Sharp 
Zaurus (I believe Sharp - or someone - paid for the port). 

I'm only subscribed here temporarily, so feel free to email me if I don't 
respond to something.

Jim


More information about the release-team mailing list