Make Jabber support optional; enable Qt6/KF6 build
TL;DR Porting Jabber support to Qt6 seems hard, might not even work. Proposing to disabling it to unblock move to Qt6/KF6
The custom (unmaintained) fork of libiris is something that ideally never happened. And there are some usages of QGenericArgument that might be hard to port to Qt6 and QMetaMethodArgument on a first look, given the latter has undocumented and less public API and seems not designed for 3rd-party fiddlings. So this seems dead-end with Qt6.
I had spent a few evenings looking at porting from libiris to maintained qxmpp (used by Kaidan, the lib already at least in the buildsystem supports Qt6). But so far had not gotten far, as the API designs are bit different, and qxmpp might even first need more API additions. E.g. with the more detailed libiris XMPP::Jid
type, where qxmpp just uses a plain QString
. Or support for custom message types as used by ksirk, where qxmpp just provides fixed predefined enums:
XMPP::Message message(jid);
message.setType("ksirkgame");
Big challenge yet to overcome also is to actually be able to test this. I do not have any XMPP account anywhere, trying to quickly set up a local server using prosody failed due to lack of simple docs.
Furthermore, the quality of the related support code seen was not very convincing:
- lots of disabled code blocks which hint to unfinished work
- comments of the last work in https://phabricator.kde.org/D7044 are like: " P.P.S.: the Jabber stuff was an interesting experiment but I don't know if anybody ever used it for real games… So, should we do large efforts to maintain it ?"
So to be blocked by the questionable Jabber support, I propose to just make it a build option now, which for Qt6 is disabled by default.
Perhaps we could also go radical and just completely remove the Jabber support code? In that linked review request above the following statement 6 years later still has the "someone" waiting for:
If we can't do no.5 in a reasonable time, Jabber will be disabled (non visible from the GUI) until again someone (e.g. new group of students) decide to experiment with XMPP gameplay.