Please reconsider planned build breakage on new KF deprecations

Friedrich W. H. Kossebau kossebau at kde.org
Thu Aug 19 23:26:36 BST 2021


Am Mittwoch, 18. August 2021, 18:01:36 CEST schrieb Laurent Montel:
> On mercredi 18 août 2021 16:27:29 CEST Friedrich W. H. Kossebau wrote:
> > Hi,
> > 
> > the recent deprecations in KF master around KPluginLoader broke some PIM
> > builds for me, due to KF_DISABLE_DEPRECATED_BEFORE_AND_AT being set to a
> > number only matching the upcoming KF versions, thus immediately changing
> > things when new deprecations come up.
> 
> For me the problem is that we mark as deprecated before porting code.
> Volker methods was better, porting all code to new code (when it’s possible)
> and after mark them as deprecated.
> For the moment we mark method as deprecated and nobody port them.

"Nobody ports them" is not what I see happening across the places.
Actually I see lots of porting, even more with the new young blood around. Of 
course not always immediately and by all contributors. But happening often 
enough that things are moving in good pace in general.
I really think such a statement is overgeneralizing some experience of certain 
times in certain places.

And more, why only the focus on Qt5 and KF5? Why not on Akonadi & PIM 
libraries as well? How comes there is still Akonadi::AgentBase::ObserverV4? ;)

> So using KF_DISABLE_DEPRECATED_BEFORE_AND_AT is good for it to avoiding to
> wait x months before porting them. (as for sure I will need to port it)

My assessment is different here. It is bad, because:

As said before it has chance to turn people with little time away as they have 
to spent time on breakages when not wanting, surely does for me, I could have 
spent time yesterday but did not because things are broken.

It makes PIM look like a place where things are broken and broken again, 
worsening the reputation, making it less attractive for others (who wants to 
work on things that seem to break easily). Just look at the build breakages on 
build.kde.org triggered now. And worse, which sadly are not only restricted on 
PIM applications, but also affects other applications due to the Dependency 
builds breaking on the respective PIM parts.

Do a full rebuild of all PIM repos right now. I just did, and only build a 
subset, but these here just all failed to me (and there would be more which I 
had hacked up to build before though):
* akonadi-contacts 
* akonadi-search
* kidentitymanagement
* pimcommon
* calendarsupport
* incidenceeditor
* libksieve
* kmail 
* kmail-account-wizard

Even worse, those breakages are connected in some people's mind to a single 
person. And by the amount of breakages completely shadowing all the person's 
great efforts all the time in keeping such an important project like KDEPIM 
alive and up-to-date and prepared for the future. They just see things blowing 
up again and again. They do not see all the work to prepare the future (as 
sadly things go unnoticed when going smoothly, but such is life).

I would like to find a way here to keep you happy as before, but also get 
everyone else more happy when contributing to PIM projects.

Are the breakages for everyone making you happy?
How do they help in porting away from deprecations?
Are you still the only doing the porting after all?

So could we find a way where things only fail building for you locally on new 
deprecations, while not breaking the build for everyone else, starting with CI 
and then individual people?

What is your workflow where breaking builds help you to find out what needs 
new deprecated API work?
I assume you can make use of environment flags to inject the information that 
you want builds breaking when hitting usage of deprecated API, right?

A first simple option which comes to mind is to have the compiler flag
    -Werror=deprecated-declarations
injected in some way for you. Thought that would hit any deprecations, not 
just target Qt or KF ones. For the latter, we might need some special cmake 
macros then. I would be willing to work on such, so everyone can have their 
own way.

Because at least for CI, having planned build breakages is a big NoNo. 

While some would say that having "master always green" is a given assumption 
in most developer communities, KDE has something related also codified by 
"Never commit code that doesn't compile"*
https://community.kde.org/Policies/Commit_Policy#Never_commit_code_that_doesn.
27t_compile
And yes, planned build breakage is code that does not compile (under 
circumstances).

Please enable others to contribute as well. Be aware that the current 
situation also pushes away people like me, who e.g. worked hard to turn code 
mosnsters like KDevelop by the time into code without usage of deprecated API 
(at least at the time last year before I shifted my focus away to other things 
in life, because there are too many interesting things :) ).
Do you not want to have such people also in PIM, to share the workload? The 
current situation is not where I would stay, no spare time available for 
dealing with unneeded breakages. I rather would invest into forking perhaps.

Right now things are a bit a self-feeding state:
noobdy but one person ports away from deprecated API, because nobody but one 
person has fun dealing with a project where things randomly break when working 
on something else. That is not the goal here, is it?

Let's create a place where everybody is happy and can do their work-flow, so 
there is win-win.

Cheers
Friedrich




More information about the kde-pim mailing list