next level of freedesktop.org

George Staikos staikos at kde.org
Thu Jul 17 23:03:39 EEST 2003


As Havoc said, this is something he would rather deal with later.  However I 
want to put forth this bit of information from the point of view of a 
developer who will have to use freedesktop packages.  Just consider this for 
the future when the time comes to really answer these questions.

On Thursday 17 July 2003 13:45, Mike Hearn wrote:
> >    The g has no stigma problems.  The problem is having 3-4 different
> > implementations of each type of container linked into apps, and even
> > worse, having apps that use all those containers internally.
>
> Well, I can think of only 3 - Qt, STL and glib (assuming we stay in the
> bounds of C and C++). I expect there are more, but those are the most
> popular.

   There are very many more, as some libraries use their own toolkits 
internally already.  I touch code in all areas of KDE, and I wrote some of 
the code that had to interface with third party libraries using their 
toolkits (or containers or whatever you want to call them - it doesn't change 
what they are).  I think I am qualified to speak on this topic as someone who 
will be affected by it as well.

> > The common
> > libraries that use it, should use it internally and provide C primitives
> > in the public interface.  Then each desktop can wrap this in their choice
> > of toolkit if desired.  It's not fair to make all desktops use one
> > desktop's toolkit.
>
> glib is no a toolkit than STL is a toolkit. I can't think of a
> compelling reason why exposing a GList in a function prototype would
> cause difficulty, no more than a C++ lib exposing a std::string would
> cause difficulty. At some point if you don't want the API exposed, it
> must be wrapped into another one, the exact underlying API would to me
> make little difference.

   I don't think -anyone- wants to have something like STL exposed in the API.  
In any case.  Writing O(n) code to convert GList->{QPtrList,std::,...} etc 
would be:
a) unfairly slow
b) annoying because other developers would have to learn all the details of 
GLib
c) more time consuming to implement

   So you say, big deal, use GLib whenever you use data types coming from 
these libraries.  Well first, the idea is to slowly grow a common base, 
correct?  So slowly more and more of *.desktop != Gnome has to convert their 
code to GLib.  Well, those desktops explicitly made a decision to -not- use 
GLib.  You are forcing them to do something they did not want to do to begin 
with.  Oh, or they could suffer the consequences of longer development time, 
slower code, more messy code, bigger binaries, and a requirement to learn a 
new container set.

   "Well, this is all just FUD/suspicion then!"  KDE has experience with this.  
It is painful!  We had a long debate because a major module in KDE decided 
that they wanted to use GLib, and not only their internal copy, but move to 
an external dependency.  My claim: "You do not maintain your code, you don't 
even need GLib because you already use STL and Qt, and we don't want to have 
to maintain this."  Their claim: "We will fix our bugs and it's our code."  
Now, do you want a link to the bugzilla reports to see what has happened to 
the most unstable part of KDE?  I am not pleased that I have spent so much 
time trying to understand and fix this stuff, but no-one else is willing to 
touch it.  It is for this reason that we have coding standards, and GLib (and 
STL) don't fit in.  The last thing we need is to tell all the volunteer 
programmers (yes KDE has only a few programmers who are paid part-time to 
work on KDE, myself not included) that the project they agreed with and 
signed up for will now require them to learn and work with another entire 
container set.

   Note: It took 10,000 lines of C++ to encapsulate OpenSSL and get it into a 
usable form for KDE, hiding away the grotesque API.  That's really sad, and 
what's worse, they keep breaking BC anyways.

   The goal is to get all desktops to agree to this, and as Havoc already 
knows, glib is a huge sticking point.  You can't force the desktop groups to 
accept this.  Unless you intend to develop, maintain, and support the code 
for all these platforms, under their deadlines, coding standards, financial 
arrangements, and quality control standards, you have to find a real common 
denominator.  I think you will find that a primitive C interface is the only 
one.

-- 
George Staikos
KDE Developer				http://www.kde.org/
Staikos Computing Services Inc.		http://www.staikos.net/




More information about the xdg mailing list