SummerOfCode2016 StudentApplications BalramP
Name: Balram P
Contact/Email/IRC nick:
Email: balbbrl@gmail.com
Twitter: @pbalram
IRC nick: balram
My Blog: http://balrampariyarath.wordpress.com/Work Product: https://wiki.debian.org/SummerOfCode2016/WorkProduct/Balram
Background:
I am a third year Engineering Student who fell in love with linux systems upon our first encounter(4 years back). I have been involved with different distros (Ubuntu being the first, Mint, Arch, Kali, Debian and lot other custom versions), tried different flavours and shells and finally fell for Jessie (Debian 8).
Now, to speak about me, I study at Govt. Model Engineering College, Cochin - India and am a startup founder (?GreyCodes and Spenwise Prepaid Debit Cards), web developer, well versed in C, C++, Python, Basic Java, HTMl, CSS, JS, PHP, MVC Structure, Django, ?CodeIgnitor, Android App Development, Bootstrap and materializecss. I have also worked in Ruby sometime back.
Currently I am more focused on to linux systems and working on a custom Debian based OS for our college.Project title: ?YooHoo, The Perfect Assistant.
Project details: ?YooHoo, is a chat engine, which supports text, audio, video chats and file sharing. It is to facilitate one-to-one chats, group chats, create events and manage them online(assign tasks and schedule deadlines etc). It has also got a integrated set of bots, for mainly connecting with wiki.debian, packages.debian etc to provide instant help for queries, suggest apps etc. It also include provision for creating new bots using custom codes.
Synopsis:: A better chat Engine for Debian.
Benefits to Debian: Will help to provide automated help to its users (by the bot) as well as ask new queries, report bugs etc, thus bridging the gap between a normal user and Debian system.
Deliverables: A video chat engine which at least support text chat as well as an integrated wiki bot for assistance.
Project schedule: The work can be stated anytime from now, but need mentors help to finalize the timeline. The below one will be updated after discussing with mentors.
- 1.Decide upon the language and finalize it with the mentor since I have my doubts (C++,Python or Ruby) (2 days). 2.Build a video chat application module (2-3 weeks). 3.Build the text chat module with group and other features (including bots) (2-3 weeks). 4.Integrate both module to form a single application (1 weeks). 5.Convert into proper deb package with minimum dependencies (2 weeks).
Exams and other commitments: University exams from April 4th to 18th.
Other summer plans: No plans as of now.
Why Debian?: Well, Once you start exploring her, your curiosity never ends. Of all the other distros I have used, I learned more on linux by using Debian. She is simple, minimalist and is highly educative in a learn by doing approach.
My previous Debian contributions: I have contributed to a customized Debian image for our college (it was called MOX - MEC Linux), worked using gem2deb for creating ruby based apps on Debian (nothing worth mentioning).
- Are you applying for other projects in SoC? No
Work Statistics
Week 1
- Start Configuring ReSIProcate in Debian Jessie.
- Enable autoconf subdir_object for creating new files in sub-directory instead of parent root (pull request #43).
Week 2
- Complete configuring reSIProcate on Debian.
- Submit pull request #43. Travis CI Build failed due to bug in autoconf, pull request was accepted and merged with master repo.
- Start working on Configuring reSIProcate on Ubuntu 14.04.
Week 3
- Start working on reSIProcate with Empathy. Couldn't establish connection with the given credentials. It was later fixed after resetting the account credentials. It took almost a week to fix both to fix the errors and realise the error in account details.
- Familiarised with bustle, d-feet (D-bus debuggers). They were used for checking the connection error.
Started the work on a GNOME shell plugin which can easily connect to the SIP server using reSIProcate. Aimed to ease the connection setup and improve User Experience (?GitHub link will be updated soon).
Week 4
- Started working on reConServer and librecon.
- The Master repo had an unmerged commit. README was properly updated and successfully configured in Ubuntu 14.04.
- Jitsi is used for testing the service.
- Review the way DTMF events are notified in both.
- Make similar methods for handling the SIP "MESSAGE" method in librecon.
Week 5
- Continue working on reConServer.
- Working on SIP "MESSAGE" methods in librecon.
Week 6
- Started working on iChat Gateway: a SIP Gateway designed to allow communication between the Mac OS/X iChat client and standard SIP clients for audio calling purposes. It is build based on Gloox 0.9.8.
Week 7
- Update iChat gateway: upgrade support to gloox 1.0.16 from 0.9.8.
Week 8
- Continue working on iChat gateway gloox library updates.
Week 9
- Continue working on iChat gateway gloox library updates.
Week 10
- Integrate the code with Prosody and prepare the code for testing on lab server. Some changes has to be made to the existing code to accommodate TLS Certificate verification and connection.
Week 11 & 12
- Deploy and test the code on lab server. Exchange messages between XMPP and SIP accounts.
Tested using Jitsi, Conversations.im, ?LumiCall.
Weekly Reports Sent
GSoC 2016 Week 1 Report - May 29
GSoC 2016 Week 2 Report - Jun 09
GSoC 2016 Week 3 & 4 Reports - Jun 20
GSoC 2016 Week 5 & 6 Reports - Jul 09
GSoC 2016 Weekly Reports - Jul 27
GSoC 2016 final Weekly Reports - Aug 15
Contributions and Configurations
Dummy Branch
- This is the actual branch that I used for my first test runs. They were further broken down to stages so that simpler pull requests can be made. No Actual Pull request is made from this branch.
Branch: https://github.com/balumenon96/resiprocate/tree/b-fix-ichat-gw/
Pull Requests
- enable subdir-objects to access subdirectory for build/debian.sh
#43 (merged): https://github.com/resiprocate/resiprocate/pull/43
- Remove ambiguity in ichat-gw.cxx, minor bugs in IPCThread.cxx and Server.cxx
#57 (merged): https://github.com/resiprocate/resiprocate/pull/57
- update gloox parameters from v0.9.9.8 to v1.0.16
#58 (to be merged): https://github.com/resiprocate/resiprocate/pull/58
Setting up reSIProcate in Debian Jessie
- This was done referring Mateus Bellomo's wiki update and Daniel Pocock's instructions.
- Prerequisites:
- GNU C++ Compiler and tools
- Telepathy-Qt (not using apt-get)
- Build Telepathy-Qt:
We are not installing telepathy-qt directly from apt-get as it doesn't contain telepathy-qt4-service shared library.
$ mkdir ~/telepathy-qt-stuff $ cd ~/telepathy-qt-stuff $ git clone https://github.com/dpocock/telepathy-qt-debian $ cd telepathy-qt-debian $ git checkout jessie-build-all-shared $ cd ..
Download the tar from http://http.debian.net/debian/pool/main/t/telepathy-qt/telepathy-qt_0.9.6.1.orig.tar.gz to the telepathy-qt-stuff folder.
$ tar xzf telepathy-qt-0.9.6.1.orig.tar.gz $ cd telepathy-qt-0.9.6.1 $ [ -d debian ] && echo "warning: debian/ already exists!" $ cp -r ../telepathy-qt-debian/debian . $ dpkg-buildpackage -rfakeroot -i.* -j13 -us -uc $ cd .. $ ls *.deb
- This shows a few packages that needs to be installed. Install them using the following command.
$ dpkg -i libtelepathy-qt4-2_0.9.6.1-2_amd64.deb libtelepathy-qt4-dev_0.9.6.1-2_amd64.deb libtelepathy-qt4-farstream2_0.9.6.1-2_amd64.deb
- Now you're done and ready to install reSIProcate. To see the packages installed use:
$ dpkg -l | grep telepathy-qt
- This shall list the packages installed
- libtelepathy-qt4-2:amd64
- libtelepathy-qt4-dev
- libtelepathy-qt4-farstream2:amd64
- Build reSIProcate:
$ git clone https://github.com/resiprocate/resiprocate $ cd resiprocate $ apt-get install libpq-dev dh-autoreconf $ apt-get build-dep resiprocate $ apt-get install -t jessie-backports libradcli-dev $ ./build/debian.sh $ make
Setting up reConServer in Debian Jessie and Ubuntu 14.04
- First you need to need to install the build dependencies. Note that reConServer needs reSIProcate 1.8.10 or above.
$ sudo apt-get install libresiprocate-1.x-dev librecon-1.x-dev libsipxtapi-dev libresiprocate-turn-client-1.x-dev
- Then, follow the steps below to build the project. The CPPFLAGS are necessary.
$ git clone https://github.com/resiprocate/reConServer.git $ cd reConServer $ autoreconf --install $ ./configure CPPFLAGS="-I/usr/include/sipxtapi -DDEFAULT_BRIDGE_MAX_IN_OUTPUTS=10 -D__pingtel_on_posix__ -D_linux -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DRESIP_TOOLCHAIN_GNU -DRESIP_OSTYPE_LINUX -DRESIP_ARCH_X86_64 -DHAVE_sockaddr_in_len -DUSE_CARES -DUSE_SSL -DUSE_IPV6 -DHAVE_EPOLL" $ make
Working with iChat SIP gateway for audio calling purposes
- The iChat-SIP gateway is designed to allow communication between the Mac OS/X iChat client and standard SIP clients for audio calling purposes. It also provides the ability to register iChat users to a SIP registrar server for routing purposes.
- Prerequisites:
- GNU C++ Compiler and tools
SVN Client - http://subversion.tigris.org/
OpenSSL 0.9.8 libraries - http://www.openssl.org/
GNU Perfect Hash function (gperf) generator - http://www.gnu.org/software/gperf/
Perl Compatible Regular Expressions (PCRE) library - http://www.pcre.org/
GNU TLS Library (used by gloox) - http://www.gnu.org/software/gnutls/devel.html
- Add the following lines to build/debian.sh on respective lines to support gloox library and build the ichat gateway from root tree.
CPPFLAGS = "... -I/usr/include/gloox ..." ./configure ... ... --with-ichat-gw \ ...
Thanks to
- Daniel Pocock, Mentor.
- Jakob Schröter, camaya.net, Home of gloox – The Portable XMPP Engine.
- Scott Godin, for some valuable tips.
- Fellow GSoCers, for their help and supports, especially Mateus (his wiki was a real help when I started my work), Udit, Alok and Keerthana.