Name: Alok Anand
IRC: Alok (on OFTC) / alokanand (on Freenode)
Blog: Bitlog
Github: https://github.com/alok4nand
Background:
I am a B.Tech Computer Science student studying in Guru Ghasidas University Wiki page, located in Bilaspur view in OpenStreetMap, in India. I have been using C, C++ and Python for around 5-6 years now and hence, quite proficient in them. I am currently working on an academic project which secures file transfer operations and I'm also familiar with various networking protocols. I have always been interested in security and privacy of communications. Recently, I successfully completed Season Of KDE 2015. The project involved writing a Security Handler Version 5 Revision 6 for Poppler. My contributions can be found here: https://goo.gl/q1fzMZ
Mailing Lists subscribed to :
- Free-RTC Mailing Lists
- Telepathy API
- Debian Mailing Lists:
- reSIProcate:
Relevant IRC Channels :
- On Freenode:
- #ring
- On OFTC:
- #debian-soc
- #debconf
Hardware: I use a Lenovo G505s laptop.Its an AMD A10-5750M powered laptop with 8GB RAM, 2GB Radeon Graphics.It is equipped with a webcam. I prefer to do my work from home using laptop but I also have access to computer lab of my university.I also own a RaspberryPi2 2 Model B+ and a Tegra Note 7(android tablet).
Operating System: I use Arch Linux as my primary operating system in my laptop. I also have Raspbian running on the Pi.
Internet Connection: I have a unfiltered and proxyless 5 Mb/sec Wireless Broadband connection at home.There are several unrestricted hotspots in my locality and University.If required I can use a 3G mobile data connection using usb modem.
Development tools: I use Atom as my code editor along with GCC5 v5.3.0.I use GDB for debugging.Lint in Atom,valgrind for checking memory errors
Relevant tools:
Resources (if any):
Project title : Create a Telepathy Connection Manager for Ring protocol
What makes you the best person to work on this project?
- I like contributing to open source and have prior experience.
- I have the required skills and I am a fast learner.
- I have good communication skills and can clearly and concisely communicate development related issues.
- I am passionate about Security and Privacy in the online world. The idea of improving voice, video and chat communication with free software, will help me become familiar with the functioning of real-world applications. I want to work on making secure software easily accessible and understandable to the end user. Working on the Ring project will give me an excellent opportunity to do so and at the same time enhance my skill and knowledge which in turn will help me get things done in future.
Project details: a more detailed description.
Create a Telepathy Connection Manager for Ring protocol
Telepathy is the framework for Real-time communication on the major Linux desktops, including GNOME and KDE.Telepathy provides protocol backends for most popular protocols including: Jabber/XMPP/Jingle, link-local XMPP, SIP, Yahoo/AIM and IRC via a unified D-Bus API.
There is no central Telepathy D-Bus service in Telepathy. Instead there are several connection manager services, activated on demand. A Telepathy Connection Manager (CM) allows the Telepathy front-end (for example, the Empathy softphone) to use any arbitrary protocol. There are already CM implementations for SIP, XMPP, Telegram and other networks.
A major benefit of doing this is that a Ring CM for Telepathy could be installed by default in new Linux installations. This may not be possible for the standalone Ring phone. This would mean millions of people would have Ring support without having to download or install any package manually.
Benefits to Debian
- Telepathy API users of Debian will be able to use Ring without the need to install Ring Client.
- Ring's unique peer to peer user discovery and connection will help users maintain a level of privacy and security for communications in different environment.
Deliverables: quantifiable results
- A working Telepathy Connection Manager for Ring protocol
Work Product Link:
Project schedule: how long will the project take? When can you begin work?
April - May 22:
- Community Bonding Period
- Familiarization with the Telepathy Framework
- Familiarization with Telepathy Qt Library
- Finalization of working plan and skeleton code
Week 1 (May 23 - May 30):
- Successfully installed and configured reSIProcate.
- Successfully installed Ring.
- Created a fork of reSIProcate and started working on branch "telepathy-voice-video" -Committed Mayank's work
- Made a simple fix to allow compilation.
- Studied about Qt Slots and Signals mechanism.
- Reading documentation of reSIProcate and other telepathy components
- Communicated with ring interns on CM for Ring regarding its name and protocol name.
Week 2 (May 31 - June 6):
- Understanding documentation of patch provided by Mayank Sharma.
- Started working on implementation of call hangup feature for reSIProcate CM.
- Figuring out how to test call hangup feature.
- Setting up Lumicall and understanding sip5060.net settings.
- Understanding the logs that get generated by telepathy-resiprocate CM.
- Familiarizing with empathy-debugger and D-feet.
- Attempting to start empathy-call ui during making/receiving calls.*Still Working*.
- Writing skeleton code (Cmakelists, service file, manager file) for CM for Ring.
Week 3 (June 7 - 14):
- - Improved onhangup() function in reSIProcate
- Completed the onParticipantTerminated() function and submitted a pull request in reSIProcate
- - Improved onhangup() function in reSIProcate
Week 4 (June 15 - June 21):
- - Discussing road-map for Ring CM or Telepathy-bell. I will be using d-bus calls to ring-daemon's D-bus API to easily provide functionality of ring using connection manager.
- Practiced some QtDBus examples and read the documentation.
- Implementing Protocol object for Ring CM
- Implemented main function for telepathy-bell service.
- Started implementing connection object for Ring CM.
- Planned details of new account creation feature for Ring CM.
- Revisited the parameters for Protocol object.
- - Discussing road-map for Ring CM or Telepathy-bell. I will be using d-bus calls to ring-daemon's D-bus API to easily provide functionality of ring using connection manager.
Week 5 (June 22 - June 28):
- Create a repo of working copy of basic connection manager and pushed it to ?GitHub.
- Added Ring Daemon Interface to telepathy-bell.
- Mid-term evaluation.
- Testing and Debugging.
- Documenting the work done.
Week 6 (June 29 - July 6):
- Fixed Service file Installation : This fixed the service file installation error.
- Added Avatar Aliasing and Request Interface in Connection Object : Avatar and Alias are required for easily looking at self contact in the client accounts
- Changed protocol name from ring to Ring : As a name it makes sense to use "Ring" instead of "ring".
- Added Ring Daemon Interface Class: This class will be used to manage the ring-daemon.
Week 7 (July 7 - July 14):
- Completed all Ring Daemon Interfaces initialization: Some essential interfaces were missing, and a separate function was added to initialize all the interfaces needed to work with Ring Daemon.
- Fix the order of initialization in Constructor: DBus Interface needed to be initialized first for the following functions to work correctly.
- Fixed deactivateService data type incompatiblity : A mistake in type incompatibility of return type to interface function was realized and fixed.
- Fixed missing ; in initialize interfaces function: Silly typo. Semi-Colon key is my enemy.
- Added ringdaemon.cpp to Sources: Add to sources variable in CMakeLists.txt.
- Updated Parameters(added RingID and accountID): Attempting with parameters that can be worked with to create a connection.
Week 8 (July 15 - July 22):
- Added 'account' param for Account Display Name and updated Parameters : After going through documentation carefully, it was clear that account parameter could help in making sure that a certain named interface is created in org.fredesktop.Telepathy.?AccountManager which could help later in re-setting parameters.
- Added parameters.cpp to sources : Added some functions to work and try with connection parameters.
- Using Parameters::getParameters() to setParameters class : This function was implemented earlier and after adding parameters to sources this can be used.
Week 9 (July 23 - July 30):
- Replaced std::string's with QString's for parameters : Initially std:string was used, as the parameters are in QString it makes sense to use QString.
- Implemented createRingAccount() and value() : These functions are the first attempt to create a ring account in case parameters are properly entered by user. // TODO find a better way to display parameters entering information to user.
- Implemented update Parameters() and setRingID via AccountID() : If the accountID is known the RingID can be easily retrieved and updateParameter function updates that stored account data for quick reuse later.
- Icon for Gnome based client Empathy : As I am using Empathy, this was the only one I could test with. When icons used are different than hicolor this may not work.
- Implemented setAccountIDviaRingID() and improvemens in value() and updateParameters() : The function setAccountIDviaRingID() will find the accountID using user entered ringID if exists and then update the value.
- Execute gtk-update-icon-cache: Requirement to make the icon visible in client instantly.
- Implemented changes in Protocol::createConnection() to use functions Parameters class : After completing the above functions, createConnection calls them as required.
- Removed use of RingDaemon class and reorganized functions(added setRingIDandAccountID) : Parameters class did not necessarily need Ring Daemon class.
- Implemented connect and disconnect : Attempting to implement connect and disconnect from client.
Week 10-11 (July 31 - Aug 15):
- Base Implementation for ring call channel : Begin Implementing call channel class to work with making and receiving calls.
- Corrections in ringcallchannel constructor : Fixed wrongly written class names.
- Implemented getcontactattributes() and inspecthandles() : These functions are required by connection interface to manage handles, in this case contacts.
- Implemented requestHandles() and set properties for text and call channel : Added properties of all the text and call channels that are needed to be later used in channel related functions. Also requestHandles() is used to create handles when unavailable. A function to create individual handle ensureHandle still needs to be done.
- Fixed Disconnect : Corrected the place of setStatus() and made changes to onRegistrationStateChanged() to call doDisconnect() when using the Accounts.
Beyond August 25:
- Keep contributing to the community
Exams and other commitments:
- My summer vacations start in May and will continue upto August. I have no other commitments during the GSoC time-period.
Other summer plans:
- I have no other plans for summer and will easily be able to devote 40 hrs/week to the project.
Why Debian? Why are you choosing Debian? What attracts you about Debian? :
- I am surrounded by people who use Debian. I have been using Debian based distros for quite some time now. As a user, I feel they are very stable because of their Debian back-end. Debian's easy to use “apt” tool is also an additional plus point for its users. Moreover, the proposed project this year, for improving voice, video and chat communication with free software is very relevant and the need of the hour. I would like to do my bit, for making the online world secure, by contributing to Ring under the Debian project.
My previous Debian contributions: Please give a list of your existing contributions to Debian, if applicable
- I am new to Debian. But, I plan on going a long way.
Are you applying for other projects in SoC?
- I am also applying to KDE with a self-proposed idea.