<div dir="ltr"><div><div><div>Hello Everyone,<br><br></div>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).<br>
<br></div>P.S: Sorry if some java or c++ syntax words come in the proposal. I have tried my best to avoid them.<br><br></div>Proposal:<br><br>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Organization:</span></u></b><span style="font-size:12pt;line-height:107%"> KDE</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br>
</span></p>
<p class="MsoNormal"><b style><span style="font-size:12pt;line-height:107%">Projec<u>t:</u></span></b><span style="font-size:12pt;line-height:107%"> KDE-Connect</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br>
</span></p>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Abstract:</span></u></b><span style="font-size:12pt;line-height:107%"> 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. </span></p>
<div class="MsoNormal"><span style="font-size:12pt;line-height:107%;font-family:"Times New Roman","serif"">
<hr align="left" size="2" width="100%">
</span></div>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Name</span></u></b><b style><span style="font-size:12pt;line-height:107%">: <span style> </span></span></b><span style="font-size:12pt;line-height:107%">Shabaz Ahmed</span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Email Address</span></u></b><b style><span style="font-size:12pt;line-height:107%">:</span></b><span style="font-size:12pt;line-height:107%"> <a href="mailto:shabaz1729@gmail.com">shabaz1729@gmail.com</a></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Freenode IRC</span></u></b><b style><span style="font-size:12pt;line-height:107%"> </span></b><span style="font-size:12pt;line-height:107%">Nick: build3r</span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Mobile number:</span></u></b><span style="font-size:12pt;line-height:107%"> +91 9972115447 (Whatsapp or
Telegram)</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Location (City, Country and/or Time
Zone):</span></u></b><b style><span style="font-size:12pt;line-height:107%"> </span></b><span style="font-size:12pt;line-height:107%">Bangalore, India, IST</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br>
</span></p>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Linkedin Profile:</span></u></b><span style="font-size:12pt;line-height:107%"><span style>
</span><span style> </span><a href="http://in.linkedin.com/pub/shabaz-ahmed/42/b4a/810/">http://in.linkedin.com/pub/shabaz-ahmed/42/b4a/810/</a></span></p>
<p class="MsoNormal"> </p>
<div class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;vertical-align:baseline"><span style="font-size:12pt;font-family:"Times New Roman","serif"">
<hr align="left" size="2" width="100%">
</span></div>
<p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;vertical-align:baseline"><span style="font-size:12pt;font-family:"Times New Roman","serif""> </span></p>
<p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;vertical-align:baseline"><b><u><span style="font-size:12pt;font-family:"Times New Roman","serif";border:1pt none windowtext;padding:0in">Proposal
Title:</span></u></b><span style="font-size:12pt;font-family:"Times New Roman","serif""> Input emulation, file syncing
and voice control support for KDE-Connect.</span></p>
<p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;vertical-align:baseline"><span style="font-size:12pt;font-family:"Times New Roman","serif""> </span></p>
<div class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;vertical-align:baseline"><span style="font-size:12pt;font-family:"Times New Roman","serif"">
<hr align="left" size="2" width="100%">
</span></div>
<p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;vertical-align:baseline"><b style><u><span style="font-size:12pt">Motivation for Proposal / Goal:</span></u></b><b style><u><span style="font-size:12pt;font-family:"Times New Roman","serif""></span></u></b></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"> </span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">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.</span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">Many
developers oversee the Google‘s<span style> </span></span><a href="http://developer.android.com/reference/android/speech/package-summary.html"><span style="font-size:12pt;line-height:107%">speech-to-text</span></a><span style="font-size:12pt;line-height:107%"> (<a href="http://developer.android.com/reference/android/speech/package-summary.html">http://developer.android.com/reference/android/speech/package-summary.html</a>)
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.</span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">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.</span></p>
<div class="MsoNormal"><span style="font-size:12pt;line-height:107%;font-family:"Times New Roman","serif"">
<hr align="left" size="2" width="100%">
</span></div>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"> </span></p>
<p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;vertical-align:baseline"><b><u><span style="font-size:12pt;font-family:"Times New Roman","serif"">Implementation
Details:</span></u></b><u><span style="font-size:12pt;font-family:"Times New Roman","serif""></span></u></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"> </span></p>
<p class="MsoNormal"><u><span style="font-size:12pt;line-height:107%">File
Sync:<span style> </span></span></u><span style="font-size:12pt;line-height:107%">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 <a href="https://github.com/build3r/PhotoSync">here</a> (<a href="https://github.com/build3r/PhotoSync">https://github.com/build3r/PhotoSync</a>).
</span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"> </span></p>
<p class="MsoNormal"><u><span style="font-size:12pt;line-height:107%">Input
Emulation</span></u><span style="font-size:12pt;line-height:107%">: 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 </span><a href="https://developer.android.com/training/gestures/detector.html"><span style="font-size:12pt;line-height:107%">Gesture-Detector</span></a><span style="font-size:12pt;line-height:107%"> (<a href="https://developer.android.com/training/gestures/detector.html">https://developer.android.com/training/gestures/detector.html</a>)
package for this.</span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"> </span></p>
<p class="MsoNormal"><u><span style="font-size:12pt;line-height:107%">Voice
Control:</span></u><span style="font-size:12pt;line-height:107%"> 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 (</span><a href="https://github.com/build3r/MobileControl"><span style="font-size:12pt;line-height:107%">https://github.com/build3r/MobileControl</span></a><span style="font-size:12pt;line-height:107%">) 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 (</span><a href="https://github.com/build3r/kdeconnect-android">kdeconnect-android</a><span class=""> / </span><a href="https://github.com/build3r/kdeconnect-android/tree/master/src">src</a><span class=""> / </span><a href="https://github.com/build3r/kdeconnect-android/tree/master/src/main">main</a><span class=""> / </span><a href="https://github.com/build3r/kdeconnect-android/tree/master/src/main/java">java</a><span class=""> / </span><a href="https://github.com/build3r/kdeconnect-android/tree/master/src/main/java/org">org</a><span class=""> / </span><a href="https://github.com/build3r/kdeconnect-android/tree/master/src/main/java/org/kde">kde</a><span class=""> / </span><a href="https://github.com/build3r/kdeconnect-android/tree/master/src/main/java/org/kde/kdeconnect">kdeconnect</a><span class=""> / </span><a href="https://github.com/build3r/kdeconnect-android/tree/master/src/main/java/org/kde/kdeconnect/UserInterface">UserInterface</a><span class=""> / </span><strong><span style="font-family:"Calibri","sans-serif"">MainActivity.java</span></strong><span style="font-size:12pt;line-height:107%">).</span></p>
<div class="MsoNormal"><span style="font-size:12pt;line-height:107%;font-family:"Times New Roman","serif"">
<hr align="left" size="2" width="100%">
</span></div>
<p class="MsoNormal"><strong><u><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in">Tentative
Timeline:</span></u></strong></p>
<p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal">Before 21<sup>st</sup> April:
Start to hack the KDED and start experimenting with various features.</span></strong></p><p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal"><br>
</span></strong></p>
<p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal">21<sup>st</sup> to 1<sup>st</sup>
May: Clear all doubts which may arise during the hacking period.</span></strong></p><p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal"><br>
</span></strong></p>
<p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal">1<sup>st</sup> to 18<sup>th</sup>
May: Make proper community bonding and learn about other new projects at
KDE<span style> </span>ask mentors and fellow
developers for feedback on my project.</span></strong></p><p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal"><br>
</span></strong></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">19<sup>th</sup>
May:<span style> </span>Start actual development.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">19<sup>th</sup>
to 25<sup>th</sup> May: Implement the Voice Control Feature</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">25<sup>th</sup>
to 28<sup>th</sup> May: Test the Module separately.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">28<sup>th</sup>
to 30<sup>th</sup> May: Integrate into KDE-Connect and do Integration Testing.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">30<sup>th</sup>
May: Take Feedback</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">1<sup>st</sup>
to 14<sup>th</sup> June: Implement Input Emulation.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">!4<sup>th</sup>
to 17<sup>th</sup> June: Module Testing.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">17<sup>th</sup>
to 22<sup>st</sup> June: Integration Testing.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">23<sup>rd</sup>
June: Release Alpha Version to friends and fellow developers.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">23<sup>rd</sup>
to 25<sup>th</sup> June: Midterm Evaluation.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">25<sup>th</sup>
June to 10<sup>th</sup> July; implement File syncing Feature.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">10<sup>th</sup>
July 20<sup>th</sup> July: Module Testing (Must be tested thoroughly).</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">20<sup>th</sup>
July to 30<sup>th</sup> July: integration Testing.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">1<sup>st</sup>
August: Release Alpha version 2.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">5<sup>th</sup>
August Release: Beta Version.</span></p><p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><br></span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">After GSOC:
I have other handy features and improvements for KDE-Connect such as
improvement of media control as done in this project (</span><a href="http://homepage.ntlworld.com/mark.harman/comp_wifiremoteplay.html"><span style="font-size:12pt;line-height:107%">http://homepage.ntlworld.com/mark.harman/comp_wifiremoteplay.html</span></a><span style="font-size:12pt;line-height:107%">), Shutdown, restart and logoff
buttons, a file browsing feature.</span></p>
<div class="MsoNormal"><span style="font-size:12pt;line-height:107%;font-family:"Times New Roman","serif"">
<hr align="left" size="2" width="100%">
</span></div>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%;font-family:"Times New Roman","serif""> </span></p><p class="MsoNormal">
</p><p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%;font-family:"Times New Roman","serif"">Working:</span></u></b></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%;font-family:"Times New Roman","serif"">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.</span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%;font-family:"Times New Roman","serif""> </span></p>
<p class="MsoNormal"><u><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in">About
Me:</span></strong></u></p>
<p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal">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.</span></strong></p><p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal"><br>
</span></strong></p>
<p class="MsoNormal"><strong><u><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in">Why
Should I be Selected?:</span></u></strong></p>
<p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal">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.</span></strong></p>
<p class="MsoNormal"><strong><span style="font-size:12pt;line-height:107%;font-family:"Calibri","sans-serif";border:1pt none windowtext;padding:0in;font-weight:normal"> </span></strong></p>
<p class="MsoNormal"><b style><u><span style="font-size:12pt;line-height:107%">Junior Jobs:</span></u></b></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%">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:</span></p>
<p class="MsoNormal"><span style="font-size:12pt;line-height:107%"><a href="https://github.com/build3r?tab=repositories">https://github.com/build3r?tab=repositories</a></span></p>
<p></p><br></div>