SEP
5
2017

Konversation 2.x in 2018: New user interface, Matrix support, mobile version

It's time to talk about exciting new things in store for the Konversation project!

Konversation is KDE's chat application for communities. No matter whether someone is a newcomer seeking community, a seasoned participant in one, or a community administrator: our mission is to bring groups of people together, allow them to delight in each other's company, and support their pursuit of shared interests and goals.

One of the communities we monitor for changes to your needs is our own: KDE. Few things make a Konversation hacker happier than journeying to an event like Akademy in Almería, Spain and seeing our app run on many screens all around.

The KDE community has recently made progress defining what it wants out of a chat solution in the near future. To us, those initial results align very strongly with Konversation's mission and display a lot of overlap with the things it does well. However, they also highlight trends where the current generation of Konversation falls short, e.g. support for persistence across network jumps, mobile device support and better media/file handling.

This evolution in KDE's needs matches what we're seeing in other communities we cater to. Recently we've started a new development effort to try and answer those needs.

Enter Konversation 2.x

Konversation 2.x R&D mockup screenshot
Obligatory tantilizing sneak preview (click to enlarge)

Konversation 2.x will be deserving of the version bump, revamping the user interface and bringing the application to new platforms. Here's a rundown of our goals:

  • A more modern, cleaner user interface, built using Qt Quick and KDE's Kirigami technology
    • Adopting a responsive window layout, supporting more varied desktop use cases and putting us on a path towards becoming a desktop/mobile convergent application
    • Scaling to more groups with an improved tab switcher featuring better-integrated notifications and mentions
    • Redesigned and thoroughly cleaned-up settings, including often-requested per-tab settings
    • Richer theming, including a night mode and a small selection of popular chat text layouts for different needs
  • Improved media/file handling, including image sharing, a per-tab media gallery, and link previews
  • A reduced resource footprint, using less memory and battery power
  • Support for the Matrix protocol
  • Supporting a KDE-wide Global and Modern Text Input initiative, in particular for emoji input
  • Versions for Plasma Mobile and Android
  • Updating Konversation's web presence

Let's briefly expand on a few of those:

Kirigami

KDE's Kirigami user interface technology helps developers make applications that run well on both desktop and mobile form factors. While still a young project, too, it's already being put to good use in projects such as Peruse, Calligra Gemini, Gwenview, and others. When we tried it out Kirigami quickly proved useful to us as well. We've been enjoying a great working relationship with the Kirigami team, with code flowing both ways. Check it out!

Design process

To craft the new user interface, we're collaborating with KDE's Visual Design Group. Within the KDE community, the VDG itself is a driver of new requirements for chat applications (as their collaboration workflows differ substantially from coding contributors). We've been combining our experience listening to many years of user feedback with their design chops, and this has lead to an array of design mockups we've been working from so far. This is just the beginning, with many, many details left to hammer out together - we're really grateful for the help! :)

Matrix

Currently we're focused on bringing more of the new UI online, proving it on top of our robust IRC backend. However, Matrix support will come next. While we have no plans to drop support for IRC, we feel the Matrix protocol has emerged as a credible alternative that retains many of IRC's best qualities while better supporting modern needs (and bridging to IRC). We're excited about what it will let us do and want to become your Matrix client of choice next year!

Work done so far

The screenshot shown above is sort of a functional R&D mockup of where we're headed with the new interface. It runs, it chats - more on how to try it out in a moment - but it's quite incomplete, wonky, and in a state of flux. Here's a few more demonstrations and explorations of what it can do:

Repsonsive window layout
Responsive window layout: Front-and-center vs. small-and-in-a-corner (click for smoother HD/YouTube)

Toggling settings mode
Friction-free switching to and from settings mode (click for smoother HD/YouTube

Overlay context sidebar
Overlay context sidebar: Tab settings and media gallery will go here (click to enlarge)

See a gallery with an additional screenshot of the settings mode.

Trying it out

The work is being carried out on the wip/qtquick branch of konversation.git. It needs Qt 5.9 and the master branch of kirigami.git to build and run, respectively. We also have a Flatpak nightly package soon on the way, pending sorting out some dependency issues.

Be sure to check out this wiki page with build and testing instructions. You'll learn how to retrieve either the sources or the Flatpak, as well as a number of command line arguments that are key when test-driving.

Sneak preview of great neat-ness: It's possible to toggle between the old and new Konversation UIs at any time using the F10 key. This makes dogfooding at this early stage much more palatable!

Joining the fun

We're just starting out to use this workboard on KDE's Phabricator instance to track and coordinate tasks. Subscribe and participate! Phabricator is also the platform of choice to submit code contributions.

As noted above, Konversation relies on Kirigami and the VDG. Both projects welcome new contributors. Helping them out helps Konversation!

To chat with us, you can stop by the #konversation and #kde-vdg channels on freenode (using IRC or the Matrix bridge). Hop on and introduce yourself!

Side note: The Kirigami team plans to show up in force at the KDE Randa meeting this fall to hack on things the Konversation team is very much interested in, including expanding support for keyboard navigation in Kirigami UI. Check out the Randa fundraising campaign which e.g. enables KDE to bring more devs along, it's really appreciated!

Comments

Hi,
thank you a lot for the work on Konversation. The new GUI looks great. However, I am a bit concerned about the space utilization in the actual chat area. Will it be possible to have a condensed chat representation (like in Konversation 1.x, i.e., a one line per message representation)? I really like to have a good overview in the chats, especially since IRC chats tend to be crowded and old message may be soon moved out of the visible area with the fancy multi line representation (user + date above text) shown above.
Thus, it would be great to have an option for a more condensed / classical representation.


By Till at Tue, 09/05/2017 - 09:58

Yep, a compact/classic layout option will be available for sure.

That said - I want to suggest letting the new layout (which is likely to he tweaked further still) grow on you. In my own experience so far, the combination of grouping consecutive messages by the same author with less repeated information and hanging indent makes backlog much faster to skim, especially on channels that have bots talking. I understand the impulse to maximize vertical space use, but better visual organization of information can be a worthwhile trade-off. :)

Edit: Oh! Make sure you noticed the grouping - the nick isn't repeated for every message in there! :)


By eike hein at Tue, 09/05/2017 - 10:31

Great to hear that and "Ahh ... that's why there are times behind the messages as well :-P"

Awesome work. Looks impressively modern :-)


By Till at Tue, 09/05/2017 - 13:41

You mention persistence across network jumps (I assume that means disconnections from the network, e.g. when traveling by train) as something to improve, but then don't touch on it again. Is a konvi UI which can talk to a Quassel core something that could work? Or is Matrix then the place where you'd like persistence to happen?


By Adriaan de Groot at Tue, 09/05/2017 - 10:57

It's something that "could work", but it's not very appealing for a number of reasons. The comm protocol between Quassel's server and client is proprietary and implementation-defined - it's been around for a number of years, but hasn't spread for that reason and hasn't moved the needle on revitalizing the IRC ecosystem as a whole.

The equivalent IRCv3 spec work (e.g. server-time, message batches and the history batch) are more relevant there but largely still pending server implementations - well, server-time is implemented in znc (which KDE runs an instance of) and we support it. Ideally we'd like network servers to implement that stuff directly (e.g. freenode), but it's more likely znc will. We'll expand our support for it as well.

Matrix, where persistence already works and which bridges to IRC quite well, is possibly more viable by sheer momentum. From our POV implementing support for Matrix or Quassel is similar work, but the former explicitly encourages implementation and offers a much bigger return for the investment.


By eike hein at Tue, 09/05/2017 - 11:14

Persistence is indeed pretty important, it is why I moved from Konversation to Quassel. I can't always be online and need to have the same logs on my desktop and laptop.... If Matrix or a similar tech could fulfill that need I'd be happy, too, of course. As long as it is easy to run/host, Quassel has been pretty neath in that regard.

In either case, thanks for the work, this looks very good!


By jospoortvliet at Wed, 09/06/2017 - 12:28

Is there any news about QtWidgets-like style for QtQuick? I ask that because all these new projects (Koversations 2, Kube, Discover) are really exciting, but they all look very alien for the KDE desktop (IMHO). I use Konversations, and I really wish it evolves, but I'll miss its interface, unless the new interface can have a QtWidgets-like style.


By Paulo at Tue, 09/05/2017 - 12:49

We use Kirigami.Theme.* to get system colors, and UI elements such as buttons will be desktop-styled using the Qt Quick Controls 2 desktop theme that will ship with KDE Frameworks in the future (we'll depend on it and set it as default).


By eike hein at Tue, 09/05/2017 - 12:53

I think a big change like this should be treated in a completely new app, like Koko does with Gwenview and Kube/KMail.


By Domino at Tue, 09/05/2017 - 18:20

Having a native Matrix client will be quite nice. I'll have to start building konvi from source again ;)


By rrix at Wed, 09/06/2017 - 23:23

Pages