The road to KDE Connect 2.0

KDE Connect was designed 10 years ago (!) with Android smartphones as one of our first supported platforms. Because of that, when designing the KDE Connect protocol we had to work around many technical limitations that Android had back in its infancy.

This year I will be working on a project named “KDE Connect discovery and transport protocol improvements” that received a grant from the NLnet foundation as part of the NGI Assure fund. This grant will allow me to work full time in KDE Connect, with the goal of updating the protocol and apps to modern standards.

Below are the 3 main areas that will improve thanks to this and become KDE Connect 2.0 (even though some changes will show up sooner, because we release early, release often).

Reliability

The strength of KDE Connect (compared to some of the non-free alternatives that popped up in these last 10 years) is that KDE Connect only uses your local network for communication and doesn’t need intermediary servers in “the cloud“. This adds a challenge: devices running KDE Connect have to discover each other in the network before they can talk to each other.

Discovery is possible in the current protocol using UDP broadcasts, but the state of the art nowadays is to use multicast DNS (mDNS) instead, which is more reliable and less often blocked by the network configuration. We wanted (and tried) to adopt mDNS for a while, but it was a a bigger endeavour than what we could tackle.

By focussing full time on this, my goal is to implement an mDNS backend for KDE Connect on all supported platforms (Linux, Windows, MacOS, Android and iOS) before fall this year. Wish me luck!

Security

Before Android 5, only TLSv1 and a limited set of cipher suites could be used. We always try to stay compatible with old devices and to fight the programmed obsolescence that plagues modern technology, but that meant keeping the KDE Connect protocol compatible with insecure encryption protocols.

Starting with KDE Connect v1.22 for Android, we now require Android 5 or later so we can drop compatibility with insecure encryption in all the KDE Connect implementations (and not only Android). In addition to that, we are reviewing and updating the dependencies we bundle as part of the app to make sure we have the latest security patches.

Later this year, and also thanks to NLnet, we will get a security audit by Radically Open Security. This will be the second time KDE Connect is audited, after the openSUSE security team did so in 2020.

Accessibility

We recently adopted Material 3 in the Android app (thanks Dmitry Yudin for doing most of the work!) and KDE as a whole is getting ready to migrate our desktop apps to Qt6. These times are a perfect opportunity to review the accessibility of our user interfaces, and for that NLnet is helping us get an accessibility audit by the HAN University also later this year.

All in all, exciting times for the KDE Connect project! Stay tuned for future updates :)

KDE Connect Sprint 2019 in Nuremberg

In case you don’t know yet, KDE sponsors developer gatherings around the world, “sprints”, to hack for a few days on a specific topic. This summer, for the second time ever, we organized one for KDE Connect!

IMG_20190720_130320
The hack room

This time, the people from SUSE hosted us at their offices in the beautiful city of Nuremberg, Germany, together with two other KDE sprints that all happened at the same time! We called it ~The Nuremberg Megasprint~.

IMG_20190720_155826
SUSE’s cool museum room

There we discussed and hacked on many things, and probably Simon’s series of blogposts cover that better than I could do. However, if I can pick a single thing to highlight from the sprint, it is that I had the chance to meet in person with my Google Summer of Code mentee, Inoki.

KDE Connect itself began as a GSoC project the year 2013, and since then it accumulates the work of 5 different GSoC students, among many other developers, translators, designers… However, this was the first time I met a student I was mentoring in person! ❤️

I want to thank KDE for sponsoring the sprint, and every person who has made a donation to KDE for making it possible. Thank you!

KDE Connect 1.0 is here!

Today we are officially publishing the first stable release of KDE Connect. Hooray! This version is the most solid yet feature-packed version we ever released. It’s been in development for a year now and it took a lot of hard work, we hope you like it!

New features

  • Trigger custom commands from your phone

Pre-configure commands  in the KDE Connect desktop settings so you can trigger them from your phone. Use it to extend KDE Connect’s functionality to suit your needs!

Android screenshot with list of commands

  • Reply to SMS messages from your desktop

Probably the most awaited feature ever! Now when you receive a text message notification on the desktop, a ‘Reply’ button will allow you to text back without having to use your phone at all. Note you will need the version 1.4 of the Android app for this to work, already available, as we had to ask for a new permission for it to work.

  • Receive desktop notifications on your phone

Contributed by Holger Kaelberer, this is the counterpart of the phone-to-desktop notification sync we already had. It might be a bit spammy sometimes, so we decided to ship it disabled by default. Make sure you enable it both in the Android app and the System Settings module if you are interested in this feature. From the plugin settings you can choose which notifications you want to forward to your phone and which not.

  • TLS encryption

Thanks to the Google Summer of Code project of Vineet Garg, KDE Connect now uses TLS sockets instead of RSA private-key encryption. This is not only safer against replay and man-in-the-middle attacks, but also faster and less battery-consuming to compute on your devices. Like SSH, we do trust-on-first-use (or TOFU, which sounds funnier) of the device certificate, and we have added a command line option to allow you to check the certificate fingerprints match on both ends.

Android screenshot with the 'Encryption info' dialog

How to update?

If your favorite Linux distribution doesn’t release an update for KDE Connect 1.0 soon, please contact the distro packagers and let them know you want it! If you are familiar with building software from sources and can’t wait for your distro to package it, you can always build KDE Connect 1.0 from the sources available on download.kde.org.

While the Android app is backwards compatible with desktops running old versions of KDE Conect, the just released desktop version requires you to use the version 1.0 or newer of the Android app. Since we have seen that Android updates reach final users much faster than their desktop counterparts, this shouldn’t impact your ability to use KDE Connect. Just make sure you are using a recent version from F-Droid or the Play Store.

Update 20/09/16: This is no longer the latest version of KDE Connect. If you are looking for the sources to download, make sure to get the latest ones from the KDE downloads site.

KDE Connect 2nd anniversary and Beta program

This week two years ago, we released the first version of KDE Connect. Since then, more than 50.000 people have installed the Android app, more than 60 people have contributed code patches (even high school students), and it has been translated to 26 languages! That’s awesome! Thank you all! \o/

KDE Connect team at Randa
David Edmundson, Albert Vaca and Aleix Pol at the Randa Sprint

This week, as part of the Randa 2015 sprint (still accepting donations) we are about to finish the next release of KDE Connect for Plasma 5 and Android. The Android app finally got a new and nice-looking design using Material. Check it out:

Screenshot  Screenshot

Now, we need some brave hearts to test the new app and find all the nasty bugs, so when we release it publicly it works faultless. If you want to enroll in the Beta program, you can do so from the following link and soon you will receive an update through the Play Store:

Enroll in the KDE Connect Beta program

Please report any issues you find, and if it crashes please use Android’s report dialog to send us info about the crash. Thanks a lot!

Update 21/09/15: We have promoted the beta app to stable, so you won’t see any update after enrolling in the beta program until we release another beta!

Mobile development sprint in Randa: KDE Connect, and more

This September a bunch of KDE developers, me included, will gather for a week in Randa, Switzerland, to work on awesome new ideas for KDE. The theme of the sprint is around mobile apps, so KDE Connect will be one of the focus of attention.

The goals for KDE Connect in this sprint are the following:

  • Make a release for Plasma 5
  • Make a release for Android with Material design
  • Add support for answering texts (SMS) from your computer
  • Some more cool stuff :)

But of course it is not only about KDE Connect: we will also help to shape the future of new KDE apps on smartphones: ports of desktop apps, brand new ideas, new tools to improve the development, etc.

To make this possible, there is a fundraiser open that aims to cover the costs of this sprint. If you can contribute with some money, it is a huge  way to help KDE and KDE Connect!

2011 Randa Sprint participants
2011 Randa Sprint participants

Since KDE is a community of people who make free software, and nowadays we use a lot of software in our smartphones, it makes me happy to see this effort to have presence there as well. I hope you share this point of view, and also that you can help the fundraiser with a donation. Thanks a lot!

PS: Aleix Pol and David Edmundson also posted in their blogs about their projects for KDE Connect in Randa, check them out!

KDE Connect on Github

A month ago I created two mirrors for the KDE Connect repositories in Github, and I’m really happy  with it. Projects in Github are more discoverable than in our internal KDE repo (our GIT web interface is not even indexed by search engines!), and makes it easier for new developers to get involved and send contributions, like these pull requests. Of course, I have no plan to drop KDE’s Git repo: Github is not free software and we want to make sure our code is always accessible through our floss-based infrastructure. Also, the KDE repo is nicely integrated with our tools, like the bug tracker and review board, but I still think that having a mirror in Github is a good addition.

Other free software projects already host mirrors in Github (see Gnome), and they even have support just for that use case: Github Mirrors. I think we could greatly benefit from doing something like that KDE-wise, as we would both gain visibility and reduce some load from our servers. As of now, I’ve done it with KDE Connect and I have no regrets :)

Edit: Made clear that we will always allow access to our sources via our free infrastructure.

Releasing KDE Connect ‘Code-in Edition’

Code-in is a program from Google to encourage young people (ages 13-17) to participate in free software projects. This year some Code-in participants worked on improvements for KDE Connect, and today we are releasing all this work condensed into KDE Connect 0.8!

This version comes with lots of bug fixes and a bunch of new features:

  • Added the ability to mute incoming calls from the desktop notification.*
  • Included a way to disable desktop notifications per-app from your phone.
  • Added a seek bar to the Media Controls.*
  • Added a plugin to prevent your PC from sleeping if your phone is in the network.
  • Implemented support for drag’n drop in touchpad.*
  • Added support for special keys and modifier keys to virtual keyboard.
  • Fixed shared Youtube videos not opening in the browser.

*Features made by people under 18 :D

This is a release for the KDE 4 desktop only, and I’m sorry for not having a Plasma 5 version ready. I’ve been holding this update to prepare a super cool stable version for Plasma 5 as well, but I didn’t find time for that and I think it’s better not to hold this version any longer. For those of you who have already jumped to Plasma 5, an official release is coming soon, I promise!

KDE Connect 0.8 for KDE 4 – tarball
KDE Connect 0.8 for Android – app on Google Play
KDE Connect 0.8 for Android – app on F-Droid

Local KDE meetings rock, and you should be in one

I made my first contact with the KDE community about 4 years ago, in a bar in Barcelona. Do you want to know how was it?

A bunch of KDE enthusiasts from the sunny Barcelona (Spain) decided to organize a dinner in a restaurant to celebrate the launch of KDE 4.6. At that time, I was not even using KDE 4 (I was a happy KDE3 user instead!) but I though it would be nice to meet other people and discuss about the problems I had with KDE 4.

They were celebrating this kind of “release dinners” regularly in Barcelona, a casual gathering for all kind of people interested in KDE: users, non-users, developers, artists, translators, writers… very interesting people above all! And I had a very good time in my first experience, so I begun to go to these dinners frequently. They would usually end up in a bar having beers and discussing all kind of interesting (KDE and non-KDE related) topics.

By that time I was studying computer engineering, and I thought it was a good opportunity for me to meet smart developers and learn from them. In one of these dinners, I was talking with Àlex Fiestas (and I bet we both were quite drunk) about how difficult it was to use a smartphone and a computer together, even when both devices run similar OSes… And you may already have realized that the entire KDE Connect project started there!

KDE Dinner in Barcelona
KDE Dinner in Barcelona, 2013

I’m happy to still be in this awesome community today, four years later. The reason is that by myself I can only write code, but in KDE I find artists that will help me make my apps beautiful, translators that will make them available in tens of different languages, writers that will spread the word, and a platform behind it that will give visibility to software distributions, end users, and new contributors. Could I have done this alone? Probably not. And not only that, in KDE I also met great people. People that are now true friends.

Last year I moved to Seattle (WA), so I don’t live in Barcelona anymore. I found that they were also organizing local KDE meetings here, so I decided to go to one right away. And of course there I met another bunch of awesome people! Andrew Lake even let me sleep in their place until I found a permanent apartment in the city, and Valorie Zimmerman offered me an “adoptive family” for my first New Year’s Eve here. Yes, people is that awesome in this free software community :) Really, truly, incredible people.

But the point of this blogpost is not (only) to talk about my KDE story. It is about your KDE story. You should be doing this yourself! If there is a KDE meeting near you, go there, if there are none, recruit some friends and create one! Really, don’t be afraid: the worst thing that can happen if nobody assists is that you end up having a beer with your friends :D And, of course, if you live around Seattle, please join us in our next meeting!

KDE Connect feature brainstorming

In a recent informal meeting of KDE users in Seattle, Andrew Lake from the KDE Visual Design Group gave me some ideas he had for KDE Connect. Since I think that we all have a different vision and different ideas that are possible to implement on top of KDE Connect, I decided to write this post asking for your ideas, in some kind of community brainstorming.

Also, since the last time I made a post about possible features for KDE Connect, a lot of them have been implemented or are work in progress, so I hope this post achieves the same effect :)

Here is my personal list of possible features:

  • Plugin for power management (sleep, shut down, etc).
  • “Find my phone” plugin, that makes your phone ring even if it is silenced.
  • Add media controls from the Android lock screen.
  • Plugin to keep your computer unlocked while phone is reachable.
  • Use the phone as a location provider for the desktop.
  • Akonady resources sync with Android (contacts, calendar…).
  • Plugin to print from your phone to your computer’s printer.
  • Add support for drag’n drop for touchpad plugin.
  • Port to other desktops and platforms: Gnome, Unity, MacOS, Windows…
  • Publish and maintain the iOS port that Yang Qiao begun this GSOC (any iPhone user around?)

And here is some stuff is already being worked on:

  • Answer SMS from the desktop (by David Edmunson).
  • Pair with a specific IP address or hostname (by Achilleas Koutsou).

Now it’s your time to come up with more ideas in the comments! And of course feel free to give your opinion/enhance the ideas on my list.

Update: As Aleix Pol suggested, I created a todo.kde.org for KDE Connect that I will be updating with the ideas that come up in the comments.

Help make Plasma 5 real!

Maybe you already know that the new version of the desktop by the KDE people, that will be called Plasma 5, is in the makings. I totally believe that this forthcoming release will be truly amazing,  and that’s why Aleix Pol and myself have already started porting KDE Connect to this new Desktop Environment.

Porting every application in KDE, though, requires a huge amount of work. This is one of the reasons why some of the best hackers in KDE will meet this summer in Randa, Switzerland: to work hard in the next version of the best desktop environment ever!

If you, like me, also believe that Plasma 5 will be awesome and want to help its development, I encourage you to donate in the crowd-funding campaign they started to cover the expenses of the meeting. You can do it from the following link:

http://www.kde.org/fundraisers/randameetings2014/index.php

Thanks from all the KDE Community!