[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    GSoC Proposal : Cloud support for KDE application settings
From:       Jinesh K J <jineshkj () gmail ! com>
Date:       2014-03-18 14:19:37
Message-ID: CAGMqCbWMuCB9_+q1JORM=X_EaJZtprxpda6mpybmQDmn8Us1uw () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi Devs,

I have submitted my final GSoC proposal. Full proposal contents are given
below. I really wish if some mentor could look into it and have their
opinion. Thanks:

*Organization:* KDE

*Short description:* One of the problems that many users deal with on a
daily basis is maintaining a consistent configuration on multiple desktops.
Often whenever we make a configuration change in one, we have to go around
on all the other systems to make the same changes manually at some point in
future. This project aims to implement configuration synchronization to
enable a seamless and consistent experience for a KDE user across his/her
KDE desktops.
*Name:* Jinesh Jayakumar
*Email Address:* jineshkj@gmail.com
*Freenode IRC Nick:* jinesh
*IM Service and Username:* Google/jineshkj
*Location (City, Country and/or Time Zone):* Syracuse, US. NY
------------------------------
*Proposal Title:* Cloud support for KDE application settings

*Motivation for Proposal / Goal:*

Technology and how it is used has changed dramatically during the last 10
years. There are more people online in the internet, using a multitude of
heterogeneous devices. One of the problems that myself and my friends face
is dealing with configuring multiple desktop systems 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 configuration change in one of these
systems, I have to go around on all the other systems to make the same
changes manually at some point in future.

To make my point clear, let me introduce a few simple use cases. For
example, when I add a new RSS feed to Akregator, I need to ensure that I
manually 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.
It would definitely 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 from
one Linux distribution to another. Or maybe you just want to use a desktop
at your friend's home for doing some leasure time coding. 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 user across different KDE
installations.


*Implementation Details:*

Before I delve into the details of my new design, I like to explain how
(most) KDE applications store their configuration data. The KDE core
library provides all KDE applications with the KConfig (
http://api.kde.org/4.12-api/kdelibs-apidocs/kdecore/html/classKConfig.html)
interface that provides a transparent means to store application
configuration data. The data gets stored in an application specific
directory under $HOME/.kde4/ folder in an INI-type file format (by
default). Although an application could use custom formats (ex. XML is used
by Akregator to store feed URLs) by storing raw text, vast majority of KDE
applications use the default format.

In the new design, I intend to add few additional features to the KConfig
interface about which I shall explain a bit later. To begin with the new
design, I intend to first write a simple KDE service that starts
automatically when the user logs into their KDE session. This service takes
care of synchronizing application configuration data present in $HOME/.kde4
directory. The service itself would be enabled and configured by the logged
in user using its KCM module from systemsettings application. In order for
this service to synchronize and authenticate in the cloud, user provides
his/her identity.kde.org credentials.

Once the KDE service authenticates the user with identity.kde.org, it
connects to the cloud service to fetch updated application configuration
stored in the cloud. Authentication credentials will be stored in KDE
Wallet. The downloaded configuration is then stored in a local temporary
store and then later provided to their respective KDE application for
further processing. This processing itself could happen in two ways:
    1. If the application is presently running in the system, it would
receive a signal "configChanged()" from its corresponding KConfig object.
This signal when captured by the application would receive the new KConfig
object based of configuration data stored in the temporary store. Once the
application receives this object, it takes the decision as to what changes
to accept and how to accept. We would let individual app developers decide
how they like to process the data.
    2. If the application is not running presently, it will obtain the new
configuration as a temporary KConfig object, the next time it starts
running. It would happen the same way as above.
Those applications that do not wish to use signals would be presented with
a polling mechanism using a new member function isChanged(). If the
application decides the save the new temporary KConfig object as the
application's, then it calls another member function changeConfig(const
KConfig& new_config); . As you can see here, we have added a new signal and
two member functions to the KConfig class. The preferred way for KConfig to
monitor for configuration updates from cloud is by watching changes to its
temporary configuration directory using the portable KDirWatch interface.

Now, when an application modifies its configuration using KConfig, the KDE
service would receive a notification, again through KDirWatch interface.
The synchronization service then performs a cryptographic hashing (MD5 sum)
of the new configuration data to check for any changes really made to it.
If the checksum differ from that present in the cloud, the new
configuration is propagated to the server. The whole process of
synchronization works exactly like how a version control system like
Subversion works - before a change is pushed into the server, the
synchronization service and the corresponding KDE application need to be
consistent with updated configuration from server.

While I work on the synchronization service, I would also work on having a
web service running on identity.kde.org or similar server to provide an
API, possibly REST, for the synchronization service to connect to. Although
I am a fan of Ruby, I don't mind using PHP or Python in the server side. I
will also provide a simple system tray application (similar to the one
provided by Dropbox) from where we could quickly control some of the
functionality of the synchronization service.

Since there are hundreds of applications in KDE, it's impossible to get
this feature implemented in all of them. But, to provide a
proof-of-concept, I would like to change two applications -
Konqueror/rekonq and Akregator - to have suport for new cloud
infrastructure. Konqueror would be updated to synchronize bookmarks and
Akregator for feeds. Since this is going to be a major feature, I would
rather target on KDE Framework 5. All software written, except for the
cloud server, would use C++ and Qt5/KF5. Github would be used for source
control and project management. IRC and mailing lists will be used for
communication with other community members.

Let me also list down a few things that could be worked on in future after
the GSoC. User will be able to maintain different configuration profiles -
like home, work, etc - choose a profile to load. The service could be used
to easily backup and restore configuration data using cloud storage. A KDE
user would be also able to log in to the server's web interface and observe
or even control his KDE sessions from the cloud. He/she could use an
encryption key to encrypt all data stored in the server - KGpg could be
used for help. He/she would be able to link his KDE.ORG account with a
third-party data storage service like Dropbox, Google Drive, OwnCloud, etc
for storing of configuration data. He/she could possibly use the KDE server
more like a Bit Torrent tracker and store the data just in his/her systems.
Maybe in future, even the KDE server could be avoided and use a
de-centralized distributed hash tables to store the data. Possibilities are
infinite, usefulness is immense and time is ticking. I believe KDE should
introduce this feature before any other commercial or open-source desktops
do. This feature could very well be a unique selling point for KDE.


*Tentative Timeline (in weekly intervals until 2 weeks after the end of
GSoC):*

 9 May : Project Start
16 May : Implement KCM module for KDE service configuration (esp.
enable/disable, identity.kde.org credentials, choose applications to sync).
23 May : Implement the Synchronizer KDE service to autostart on KDE login
and authenticate with identity.kde.org
30 May : Implement a basic configuration storage facility in the server.
 6 Jun : Support for using KDirWatch to monitor for local configuration
changes inside $HOME/.kde4, calculating checksum and find changes.
13 Jun : Support for using KDirWatch to monitor for configuration updates
from cloud.
20 Jun : Alpha version of Synchronizer service
27 Jun : Alpha version of KConfig functionality
 4 Jul : Alpha version of cloud server functionality
11 Jul : Modify Akregator to support synchronization
18 Jul : Modify Konqueror to support synchronization
25 Jul : Beta version of all the above modules
 1 Aug : Alpha version of system tray application. RC1 release of all other
modules
 8 Aug : Beta release of system tray application. RC2 release of all other
modules
15 Aug : Final release of all the modules (Synchronizer, Cloud Server,
KConfig, KCM, System Tray Application)

22 Aug : Discussion about future direction of the project. A general public
preview release and possibly a demo.
29 Aug : Discussion on general feedback and finalization road map for next
3 months


*Do you have other obligations from late May to early August (school, work,
vacation, etc.)? Please note that we expect the Summer of Code to be a
full-time, 40-hr a week occupation. It is important to be clear and upfront
about other commitments that you may have during that time.*

I do not have any other commitments for summer. I intent to work for about
45 - 55 hours per week and concentrate fully on this project. Even after
the GSoC, I would still like to do further development. I have big plans
and great hopes for this project !!


*About Me (let us know who you are!):*

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. Though I have been a supporter and promoter of open
source software since beginning, I have never had the courage to contribute
something so big to it. I believe this is the best way for me to give back,
at least a part of which, what I owe to the community.


*Junior job link (provide a link to a small task in KDE that you have done.
It is not mandatory but will increase your chances of getting accepted
considerably. If you don't know what to work on have a look at
http://kde.org/jj <http://kde.org/jj> or ask a mentor):*

I have not made much contribution to open source community till now.
Following are some links that shows some works that I have done in the past
(some are really old and some are academic):

http://sourceforge.net/projects/parser/
http://sourceforge.net/projects/e-lib/
https://github.com/jineshkj/OOD

You can find more about my skill set from my LinkedIn page :
http://www.linkedin.com/in/jineshjayakumar

[Attachment #5 (text/html)]

<div dir="ltr">Hi Devs,<div><br></div><div>I have submitted my final GSoC proposal. \
Full proposal contents are given below. I really wish if some mentor could look into \
it and have their opinion. Thanks:</div><div><br></div> <div><div class="" \
style="margin:0px;padding:15px;border:1px solid \
rgb(235,235,235);outline:0px;font-size:13px;vertical-align:baseline;color:rgb(0,0,0);font-family:Arial,&#39;Helvetica \
Neue&#39;,Helvetica,sans-serif;line-height:19.5px"> <p class="" \
style="margin:0px;padding:0px;border:0px;outline:0px;font-size:12px;vertical-align:baseline;background-color:transparent;line-height:1.6em"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Organization:</strong> \
KDE</p> <p class="" style="margin:0px;padding:0px;border:0px;outline:0px;font-size:12p \
x;vertical-align:baseline;background-color:transparent;line-height:1.6em"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Short \
description:</strong> One of the problems that many users deal with on a daily basis \
is maintaining a consistent configuration on multiple desktops. Often whenever we \
make a configuration change in one, we have to go around on all the other systems to \
make the same changes manually at some point in future. This project aims to \
implement configuration synchronization to enable a seamless and consistent \
experience for a KDE user across his/her KDE desktops.</p> </div><div class="" \
style="margin:0px;padding:15px 15px \
0px;border:0px;outline:0px;font-size:13px;vertical-align:baseline;background-color:rgb(246,246,246);color:rgb(0,0,0);font-family:Arial,&#39;Helvetica \
Neue&#39;,Helvetica,sans-serif;line-height:19.5px"> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Name:</strong> \
Jinesh Jayakumar</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Email \
Address:</strong> <a href="mailto:jineshkj@gmail.com">jineshkj@gmail.com</a></div> \
<div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Freenode \
IRC Nick:</strong> jinesh</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">IM \
Service and Username:</strong> Google/jineshkj</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Location \
(City, Country and/or Time Zone):</strong> Syracuse, US. NY</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><hr \
style="border-right-width:0px;border-bottom-width:0px;border-left-width:0px;border-color:rgb(204,204,204);border-style:solid;clear:both;height:0px">
 </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Proposal \
Title:</strong> Cloud support for KDE application settings</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Motivation \
for Proposal / Goal:</strong></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Technology \
and how it is used has changed dramatically during the last 10 years. There are more \
people online in the internet, using a multitude of heterogeneous devices. One of the \
problems that myself and my friends face is dealing with configuring multiple desktop \
systems 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 configuration change in one of these systems, I have \
to go around on all the other systems to make the same changes manually at some point \
in future.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 To make my point clear, let me introduce a few simple use cases. For example, when I \
add a new RSS feed to Akregator, I need to ensure that I manually 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. It would definitely be a lot simple if all the \
configuration changes get synchronized automagically over internet?</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 Now consider the case where you plan to reinstall your OS. Or, change from one Linux \
distribution to another. Or maybe you just want to use a desktop at your friend&#39;s \
home for doing some leasure time coding. Wouldn&#39;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 \
user across different KDE installations.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Implementation \
Details:</strong></div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 Before I delve into the details of my new design, I like to explain how (most) KDE \
applications store their configuration data. The KDE core library provides all KDE \
applications with the KConfig (<a \
href="http://api.kde.org/4.12-api/kdelibs-apidocs/kdecore/html/classKConfig.html">http://api.kde.org/4.12-api/kdelibs-apidocs/kdecore/html/classKConfig.html</a>) \
interface that provides a transparent means to store application configuration data. \
The data gets stored in an application specific directory under $HOME/.kde4/ folder \
in an INI-type file format (by default). Although an application could use custom \
formats (ex. XML is used by Akregator to store feed URLs) by storing raw text, vast \
majority of KDE applications use the default format.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 In the new design, I intend to add few additional features to the KConfig interface \
about which I shall explain a bit later. To begin with the new design, I intend to \
first write a simple KDE service that starts automatically when the user logs into \
their KDE session. This service takes care of synchronizing application configuration \
data present in $HOME/.kde4 directory. The service itself would be enabled and \
configured by the logged in user using its KCM module from systemsettings \
application. In order for this service to synchronize and authenticate in the cloud, \
user provides his/her <a href="http://identity.kde.org">identity.kde.org</a> \
credentials.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 Once the KDE service authenticates the user with <a \
href="http://identity.kde.org">identity.kde.org</a>, it connects to the cloud service \
to fetch updated application configuration stored in the cloud. Authentication \
credentials will be stored in KDE Wallet. The downloaded configuration is then stored \
in a local temporary store and then later provided to their respective KDE \
application for further processing. This processing itself could happen in two \
ways:</div> <div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
1. If the application is presently running in the system, it would receive a signal \
&quot;configChanged()&quot; from its corresponding KConfig object. This signal when \
captured by the application would receive the new KConfig object based of \
configuration data stored in the temporary store. Once the application receives this \
object, it takes the decision as to what changes to accept and how to accept. We \
would let individual app developers decide how they like to process the data.</div> \
<div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
2. If the application is not running presently, it will obtain the new configuration \
as a temporary KConfig object, the next time it starts running. It would happen the \
same way as above.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Those \
applications that do not wish to use signals would be presented with a polling \
mechanism using a new member function isChanged(). If the application decides the \
save the new temporary KConfig object as the application&#39;s, then it calls another \
member function changeConfig(const KConfig&amp; new_config); . As you can see here, \
we have added a new signal and two member functions to the KConfig class. The \
preferred way for KConfig to monitor for configuration updates from cloud is by \
watching changes to its temporary configuration directory using the portable \
KDirWatch interface.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 Now, when an application modifies its configuration using KConfig, the KDE service \
would receive a notification, again through KDirWatch interface. The synchronization \
service then performs a cryptographic hashing (MD5 sum) of the new configuration data \
to check for any changes really made to it. If the checksum differ from that present \
in the cloud, the new configuration is propagated to the server. The whole process of \
synchronization works exactly like how a version control system like Subversion works \
- before a change is pushed into the server, the synchronization service and the \
corresponding KDE application need to be consistent with updated configuration from \
server.</div> <div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 While I work on the synchronization service, I would also work on having a web \
service running on <a href="http://identity.kde.org">identity.kde.org</a> or similar \
server to provide an API, possibly REST, for the synchronization service to connect \
to. Although I am a fan of Ruby, I don&#39;t mind using PHP or Python in the server \
side. I will also provide a simple system tray application (similar to the one \
provided by Dropbox) from where we could quickly control some of the functionality of \
the synchronization service.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 Since there are hundreds of applications in KDE, it&#39;s impossible to get this \
feature implemented in all of them. But, to provide a proof-of-concept, I would like \
to change two applications - Konqueror/rekonq and Akregator - to have suport for new \
cloud infrastructure. Konqueror would be updated to synchronize bookmarks and \
Akregator for feeds. Since this is going to be a major feature, I would rather target \
on KDE Framework 5. All software written, except for the cloud server, would use C++ \
and Qt5/KF5. Github would be used for source control and project management. IRC and \
mailing lists will be used for communication with other community members.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 Let me also list down a few things that could be worked on in future after the GSoC. \
User will be able to maintain different configuration profiles - like home, work, etc \
- choose a profile to load. The service could be used to easily backup and restore \
configuration data using cloud storage. A KDE user would be also able to log in to \
the server&#39;s web interface and observe or even control his KDE sessions from the \
cloud. He/she could use an encryption key to encrypt all data stored in the server - \
KGpg could be used for help. He/she would be able to link his <a \
href="http://KDE.ORG">KDE.ORG</a> account with a third-party data storage service \
like Dropbox, Google Drive, OwnCloud, etc for storing of configuration data. He/she \
could possibly use the KDE server more like a Bit Torrent tracker and store the data \
just in his/her systems. Maybe in future, even the KDE server could be avoided and \
use a de-centralized distributed hash tables to store the data. Possibilities are \
infinite, usefulness is immense and time is ticking. I believe KDE should introduce \
this feature before any other commercial or open-source desktops do. This feature \
could very well be a unique selling point for KDE.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><br></strong></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Tentative \
Timeline (in weekly intervals until 2 weeks after the end of \
GSoC):</strong></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
9 May : Project Start</div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 16 May : Implement KCM module for KDE service configuration (esp. enable/disable, <a \
href="http://identity.kde.org">identity.kde.org</a> credentials, choose applications \
to sync). </div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 23 May : Implement the Synchronizer KDE service to autostart on KDE login and \
authenticate with <a href="http://identity.kde.org">identity.kde.org</a></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 30 May : Implement a basic configuration storage facility in the server.</div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
6 Jun : Support for using KDirWatch to monitor for local configuration changes inside \
$HOME/.kde4, calculating checksum and find changes.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">13 \
Jun : Support for using KDirWatch to monitor for configuration updates from \
cloud.</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 20 Jun : Alpha version of Synchronizer service</div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">27 \
Jun : Alpha version of KConfig functionality</div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  4 Jul : Alpha version of cloud server functionality</div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">11 \
25 Jul : Beta version of all the above modules</div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
1 Aug : Alpha version of system tray application. RC1 release of all other \
modules</div> <div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
8 Aug : Beta release of system tray application. RC2 release of all other \
modules</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 15 Aug : Final release of all the modules (Synchronizer, Cloud Server, KConfig, KCM, \
System Tray Application)</div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">22 \
Aug : Discussion about future direction of the project. A general public preview \
release and possibly a demo.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">29 \
Aug : Discussion on general feedback and finalization road map for next 3 \
months</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><br>
 </strong></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Do \
you have other obligations from late May to early August (school, work, vacation, \
etc.)? Please note that we expect the Summer of Code to be a full-time, 40-hr a week \
occupation. It is important to be clear and upfront about other commitments that you \
may have during that time.</strong></div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 I do not have any other commitments for summer. I intent to work for about 45 - 55 \
hours per week and concentrate fully on this project. Even after the GSoC, I would \
still like to do further development. I have big plans and great hopes for this \
project !!</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">About \
Me (let us know who you are!):</strong></div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><br>
 </strong></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">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. Though I have been a supporter and promoter of \
open source software since beginning, I have never had the courage to contribute \
something so big to it. I believe this is the best way for me to give back, at least \
a part of which, what I owe to the community.</div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><strong \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">Junior \
job link (provide a link to a small task in KDE that you have done. It is not \
mandatory but will increase your chances of getting accepted considerably. If you \
don&#39;t know what to work on have a look at <a \
href="http://kde.org/jj">http://kde.org/jj</a> or ask a mentor):</strong></div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 I have not made much contribution to open source community till now. Following are \
some links that shows some works that I have done in the past (some are really old \
and some are academic):</div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><a \
href="http://sourceforge.net/projects/parser/">http://sourceforge.net/projects/parser/</a></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 <a href="http://sourceforge.net/projects/e-lib/">http://sourceforge.net/projects/e-lib/</a></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"><a \
href="https://github.com/jineshkj/OOD">https://github.com/jineshkj/OOD</a></div> <div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent"> \
</div><div style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
 You can find more about my skill set from my LinkedIn page : <a \
href="http://www.linkedin.com/in/jineshjayakumar">http://www.linkedin.com/in/jineshjayakumar</a></div><div \
style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-color:transparent">
  </div></div></div></div>



>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic