Implementing Conference Calls in Telepathy -- Draft Proposal --

Mayank Jha mayank25080562 at gmail.com
Sun Mar 16 06:08:26 UTC 2014


Name: Mayank Jha
IRC Nicks: mjnovice,mapyth on freenode.
Email: mayank25080562 at gmail.com
Blog: http://mjnovice.wordpress.com/
Github Profile <https://github.com/mjnovice/>
KDE identity Username: jhamayank


*Why are you the right person for this task?*
I am a keen FOSS enthusiast and a regular contributor. Am well versed with
the languages and technologies used in ktp-telepathy, and am using it for
quite some time now. I am passionate and dedicated to the work I undertake.

*To what extent are you familiar with the software you're proposing to work
with? Have you used it? Have you read the source? Have you modified the
source?*
I am very much familiar with telepathy, and have submitted 5-6 patches. Am
fairly comfortable with the codebase of different components of telepathy.

*How many hours are you going to work on this a week? 10? 20? 30? 40?*
I can easily manage 45 hrs a week during my summer holidays (May 19 to July
21, 2014), and 40 hrs a week when my college reopens.

*Do you have other commitments that we should know about? If so, please
suggest a way to compensate if it will take much time away from Summer of
Code.*
I have no other commitments during the summer holidays, ie May 19 to July
21, 2014. After that my classes would restart, but I can manage, and easily
devote the stipulated time to my work.

*Are you comfortable working independently under a supervisor or mentor who
is several thousand miles away, not to mention 12 time zones away? How will
you work with your mentor to track your work? Have you worked in this style
before?*
I am perfectly comfortable with working under a mentor sitting far away. I
have worked before as a student for the Google Summer of Code 2013.

*If your native language is not English, are you comfortable working
closely with a supervisor whose native language is English? What is your
native language, as that may help us find a mentor who has the same native
language?*
My native language is Hindi, but I perfectly comfortable and fluent in
English.


*Where do you live, and can we assign a mentor who is local to you so you
can meet in a coffee shop for lunch? *
I live in Forbesganj, India. It would be great if you could assign a mentor
who lives near to my place.


*Short Description:*
Currently telepathy supports 1-to-1 video call for various services like
gmail, facebook, jabber. But it lacks multiparty conference call support,
where you could have a google hangout like group video chat. This project
aims at implementing a full fledged video conferencing feature into
telepathy.


*Synopsis:*
Telepathy does not have conference call support. The main dependencies
telepathy-farstream and farstream implement the necessary RTP stream
handling and codecs for call video conferencing. Telepathy gabble is buggy
with respect to the features necessary to make the conference, so that
needs to be fixed and apart from that the UI needs to be done properly to
allow user to make conference calls.


*Implementation Details:*
To implement the conference calls, we need to rewrite the current code in
ktp-call-ui, to accomodate for conference calls.

For the UI, what we could do is, have the mainVideoWidget ( from the
qtgstreamer library ), as the main video widget, and the participants of
the conference (including me) have their thumbnails sort of videoWidgets at
the bottom of the call window arranged, and clicking on any of the bottom
widgets would allow you to see the enlarged view on the mainVideoWidget.
Also currently there is restriction on the frame per seconds rate of the
video being streamed ie 15. We could add a menu, which can have options to
modify the frame rate.
Since all of the work is done in Qt. So we would also need to check while
doing the User Interface, that the methods used are optimum, and
consistent, keeping in mind the efficiency of the feature.

The backend work, would involve rewriting the classes and the methods of
the ktp-call-ui to accomodate for multiple video streams. At some places
the fsconference is incomplete. This would involve rewriting, the
call-handlers and the call-managers, and also the classes defined in
ktp-call-ui/src/ as well as ktp-call-ui/libktpcall .


We might also need to make changes to telepathy-gabble the main connection
manager, to add support for conference protocol if it lacks.

Finally the conference feature needs to be tested rigourously through the
various test cases/scenarios. This I plan to do by making video calls with
an alias account, and prefereably with a second machine. And eventually
with real people.

 *Phases/milestones with dates:*

------------:Community Bonding Period:----------

*21 April - 28 April* :  I am going to re-discuss my implementation plans
with the telepathy community, incorporating in the suggestions recieved,
and clarifying the design issues (if any). Most importantly I would test
and judge the completeness of telepathy-gabble in terms of supporting
conference video calls. I would use the test app, modifying it if required,
to test the conference call functionality.

*29 April - May 06* : Getting familiar with the telepathy codebase in
particular ktp-call-ui, solve few bugs and getting acquainted with the
coding style/conventions.

*May 07 - May 14* : Start using the classes/methods in telepathyqt,
telepathy-farstream libraries pertaining to conference such as
fsconference, make test scripts and get to know how they work.

*May 15 - May 18 *: Planning out the changes needed as a part of the
rewrite of the call interface. Making small scale integration of the
methods into ktp-call-ui call handlers.


------------:Coding Period Begins:-------------

*May 19 - May 26 *: Make changes to the UI to incorporate multiple
videoWidgets, and make the neccessary changes to the callwindow, call
managers to allow for display of multiple video widgets.

*May 27 - June 4* : Check if the multiple videoWidgets made, work fine
without crashing. Implementing support for multiple audiosinks, and
separate volume controllers for each audio/video sink pairs.

*June 5 - June 19* : Integrating the multiple videoWidgets and their
respective audio/video sinks with callChannels, and rigourously testing it.


*June 20 - June 23* : Testing for consistency and efficiency of the Qt
methods used. Check for consistency in coding style/conventions.

*June 24 - June 27* : Discussing with the mentors about the current
development, and getting their reviews/comments on the reviewboard.

:::::::::::::Mid term deliverables:::::::::::;
The UI would be capable of handing multiple audio/video streamings.

*June 28 - July 12 :* Use protocols defined in telepathy-gabble to make
video calls. Adding in the missing methods for the wrappers for
fsconference and related methods defined in telepathy-qt and
telepathy-farstream.

*July 13 - July 20* : Rigourously testing the integration of the conference
gabble into ktp-call-ui .

*July 21 - August 1* : Getting reviews/feedbacks from telepathy developers
and making any changes suggested (if any).Testing the code by making actual
calls with kde developer community, on kdetalk.net

*August 2 - August 5* : Documenting the code. Testing the code by making
actual calls with kde developer community, on kdetalk.net

*August 5 - August 22* : Backup time for unforeseen delays.

Post GSoC ----------> Maintain ktp-call-ui and telepathy in general. Become
a part of the telepathy community.

*About Me*:
I am a FOSS enthusiast and a rabid open source contributor. I am currently
a 3rd yr undergraduate pursuing Computer Science at NIT, Durgapur, India .
I believe in the core principle of FOSS. Since I was introduced to the
warm, loving and inspiring world of Open Source I am in love with it, as
they offer great opportunity to both learn and teach.
I was a student for the Google Summer of Code 2013, with Ankur India and
developed a font-metric tool for Indic fonts which could differentiate
fonts on the basis of their aesthetic quality and allow font developers to
contribute more and better fonts.
I have regularly contributed patches to applications like *Konversation,
Kate, Telepathy, Trojita, Rekonq.* I also made a plugin for the Geany IDE,
which would allow people to submit their code online at SPOJ through the
editor.
I have also explored the Telepathy source code, and submitted few patches
too on the same.
I am skilled in C/C++, Qt, Python, HTML, JAVA, CSS and PHP.
I am very passionate and done to the task I take under, and I can devote 40
hours a week, to my work.
After GSoC I would continue and maintain my code and be a part of the
telepathy community, helping new people to join in the community.
Apart from remaining stuck to my laptop, I love to eat chocolates, listen
to Michael Jackson, sleeping and eating.


On Sun, Mar 16, 2014 at 12:17 AM, Diane Trout <diane at ghic.org> wrote:

>
> > *Synopsis:*
> > Kde telepathy does not have conference call support. The libraries (
> > telepathy-qt, telepathy-farstream ) on which it depends however has the
> > necessary classes and methods to allow you to integrate the conference
> > feature into the main UI. Main dependency telepathy-farstream is feature
> > complete. I would be implementing video conference support with
> connection
> > manager telepathy-gabble which also has most of the methods in it, and
> > might require some minor additions/changes. So, the UI needs to be done
> > properly to allow user to make conference calls.
>
> I might write part of that as:
>
> The main dependencies telepathy-farstream and farstream implement the
> necessary RTP stream handling and codecs for call video conferencing.
>
> >
> >
> > *Implementation Details:*
> > To implement the conference calls, we need to rewrite the current code in
> > ktp-call-ui, to accomodate for conference calls.
> >
> > For the UI, what we could do is, have the mainVideoWidget ( from the
> > qtgstreamer library ), as the main video widget, and the participants of
> > the conference (including me) have their thumbnails sort of videoWidgets
> at
> > the bottom of the call window arranged, and clicking on any of the bottom
> > widgets would allow you to see the enlarged view on the mainVideoWidget.
> > Also currently there is restriction on the frame per seconds rate of the
> > video being streamed ie 15. We could add a menu, which can have options
> to
> > modify the frame rate.q
>
> I think the UI of a main window plus strip of smaller thumbnails is a good
> way
> of handling this. And for a first implementation clicking to select who is
> the
> lead is reasonable. It would probably be a good idea to provide a good API
> to
> allow other selection algorithms. (e.g. signaling based off of whoever is
> talking).
>
> > For the backend we would need to make changes to telepathy-gabble the
> main
> > connection manager, in call-muc-channel to add support for conference
> > protocol if it lacks. However since the gabble MuC is implemented over
> > muji, and services like facebook and gmail does not support, video
> > conferencing over XMPP, as it is closed, so in the end we would be having
> > multi-party video conference on muji based service like jabber.
>
> I don't think there's any client that currently supports muji, It was just
> an
> experimental protocol. However, once the UI supports multi-party chat that
> will be useful when other protocols like COLIBRI are implemented.
>
> I'm not sure how specific the UI needs to be to the different multi-party
> protocols.
>
> Muji is based on a room concept - users join a room and then can join that
> conference.
>
> COLIBRI which implemented by Jitsi seems to be based around a conference
> organizer invites people into a conference.
>
> Diane
> _______________________________________________
> KDE-Telepathy mailing list
> KDE-Telepathy at kde.org
> https://mail.kde.org/mailman/listinfo/kde-telepathy
>



-- 
Mayank Jha
http://mjnovice.wordpress.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-telepathy/attachments/20140316/5e87a65d/attachment-0001.html>


More information about the KDE-Telepathy mailing list