Student Application Template
Name Mayank Sharma
Contact/Email/IRC nick:
- IRC: maany
Website : http://devmaany.co/
Background:
I am an Electronics and Communications Engineering Junior at National Institute of Technology, Delhi with rich project experience, strong tech-stack and curiosity to learn more. I have been contributing to open source projects for over 3 years now. I am the Developer Tools Manager (manage : Infrastructure, Ansible, OpenStack, JIRA, Confluence) and the Release Manager for OpenMRS, the largest free and open source health IT project. I am also a 2 time GSoC’er and worked on creating a Cinematic Editor for jMonkeyEngine in 2014 and setting up an OAuth2 Authorization System (RFC 6749) for OpenMRS implementations in 2015. I have prior experience writing C++ libraries for Arduino/RPi. For eg, I wrote a UI framework that can be used to implement menu’s and handle interactions with them in a few lines of code. I also wrote a library for Sceptre, a gesture based universal remote controller I worked on. I recently got featured in Indian newspapers for for building a video conferencing tool that has a network payload of 300 bytes/sec. Then last week when I met with Daniel Pocock in Singapore during FOSSASIA 2016 and learned a lot about the efforts to replace Skype, Viber, Whatsapp etc with free and open source RTC projects, I immediately became interested to contribute towards it.
- Technical Background
- (Top 3 Programming Languages): Java (Oracle Certified Associate, Java SE 7 Programmer since Feb 2014, total exp : 4 yrs), C/C++ (4+ years), Html/ Javascript(4+ years) , Android (Coursera Specialization from University of Maryland, College Park, 3 years)
- Conferences/ Talks/ Hackathons :
- Become an OAuth2 Provider using Spring Security, FOSSASIA 16
- OpenMRS Platform 2.0 - REST-ful architecture and tech-stack, OMRS Annual Summit ‘15 ,Singapore
- Attended FOSSASIA 2015
Interested in : DebConf 2016, OSCON, FOSDEM, OMRS 16, FOSSASIA
Winner @ ?Tata and IITD Communication Technology Hackathon, Harvard University Hackathon, Boston
- Papers/ Publications
- Submitted a demo at AMIA 2016 focussing on OpenMRS Interperobility.
- Writing a paper on enhancing OAuth2 protocol ,to be published in journals/ conferences in Q4 2016 or Q1 2017.
- Courses/ Certifications
- Oracle Certified Associate, Java SE 7 Programmer
- Oracle Workforce Development Programme (Java SE 6)
- Hardware Security, University of Maryland College Park via Coursera
- Foundations of Computer Graphics, UC Berkeley via edX
Android Specialization , UMD via Coursera (Programming Mobile Applications for Android Handheld Systems 1 & 2, Programming Cloud Services for Android Handheld Systems : Spring)
- Algorithms : Design and Analysis, Stanford University via Coursera
- Relevant Coursework from NIT Delhi : Analog Communication, Digital Communication, Object Oriented Programming, Internet and Web Programming
Project title Improving voice, video and chat communication with free software
Project details:
I plan to work on creating a telepathy connection manager for SIP protocol with the help of reSIProcate : https://project.freertc.org/issues/37
I plan to specifically work on implementing voice and video calling features in telepathy-resiprocate.
- Telepathy is a modular communications framework that enables RTC via pluggable protocol backends (XMPP, IRC, SIP etc).
- Telepathy is a D-Bus API which is an Inter-process communication system, allowing different software components running in different processes and implemented in different programming languages to communicate. It is similar to having a client-server architecture to allow connection managers for different protocols to talk to different telepathy clients (Voice/ Chat client etc.)
- Telepathy components (protocol backends) can be written in any language that has a D-Bus binding (e.g. telepathy-glib is the C binding and telepathy-python is the python binding for the D-Bus API );
- With many Linux desktops having the Telepathy API as the default platform for communications, it is important to have good SIP support.
- Telepathy-rakia is based on SofiaSIP which hasn't been updated since 2011 and is kind of obsolete with no support
- The project focuses on writing a SIP connection manager for telepathy using reSIProcate which is an open source project focused on providing a complete, correct and commercially usable implementation of SIP. Some other advantages of reSIProcate include :
- IPv6 support
- thorough implementation of many newer RFCs including Outbound for stability in mobile and NAT environments (RFC 5626),
- support for TURN relay servers for reliable NAT traversal, compatibility with all the leading SIP server projects
Source : http://list.resiprocate.org/archive/resiprocate-devel/msg08972.html https://www.resiprocate.org/Main_Page
Synopsis: The project aims to provide implement voice and video calling features in telepathy-resipriate.
Benefits to Debian Debian uses Telepathy API for communications and once the project is in a stable releasable stage, debian users will be able to participate in SIP based voice/video communications through their desktops.
Deliverables: A debian package that provides a functional SIP based connection manager for Telepathy that supports IM/voice/video calling
Project schedule: how long will the project take? When can you begin work?
- Pre-Community Bonding and community bonding
- Read through IETF RFC-3261 : Session Initialization Protocol and understand the common requests and responses, protocol flow, use-cases and significance of the signalling terminologies required to establish, manage, terminate internet-telephony calls/text or multimedia sessions.
- Go through the reSIProcate API , source code and hack on examples to understand how it is implementing various concepts described in RFC-3261.
- Go through KDE’s Policies/ Binary compatibility issues with C++ and understand the types of changes that can be made
Understand the Telepathy API. Identify the hooks provided by the telepathy framework to implement connection managers and determine how reSIProcate will step-in at those places. I will use the ‘proof of concept’ ’https://github.com/resiprocate/resiprocate/tree/master/apps/telepathy as reference
- Week 1 (23 May - 29 June)
- Automatic TURN server detection using NAPTR lookups
- Develop and test code for mapping Telepathy API calls for IM (presence) to DUM API calls.
- Week 2 (30 June- 6 June)
- finish support for outgoing calls being answered
- support for outgoing calls with early media
- Week 3 (6 June - 12 June)
- add support for rejecting incoming calls
- add support for answering incoming calls
- finish support for hanging up calls
- Week 4 ( 13 June - 19 June)
- add support for DTMF sending
- add support for DTMF receiving
- Week 5 (20 June - 27 June)
- Refine existing code and prepare demo for mid-term presentations
- At mid-term, I wish to demonstrate audio call features of telepathy-resiprocate
- Week 6- 9( 27 June - 25 July)
- video support, using one of the strategies:
- sipXtapi
- WebRTC media stack with reCon
- WebRTC media stack with DUM instead of reCon
- Farstream
- video support, using one of the strategies:
- Week 10-11 (25 July-8 July)
- add configuration settings for manual codec selection.
- Week 12-13( 8 July -22 July)
- Final bug-fixing ,Documentation, Testing, Demonstration
- create a package of this code, potentially called telepathy-resiprocate, for the Linux distributions
- Pre-Community Bonding and community bonding
Exams and other commitments: My exams are scheduled to be over before GSoC begins i.e by 10th May. I might not be available from 25th April to 10th May due to final exams/ lab and project submissions
Other summer plans: I can focus completely on the project during the GSoC period and have no other commitments and can devote > 40 hours/ week
Why Debian?: Being an electronics student I am always fascinated by the lower level programming i.e close to hardware (writing drivers for devices I build, understanding low level implementations of hypervisors, and various other OS concepts). I have been using Ubuntu for quite some time now and I often wonder how different services/daemons/ processes etc are working behind the scenes and I’m constantly thinking of ways to tinker with them. I believe GSoC and open source contributions to debian are a great way for me to learn and expedite my understanding about all these concepts and becoming a better developer.
My previous Debian contributions: Here is a patch I have worked on to introduce the call hang-up feature in telepathy-resiprocate. More patches/commits are on their way!!
Are you applying for other projects in SoC? Yes. I will be applying for a project with OpenMRS as well.
