GSOC Proposal KDE-Connect

Shabaz Ahmed shabaz1729 at gmail.com
Wed Mar 19 13:56:49 UTC 2014


Hello Everyone,

I know I'm late for the proposal, but better late than never. I have
written a proposal for KDE-Connect for some much needed functionality. Even
if my proposal is not upto the mark then I would love to get feedback and I
would still work on this features independently(not being a part of GSOC).

P.S: Sorry if some java or c++ syntax words come in the proposal. I have
tried my best to  avoid them.

Proposal:

*Organization:* KDE


*Project:* KDE-Connect


*Abstract:* Mobiles and PCs have become ubiquitous in day to day life and
need for communication between them is much needed. There are lots of
applications which try to bridge this gap and KDE-Connect stands out at
this by seamlessly integrating itself into the KDE Desktop. KDE-Connect has
a lot of room for improvement and one of the function which I find
important is the ability to control PC (Input Emulation) from the mobile
device (mouse and keyboard) and to share files between devices.
 ------------------------------

*Name**:  *Shabaz Ahmed


*Email Address**:* shabaz1729 at gmail.com


*Freenode IRC* Nick: build3r


*Mobile number:* +91 9972115447 (Whatsapp or Telegram)


*Location (City, Country and/or Time Zone):* Bangalore, India, IST


*Linkedin Profile:*    http://in.linkedin.com/pub/shabaz-ahmed/42/b4a/810/


 ------------------------------



*Proposal Title:* Input emulation, file syncing and voice control support
for KDE-Connect.


 ------------------------------

*Motivation for Proposal / Goal:*



I got a similar idea a few months back and I was really excited to work on
it . During my research, I found many applications which were almost doing
what I had in my mind but when I got to know about KDE-Connect, an open
source project, which is similar to my idea, I was really happy that I
don't have to start from scratch.

Many developers oversee the Google's
speech-to-text<http://developer.android.com/reference/android/speech/package-summary.html>(
http://developer.android.com/reference/android/speech/package-summary.html)
package which is accurate up to 90%, even with my Indian accent (during my
tests). My idea is: Why to use our fingers when the smart phone gives us
the ability to use our voice? The second functionality of Input Emulation
which I want to add to KDE-Connect is also very handy. The smart phone
touch screen can be used as a wireless touchpad for the Laptop or PC. Even
when the touchpad is not working the smart phone can be used a secondary
touchpad, or it could even be used when giving presentations.

The third functionality - file syncing, is a much needed one and there are
no "proper" apps in the market which gives the desired functionality. In
today's life it is crucial to keep the files synced between devices; in
places like India and other developing countries where mobile data
connection is unreliable and costly, cloud storage will not suffice. So my
idea is to keep a shared folder between devices; when some file is put into
the folder it gets synced between the devices seamlessly in the background
on wifi network.
 ------------------------------



*Implementation Details:*



*File Sync:  *For this feature I would add a separate shareable folder on
both the PC and the android phone (on the external storage). Whenever a
file is added to the folder on the PC or on the phone, the background
processes on the device would open up ports and sync the files. I prefer
using events instead of polling. I have already developed a similar app
which syncs photos taken from any mobile to other mobile running the
application on the same network. You can check it out
here<https://github.com/build3r/PhotoSync>(
https://github.com/build3r/PhotoSync).



*Input Emulation*: For the touch pad emulation I can map the gestures to
the mouse pointer, basically I send the difference (movement) in terms of
X-Y co-ordinates to the server running on PC which will take this data and
move the mouse pointer appropriately. I will also add a sensitivity feature
in which the user can set the sensitivity of the mouse pointer which I can
handle in the mapping function. Single tap would be for left click, tap and
hold for right click and two finger drag for scrolling. I would be using
Gesture-Detector<https://developer.android.com/training/gestures/detector.html>(
https://developer.android.com/training/gestures/detector.html) package for
this.



*Voice Control:* I have not seen a single application on market doing this.
For voice control, as I said above, I'll be using the speech recognition
package of android. I would give a list of predefined command such as "Open
Browser", "Open Terminal" etc. and this list can also be customized by the
user. He can even add new commands for which he must include appropriate
shell script on the PC. So basically when the user gives a command (by
voice) the Google server returns the string equivalent of it, we match the
string with predefined and user defined (in that order) and if it is even a
partial match (80%) we send a command to the server on PC side which runs
the appropriate shell script. I have started working on the module (
https://github.com/build3r/MobileControl) independently. I just have to
work on the KDED to add this functionality. Preferably I'll add a tap and
hold button to speak the command in the main activity
(kdeconnect-android<https://github.com/build3r/kdeconnect-android>/
src <https://github.com/build3r/kdeconnect-android/tree/master/src> /
main<https://github.com/build3r/kdeconnect-android/tree/master/src/main>/
java<https://github.com/build3r/kdeconnect-android/tree/master/src/main/java>/
org<https://github.com/build3r/kdeconnect-android/tree/master/src/main/java/org>/
kde<https://github.com/build3r/kdeconnect-android/tree/master/src/main/java/org/kde>/
kdeconnect<https://github.com/build3r/kdeconnect-android/tree/master/src/main/java/org/kde/kdeconnect>/
UserInterface<https://github.com/build3r/kdeconnect-android/tree/master/src/main/java/org/kde/kdeconnect/UserInterface>/
*MainActivity.java*).
 ------------------------------

*Tentative Timeline:*

*Before 21st April: Start to hack the KDED and start experimenting with
various  features.*


 *21st to 1st May: Clear all doubts which may arise during the hacking
period.*


 *1st to 18th May: Make proper community bonding and learn about other new
projects at KDE   ask mentors and fellow developers for feedback on my
project.*


 19th May:  Start actual development.


19th to 25th May: Implement the Voice Control Feature


25th to 28th May: Test the Module separately.


28th to 30th May: Integrate into KDE-Connect and do Integration Testing.


30th May: Take Feedback


1st to 14th June: Implement Input Emulation.


!4th to 17th June: Module Testing.


17th to 22st June: Integration Testing.


23rd June: Release Alpha Version to friends and fellow developers.


23rd to 25th June: Midterm Evaluation.


25th June to 10th July; implement File syncing Feature.


10th July 20th July: Module Testing (Must be tested thoroughly).


20th July to 30th July: integration Testing.


1st August: Release Alpha version 2.


5th August Release: Beta Version.


After GSOC: I have other handy features and improvements for KDE-Connect
such as improvement of media control as done in this project (
http://homepage.ntlworld.com/mark.harman/comp_wifiremoteplay.html),
Shutdown, restart and logoff buttons, a file browsing feature.
 ------------------------------



*Working:*

I have no commitments during this summer and can easily devote 45hrs per
week. I have no problem in coding at night, in fact I prefer working at
night.



*About Me:*

*My name is Shabaz Ahmed and I'm 20 years old. I'm currently studying at M.
S. Ramaiah Institute of Technology pursuing B.E in Computer Science and
Engineering. I'm technology enthusiast and like develop and use softwares.
I'm open source user and big promoter (set up an open-source community at
my college). I have been KDE user for past 1 year and I find KDE community
just awesome (people are eager to help). I have good skills in C, C++, JAVA
and HTML. I'm a keen interest in competitive programming (I head the coding
club of our college). I haven't actually developed open source softwares
but I have contributed to the community by reporting bugs (VLC and Ubuntu)
and helping out people on discussion boards.*


 *Why Should I be Selected?:*

*Once something gets my interest and I start working on it with this
interest then I forgot the world (won't sleep or eat) until I complete it
or perfect it or until I'm satisfied by the results (Has happened to me lot
during competitive programming contests). I won't promise that I would
deliver a world class app during this summer but I do promise that I would
deliver what I have told at least in a working condition.*



*Junior Jobs:*

I will be sincere at this, I had taken up a junior job to fix a bug but due
to various reasons I couldn't complete it and inevitably I had to drop it.
But I have developed quite a few applications independently (most of them
Android). You can find them here:

https://github.com/build3r?tab=repositories
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdeconnect/attachments/20140319/3104aee4/attachment-0001.html>


More information about the KDEConnect mailing list