glib in kdesupport: yes or no?

George Staikos staikos at kde.org
Mon Mar 10 18:22:10 GMT 2003


On Monday 10 March 2003 00:50, Havoc Pennington wrote:
> On Sun, Mar 09, 2003 at 08:58:14PM -0500, George Staikos wrote:
> >   1) Communication, here in The Internet Age, gets an F.  Most KDE
> > developers have never even heard about DBUS, at least not until this past
> > week.  How do you expect people to accept such things if they are left
> > out of it until the last minute?  These hundreds of developers are being
> > asked to change the foundation of the core of their system to code not
> > written by them, not designed by them.
>
> Keep in mind a couple of things, 1) D-BUS is maybe 30% done if that
> and still open to large changes 2) there were more KDE developers
> initially involved than GNOME developers, quite a few people (a
> dozen-ish I think?).  The whole thing was more or less Matthias
> Ettrich's idea as I understand it, though he hasn't had a lot of time
> to work on it.

    Are you open to a complete redesign of D-BUS if KDE users decide that it 
is not usable in its current form?  The design issue is often more important 
than the implementaion for something like this.  Now that KDE developers have 
access to D-BUS lists and know that it even exists, perhaps we will find time 
to contribute in a more open fashion.

    You have to be very careful about only taking a few developers in a 
non-open fashion for such critical decisions at this point in the life of KDE 
for several reasons.  First and foremost, there are too many developers who 
contribute very large portions of their time to KDE.  It has grown by leaps 
and bounds since 2.0 days even.  If you want to change a critical component 
of KDE one day, you need to get feedback from the project as a whole.  
Second, you cannot rely on a few developers always doing their duty in a 
timely fashion.  We don't get paid to do this, and we can disappear for weeks 
on end.  The points of failure have to be taken into account.

> I've been relying on the KDE developers involved to tell KDE about
> D-BUS, rather than doing it myself; I have my hands full selling it to
> GNOME as some may have noticed if you lurk on our flamewars. ;-) But
> I'd be happy to do a 'briefing' for this list.

   If only I had enough time for the KDE lists alone...

> I'd encourage everyone to get involved and to look at the
> design/implementation. The list archives contain all discussion that's
> occurred and have always been public. Also please feel welcome on
> #dbus on freenode. We'd still be eager to make *any* changes that will
> be desired for KDE adoption, though I admit I'd rather hear about them
> in the next few months than next year, because I do want to start
> using D-BUS in systemwide mode soon (that is my excuse for hacking on
> it).

   As would I.  Please, KDE developers, join the DBUS discussion and 
development cycle.  I just don't have time to contribute much personally, 
other than the occasional comment.  I know some of you will have much more 
feedback about this though.

> An important question for KDE is, *if* you were going to use it in
> addition to or instead of or as a backend for DCOP, how would that
> migration work, and how would the code be set up.  e.g. would you a)
> swap out the DCOP backend, replacing libICE; b) introduce a new API
> enough like DCOP to be easy to port to, but different from DCOP; c)
> keep both DCOP and D-BUS as separate things; or d) some combination of
> those or something else. We can design D-BUS to make each of these
> paths easier or harder.

   I spoke with a few KDE developers about this too.  I suspect we will have 
to make a bridge between DCOP and D-BUS, keeping DCOP around for backward 
compatibility.  If D-BUS lives up to expectations, hopefully it would become 
the new internal API and mechanism for KDE with DCOP apps being bridged over.  
Having two separate, unintegrated RPC mechanisms is a bit silly.  This is 
IMHO of course.  We have to make sure that D-BUS is at least as easy to use 
for the developer as DCOP is.  That means the API must easily support calls 
and signals the way we have them now.  Some of this will be our own 
responsibility of course.

> My hope is that D-BUS will turn out nice enough technically that
> people will really want to use it.

   As do I.  I don't however believe in change for the sake of change.  It 
really needs to provide tangible benefit to KDE.  One thing we really could 
use is better secure, remote support.  DCOP is rather lacking in that area 
right now.  Unfortunately DCOP is really not network enabled the way the rest 
of KDE is.

> >    1b) This "system" is a system developed by hundreds of individuals,
> > 99% in their spare time to suit their own purposes.  There is no
> > governing body, no pay-cheque.  No-one can impose changes or regulations
> > on these people.  Even if you try, these people will surely revolt and
> > relocate [fork] the project. This is no small proposal.
>
> But the nice part is that I'm not proposing one huge thing. All I'm
> doing is presenting a case for a particular goal (interoperability),
> and pointing out that this can be achieved via a lot of small,
> independently valuable efforts. If we solve the menu system but not
> MIME types, menu system work is still valuable. If we do D-BUS but
> can't figure out DND types, D-BUS is still valuable.

   They all add up to a big change in direction, and I think in many cases the 
real benefits of one change are not realised until other changes are also 
made.

> I think the answer there is just to start using pkg-config to detect a
> dependency at the same time that you're adding the dependency (or
> bumping the version of the dependency you require) for some other
> reason anyway. For example if you suddenly require libxml version
> X.Y.Z and it happens to include a .pc file, suddenly it's no extra
> burden to require the version with the .pc file.
>
> Similarly pkg-config was introduced with GTK 2, when apps had to
> require a newer GTK anyhow.

   That is probably the best approach.   More dependencies still do hurt 
though.  From what we've seen over the past week, we may not have a choice 
about pkg-config anyways.  (regarding glib, on the other hand, I believe we 
still have an easy choice there)

> >    3) Control.  When the desktop begins to rely on external libraries,
> > the developers start to lose control over the system.  We have severe
> > problems with this already.  Example: OpenSSL - breaks binary
> > compatibility every second release, and source compatibility regularly as
> > well.  We are at the whim of the people controlling the common elements. 
> > Conversely, we don't want everyone who uses the libraries with their
> > fingers all over it.  Quite frankly I've seen more bad code than I have
> > good code.  (I am guilty of some of that bad code too, of course.) 
> > Exactly how is this supposed to be administrated, especially considering
> > that KDE - arguably the largest user of this technology if adopted - has
> > no real budget or steady developers.  Even if
>
> GNOME of course has the same issue. FWIW, I think GNOME and KDE both
> have much higher standards and stricter policies than most projects.
> We simply take the union of those policies, pick the strictest rules
> where there's overlap, and use that policy.
>
> There's certainly a level of trust required here, but it doesn't seem
> impossible to achieve.

   I think it might be more difficult than you think.  I will be surprised if 
there are many libraries at all that both projects agree upon, for instance.  
Perhaps libxml (already), pkg-config (for KDE 3.2).  We almost always make 
external libraries optional anyways.  This is what I am requesting for glib 
also.  I don't see why glib should be required because a KDE required 
component has decided to require it, while other KDE components have gone to 
great lengths to make their components optional.  What would happen with the 
"freedesktop" packages?  Would they become required components to build 
KDE/Gnome/other desktop?  Once there is a required component like this, I 
think KDE needs serious control of the direction it heads in.  Of course, so 
do the other desktops.  I think it is for this reason that KDE will never 
share a "VFS" with any other desktop unless the other desktop adopts KIO.

> >    4) Containment.  One of the most annoying things about installing
> > software is having to search all over for dependent packages. 
>
> GNOME had a large discussion about this before moving to our current
> many-small-packages setup. Basically it turned out to be a non-issue
> because we have tools (jhbuild, garnome) that automate everything. So
> it's easier now with all the small packages than it was before with 10
> or so compiled manually.
>
> However, I don't want to rely on convincing anyone of that, so a
> freedesktop.tar.gz is totally fine with me. In fact I made a
> gtk-and-all-dependencies tarball once, and did some pkg-config work to
> support it (so you can build the whole tarball without installing any
> of it).

   I definitely prefer this.  Especially from a developer point of view, but 
also as a user.

> >    5) Wrappers.  In the end, someone will be using wrappers.  I object to
> > having to obsolete existing and working C++ code to use C code simply
> > because that's the lowest common denominator.  KDE is fundamentally a C++
> > desktop and as such we want to use the power of C++.  Compiling C code
> > with a C++ compiler just gives us the inefficiencies of the C++ compiler
> > of the day, with the loss of power that was available.  Are the other
> > desktops prepared to accept C++ as a core requirement, and use C wrappers
> > to the C++ code?  Or is KDE to be the one to bear the burden of wrapping
> > C code with C++ to fit the development model?  Will we even have to use
> > C# backend code at some point?
>
> IMO the shared implementation that's needed is small enough that this
> isn't a huge issue. It's only a big problem for a couple things
> (notably vfs). But, fwiw, GNOME would probably be willing to depend on
> C++ (already does really),

    I think this remains to be seen.  We need to see some components mature.  
I don't know of too many projects that end up with less code and fewer 
interfaces than originally predicted.

> and no, I don't think we could add C#.

    Phew :)  

> >    Standardization and sharing technology are noble goals indeed.  I
> > do infact support this.  I do not support the means to this end
> > right now.  I need answers, procedure and compromise, and I think
> > the rest of the desktop developers need this as well; KDE, Gnome,
> > XPDE, and more.
>
> It's a matter of small steps. We don't have to decide on huge
> intractable goals - doing each individual thing, as we have interested
> developers or opportunities, will move us in the right direction.
> Discussing the big picture is still valuable of course.

  I think discussing the big picture is critical.  Complex projects need to 
have a focus and a goal, even if it is far ahead in the future and done in 
baby steps.  Taking many baby steps blindly (with no direction) is perhaps a 
scary situation in that there is no idea of where we will end up.  We need to 
know why we are taking these steps in the big picture of things.  If there is 
no big picture, there are probably better places we can spend our effort.  
That would certainly not help your goals of choice vs fragmentation.

> D-BUS is pretty much opportunistic for example; we had two developers
> (myself and Anders) that found an excuse to spend paid work time on
> it, so we are taking advantage of that and trying to get it done while
> we can. If we can't get broad acceptance, fine, we both needed to
> write it for work reasons anyway - but if it's more broadly useful,
> that will be awesome. May as well take advantage of the work.

    Of course!  Great example!  The learning experience is worth the work 
alone.

-- 

George Staikos





More information about the kde-core-devel mailing list