Implementing Conference Calls in Telepathy -- Draft Proposal --

Mayank Jha mayank25080562 at gmail.com
Sat Mar 8 07:08:25 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

*Short Description:*
Currently kde 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:*
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. The main dependency telepathy-gabble 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.


*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 integration of 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 .


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.


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).

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

*May 07 - May 14* : Identifying the places in telepathy-gabble which might
need rewrite to complete the support for muc. Try to use muji over jabber
MUC (chat room). 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. Also try to
use muji over jabber MUC (chat room).

*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 *: Add missing Muji protocol features into
call-muc-channel in gabble and add respective fsconference methods in
ktp-call-ui.

*May 27 - June 4* :  Test the protocol implemented and add in missing stuff
if any.
 *June 5 - June 19* :Implement multiple video widgets, in the UI. 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. 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 in the
UI.

*June 28 - July 12 : *Rewriting call handlers, call managers in ktp-call-ui
to accomodate for the conference feature.

*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.

::::::::::::::::::End term deliverables:::::::::::::::::
Multi-party conference call integrated support for muji based jabber in ktp.

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 Fri, Mar 7, 2014 at 11:13 PM, Martin Klapetek
<martin.klapetek at gmail.com>wrote:

> Hey,
>
> thanks for that, looking good. Couple comments below.
>
>
> On Fri, Mar 7, 2014 at 6:24 PM, Mayank Jha <mayank25080562 at gmail.com>wrote:
>
>> 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
>>
>> *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.
>>
>
> Note that "telepathy" is not the same as "kde-telepathy"/"ktp". I think
> you want to say "ktp" above.
>
>
>>
>> *Synopsis:*
>> 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. The main dependency telepathy-gabble 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.
>>
>
> Same here. I think Telepathy does have conference call support (in the
> spec at least anyway), so you want to say "KDE Telepathy" here again.
> Telepathy-gabble is on the other hand not a dependency of anything and we
> wouldn't use it directly in any way.
>
>
>>
>> *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.
>>
>
> The above mixes several things together. "The backend" would be gabble
> here and you'd need to place all/most of the farstream code there I think.
>
> "At some places the fsconference is incomplete. This would involve
> rewriting," --> do you mean rewriting fsconference?
>
> Also I'd like to know 140% beforehand if there will be a need to edit
> gabble in any way because if yes, I think that will take lots and lots of
> your time as it's a completely strange GObject code and this would bump
> your timeline considerably, which might even result in your failure.
>
> Finally, note that without any backend support (not sure if any connection
> manager has support or not) you won't be able to test this properly so in
> your timeline, backend work should imho come first or hand-in-hand with the
> UI changes so you can use one to test the other and vice-versa. Your
> proposal lists gabble work far too away imho (if needed).
>
> Overall I think the proposal is a bit ambitious, though I'd like to have
> George's and Diane's input on it too. I may be wrong on things.
>
> Cheers
> --
> Martin Klapetek | KDE Developer
>
> _______________________________________________
> 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/20140308/03cc1a44/attachment-0001.html>


More information about the KDE-Telepathy mailing list