Proposal for a GSoC project (KConfig/cloud/kdebase)

Jinesh K J jineshkj at gmail.com
Mon Mar 17 08:02:22 UTC 2014


Hello KDE devs and GSoC mentors,

I know its kind of last moment for GSoC ideas but I have had this one for
quite some time in my mind and I would like to give it a shot. Since the
deadline is approaching fast I will try to get to my point as quickly as
possible so that you don't have to read much. I am sending this to devel
and connect mailing lists with the hope of catching the interest of a
mentor. If you are a mentor relevant to this area, please respond to my
idea, even if you find it unacceptable. I would like to get all kind of
feedback before submitting the formal proposal at GSoC. Thanks in advance :)

*What problem am I trying to solve*
Technology and how it is used has changed dramatically during the last 10
years. There are more people online in the internet, using a miltitude of
heterogenous devices. Our wish, btw, is to see KDE everywhere. One of the
problems that myself as well as my friends face is dealing with configuring
multiple desktop systems we own in a consistent manner. I myself have two
laptops and a desktop (in college) with KDE installed. I believe the case
is not very different for most of you out there. Often whenever I make a
change in one of these desktops, I have to go around on all the other
systems to make the same changes myself.

Consider a simple example. When I add a new feed to akregator, I need to
ensure that I add the same in all my systems. Or take the case of adding a
new bookmark to rekonq or konqueror. Consider the case when I changed a
keyboard shortcut and having to make the same changes in all other systems.
Wouldn't it be a lot simple if all the configuration changes get
synchronized automagically over internet?

Now consider the case where you plan to reinstall your OS. Or, change the
distro from Kubuntu to Arch. Or maybe you just want to use a desktop at
your in-laws for making an urgent fix to your project source code. Wouldn't
it be a lot nicer if you could just login and synchronize your KDE session
to get the same look and feel of your own system. This project aims to
provide a seamless and consistent experience for any KDE user across many
desktop installations.

*Project Description*
The project aims at providing a transparent mechanism for storing
application configuration data in a cloud service with little or no
modification to the existing KConfig module. The idea is to let a KDE user
connect his/her KDE sessions (on multiple devices) to a cloud service using
his/her identity.kde.org (or similar) credentials. Once the session is
authenticated with identity.kde.org, user could configure the applications
to be synced for storing their configuration data. A separate KDE service
running in the background takes care of synchronization and any possible
conflict resolution. A separate user interface would be used for manual
conflict resolution. All configuration changes will be done through a kcm
module. Service control and status monitoring would be shown using a system
tray application.

When an application uses KConfig module to store its configuration, the
configuration is stored in local filesystem first. It's then scheduled to
be updated to the cloud by the backend service at the earliest - we could
use the Linux inotify interface or equivalent to monitor for changes in
filesystem. Once updated in the cloud, the data is synchronized across all
the desktop sessions using the same identity credentials both currently or
any time in future.

My current knowledge in KConfig is based on the tutorial given here:
http://techbase.kde.org/Development/Tutorials/KConfig. I understand that
there are multitude of ways an application might prefer to store its
configuration data and it's my intention to take the most common apps on a
case-by-case basis to provide the cloud support. I would currently like to
target the following applications:

  a. akregator (for synchronizing feeds)
  b. rekonq (for bookmarks)

Since this is a major feature, we should probably target KDE Framework 5.

*Technologies & Tools*
I prefer to use C++/Qt5/KF5 for all the modules except the server side.
Server side could use PHP or Ruby. I'm not sure what runs behind the KDE
servers currently, guessing it's PHP. I am familiar with HTML/Javascript
but not an expert - so that might be an area where additional help will be
required.

*Deliverables & Timelines*
I believe the project will have five deliverables:
  a. Have a cloud service running on a kde.org server (4 weeks)
  b. A KDE backend service that takes care of synchronization of
configuration data (5 weeks)
  c. A kcm module to configure the service (1 week)
  d. A simple UI for manual conflict resolution (2 weeks)
  e. A simple system tray application for quick control and status
monitoring of the synchronization process (1 week)

*Concerns*
Following are some concerns that some people have shown about the project:
1. Security and Privacy: As I understand, Privacy and Security are one of
the main concerns with cloud storage. A few possible solutions to those
concerns are:
  a. Use a HTTPS to protect communication between client and server
  b. Enable user to use an encryption key for data stored on the server
  c. Use a decentralized storage (like bittorrent) where the server acts
more like a tracker
2. Storage Capacity and Reliability: I understand that providing storage
for millions of KDE users in a KDE server might be too much of overhead as
we all risk. One of the ways to avoid this is to let the user configure a
Dropbox or Google Drive or similar service for storage of data. In fact,
the user could even integrate with an OwnCloud service for data storage.

*About Myself*
I have been a KDE user for more than 13 years and currently pursuing M.S.
in Computer Science at Syracuse University. I have about 7 years of
experience in working in software industry developing system software for
Linux using C and C++. Apart from C and C++, I am also very good in Bash,
Ruby and Python and my interest is in reliable, open, secure and
distributed systems. I intend to work on this project during the entire
summer from second week of May till first week of August (a total of and
would like to spend a minimum of 45 hours per week. I work in New York
timezone and am happy with IRCs and emails for communications.

Thanks
Jinesh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdeconnect/attachments/20140317/178eaedc/attachment.html>


More information about the KDEConnect mailing list