I'm out

Alexander Neundorf neundorf at kde.org
Thu Aug 22 22:38:49 UTC 2013


On Thursday 22 August 2013, Kevin Ottens wrote:
> Hello,
> 
> On Thursday 22 August 2013 09:14:16 Stephen Kelly wrote:
> > Mark wrote:
> > > On Wed, Aug 21, 2013 at 10:20 PM, Alexander Neundorf <neundorf at kde.org>
> > > 
> > > wrote:
> > >> until recently I thought I was still the maintainer of the buildsystem
> > >> for KDE4 and also KF5, but I think the consensus on this list here is
> > >> that Stephen has taken over this role.
> > >> So I'll let him do that, and stay out of the way.
> > > 
> > > Hi Alexander,
> > > 
> > > I'm sorry to hear that! I hope you keep sticking around in KDE :)
> > > As for the issues, why don't you and Stephen just find yourself a
> > > quiet place on IRC and talk about it?
> > 
> > I agree with everything Mark wrote. I hope you stick around and I think a
> > chat on IRC would be useful.
> 
> Likewise, it's been a while that I try to push you two to discuss more. I

I don't like blaming people, but I don't think I behaved that badly...

I didn't simply commit stuff which would go against what had been already 
committed, instead in such cases I always started a discussion, when I thought 
I would step on somebody else's toes otherwise.
Which of course was then often an "against something" discussion, since the 
code had already been committed (without prior discussion).

I am still surprised how my previous maintainer role has been ignored here on 
the list. I'm not used to that from KDE.
My impression is that Stephen just commits and everything is fine, and if I 
try to start a discussion, in the hope to come to an agreement with Stephen, I 
suddenly have to defend my position e.g. against you, although you are not 
even working on the buildsystem. This doesn't feel like I still got trust 
here.
I know I was somewhat late to join here early last year, since I thought due 
to the missing export-depending-targets-into-multiple-export-sets feature in 
cmake not much can be already done in kdelibs on the buildsystem, but I was 
wrong with that.
Since then I was continously (minus vacations and business trips) working for 
KDE frameworks (which sometimes also meant working on cmake or reviewing 
patches for Qt). And which also means just a few hours in the evenings.

As I see it, there were not many things really missing in cmake, in order to 
be ready for KF5. This was a working automoc, a few modules, and the ability 
to export dependent targets from one project into multiple separate export 
sets. These were features for which we needed a new cmake version, and which 
IMO justify annoying developers with upgrades. I added them to cmake. Since 
then, probably a year ago or so, we could have had a stable buildsystem.

Much of the new target features, which make working with exporting/importing 
targets much nicer, were not required to make KF5 possible. They are really 
nice and elegant, no doubt, but IMO they did not justify to require developers 
to update cmake, build cmake from git master, etc.
It could have been great e.g. if Stephen would have discussed with me 
beforehand what he plans to do with the targets in cmake, and maybe I could 
have integrated it in KDE, so he would have gotten feedback. It didn't work 
that way, partly also because I do not have that much time to follow Stephens 
speed. I wasn't even able to follow all the discussions on cmake-devel between 
Stephen and Brad on these topics. If I had done that, this would have consumed 
all of my time.

The problems we had with building Qt for several weeks also didn't help.


You know, my main goal here was not to tweak our buildsystem so that the KDE 
frameworks developers can progress as fast as possible.
What we do in KDE with cmake serves as example for others how cmake can/should 
be used, and I care about that. From here many developers carry it into other 
projects or their working places, and other developers look what we are doing.
So my main goal was to set a good example how things should be done with CMake 
in general.

I had big plans for extra-cmake-modules.
People complain that the result from find_package() is not standardized.
Results are ALL_UPPER_CASE, or ExactCase, or _LIBS or _LIBRARIES.
In kdelibs4 we mostly used ALL_UPPER_CASE, because this seemed to me what the 
majority of Find-modules coming with cmake in 2007, did, and this is how I 
interpreted readme.txt in cmake, where unfortunately the example was named 
"FindXXX.cmake", so ALL_UPPER_CASE and ExactCase look identical.
Anyway, Stephen and others convinced me that ExactCase is the way to go, so I 
made that clear in the readme.txt.

So my plan was to provide with extra-cmake-modules a collection of Find-
modules which all nicely follow that standard, so that users can simply do

find_package(Foo)
and use ${Foo_LIBRARIES} and ${Foo_INCLUDE_DIRS}.
So that there will be consistency.

Using the standard Foo_LIBRARIES was rejected here.

I proposed Foo_LIBRARY_TARGETS  here, which would still have the advantage of 
a standard naming, and some added guarantees.
It was also rejected.

So now we'll use names like KF5::KCoreAddons directly.

For me, my hope for consistency in the results of find_package() is gone with 
this.
On the internet (people do google for Find-modules) there are now a whole 
bunch of find-modules which use ${ALL_UPPER_CASE_LIBRARIES}, there is a whole 
bunch of find-module and Config-files which use ${ExactCase_LIBRARIES}, and 
there will be a whole bunch of Config-files which use target names, without a 
simple direct rule how those target names relate to the package name 
(KCoreAddons -> KF5::KCoreAddons, while close, still requires looking at 
documentation, others may not use a namespace, how should the namespace relate 
to the package name, etc. ?)

So what I now see in the future is a mixture of Find-modules and Config files 
providing their results in different ways, instead of a bunch of old Find-
modules still providing their results mostly in ${UPPERCASE_LIBRARIES}, while 
more or less all the new stuff providing their results in 
${ExactCase_LIBRARIES}.
May sound trivial, but it's a big thing for me, many users have complained 
about that, and I understand that.

If you think I'm somehow against using imported targets, you're wrong. I took 
part in the initial design discussion in 2007, I added imported targets to 
FindQt4.cmake 3 or 4 years ago or so, and also to kdelibs. Maybe most of you 
didn't notice that, and that's good; I tried to do it in a way that this 
didn't cause any disruption, nor that developers were forced to learn about 
that (if they didn't want to).


Another nice thing of a standard variable would have been that those packages 
could be made more easy available to non-cmake buildsystems.
Two years ago after Randa I added an option --find-package JPEG to cmake, so 
you can call cmake from the command line, it will search the given package, 
and print the link or compile arguments to stdout, so they can simply be used 
in a hand-written makefile or with autoconf etc.
This turned out to work not really well, due to the non-conformity of the 
results of find_package().
I was hoping that now with KDE frameworks we would produce a relatively big 
number of Config-files which would all set the standard _LIBRARIES and 
_INCLUDE_DIRS variables, and that by restricting the --find-package mode of 
cmake to work only on Config-files, I could get much better results, so that 
this would actually get real-world usable. I didn't start to work on this yet, 
but it seems reasonable to me. Now, if we simply use the imported targets 
directly, I can forget about that too.


I was hoping to attract non-KDE developers to contribute to extra-cmake-
modules. But without a release, this does not happen.
There are concerns like what to do if you want to use only one of the files 
coming with e-c-m, or only if you have a special version of cmake, so that in 
those case simply adding a module directory to CMAKE_MODULE_PATH wouldn't 
suffice. e-c-m can handle all that, and it is documented. But these are, it 
seems, issues which are of no concern here.
Also I'd like to require not always the latest version of cmake in e-c-m, but 
with that again I have bad chances here.
There are other places, and if we are aiming at users of KDE frameworks 
outside of KDE and maybe outside of FLOSS, where such things are problematic. 
At work, earlier this year, I increased the required cmake version of some 
small project to... was it 2.8.9, or 2.8.6 ? I don't remember exactly. I had 
to revert that after a few weeks back down to 2.8 or even 2.6.4 I think, 
because on some systems there simply was no newer cmake available, and users 
should not install their own packages on these systems. Until recently we had 
to support customers running RHEL4. I don't think I'm alone with that.
IMO e-c-m won't be very attractive to 3rd party developers if we continously 
require the latest cmake or even rc's.


I don't think it makes sense to have two maintainers which go into 
perpendicular directions (note that I don't say opposite directions).
My feeling is that Stephen has more backing here. He also seems to have much 
more time available.

Alex


More information about the Kde-frameworks-devel mailing list