jami-docs

Forked version of Jami documentation, see wrycode.com/jami-docs-demo
git clone git://git.wrycode.com/wrycode/jami-docs.git
Log | Files | Refs

gsoc.md (8282B)


      1 # GSOC
      2 
      3 The Ring project has previously participated in the Google Summer of
      4 Code program on 2016 and 2017 under the umbrella of the [Debian
      5 project](https://www.debian.org/) and the [GNU
      6 project](https://www.gnu.org/), mentoring 7 students during these two
      7 editions.
      8 
      9 This year we are willing to participate as an individual organization.
     10 Thus, we are welcoming every contribution to [Ring's source
     11 code](https://gerrit-ring.savoirfairelinux.com/#/admin/projects/) that
     12 could help to further develop Ring as well as our community. You can
     13 also contribute to Ring's documentation.
     14 
     15 ### Project ideas:
     16 
     17 #### A Node.js client for Ring
     18 
     19 #### Ring account provisioning server
     20 
     21 #### Auto video quality: Optimizing the auto video quality algorithm (RTCP/RTSP feedback)
     22 
     23 Likely mentor(s): Olivier, Philippe
     24 
     25 	For the moment ring uses a slider to set video stream quality disregarding the connection quality.
     26 	The student will explore the RTCP and RTSP protocols implementation in FFmpeg to later implement an automation of the video stream quality setting, though the informations furnished by the control packets.
     27 	- Renegotiate SDP depending on network conditions (change codec parameters or codecs, limit data flow, etc)
     28 	- Improve algorithm so it can maximize quality without going over a maximum bit rate, or maintain a certain quality regardless of network traffic
     29 	- Use other RTCP facilities to improve video quality (Ring only uses packet loss)
     30 
     31 #### Ring IoT
     32 
     33 Likely mentor(s): Anthony
     34 
     35 	The ring-client-iot project, started last year by a previous GSoC student, can be used as a base for a headless Ring client. Using it to start a new client, more focused
     36 	on little devices without direct human interaction, would enable new applications in the embedded field. From this point, multiple directions can be followed as a GSoC
     37 	project :
     38 	- Build Ring daemon and client-iot on ARM platforms (possibly including it in the Buildroot ecosystem).
     39 	- Add commands to read sensor values, trigger actions on system and eventual peripherals, etc.
     40 	- Improve manageability of accounts authorized to send commands to the device.
     41 	- Integrate the recent file transfer feature with IoT applications (display any picture received by Ring on a screen, etc.)
     42 
     43 #### Add video surveillance features to Ring
     44 
     45 Likely mentor(s): Maxim, Nicolas
     46 
     47 	The goal of this project is to enable remote video surveillance capabilities in Ring which would allow someone to keep an eye on their home, a child, etc. When a sound or movement event is triggered, a notification should be sent and the video should be recorded and stored on both the local and remote device to provide forensic evidence.
     48 
     49 	Tasks:
     50 
     51 	- Implement/integrate movement/sound detection algorithms in the Ring daemon.
     52 	- Leverage the features already present in Ring to implement the message notifications as well as the video streaming and recording.
     53 	- Design and implement the UI elements of at least one client that will define how this functionality is enabled and used.
     54 
     55 #### Refactoring User Interfaces
     56 
     57 #### Continue working on Telepathy client
     58 
     59 Likely mentor(s): Olivier
     60 
     61 	A previous work was initiated in 2016 for the integration of Ring in Telepathy [https://github.com/alok4nand/telepathy-bell], WIP:
     62 	1. Improving the Account Management, text messaging, and Contact Management: Making the connection  manager usable as a Ring client for text messaging for a non tech user
     63 
     64 	2. Exploring video calls: Currently the daemon handles video one frame at a time (not a video stream). If using dbus the actual frames are shared via shm (shared memory), would the video via frames model work with Telepathy/Empathy?
     65 
     66 	3. Implement trust requests (ie: friend requests)
     67 
     68 #### Ring as a WebRTC service
     69 
     70 Likely mentor(s): Guillaume
     71 
     72 	For all communications LibRing uses simple system sockets (mainly UDP, and TCP for data transfer).
     73 	The idea is to add a WebRTC connectivity to extend Ring and facilitate portage of Ring.
     74 	This project needs to add new settings to indicate how and when to use WebRTC sockets and re-design most of libring low-level implementations.
     75 
     76 	Example of tasks to be done:
     77 	- Identify impacted code.
     78 	- Make a WebRTC small client as validation test.
     79 	- Implement WebRTC connectivity at low-level.
     80 	- Change libring API and settings if needed.
     81 	- Modify/Test a currently supported client to validate the full chain.
     82 
     83 #### Peer to peer file transfer
     84 
     85 Likely mentor(s): Guillaume
     86 
     87 	Current code base uses a TURN only connection (TURN/TCP/TLS) to manage a peer connectivity for our reliable data transfer feature.
     88 	TURN is a relay protocol to solve connectivity issues between peers behind NAT or firewall. The side effects are latency and non-scalability.
     89 
     90 	To reduce these effects we want to introduce a non-relay connection, true P2P, usable for hosts on the same network as example.
     91 	To make connection transparent to the application (so to the user), the true P2P-way is tried as first stage and the TURN-way is used as fallback.
     92 	This change doesn't require to change the libring API. It's only an implementation change. The data-transfer protocol (i.e. data exchanged over DHT at connection request) could be changed.
     93 
     94 	Example of tasks to be done:
     95 	- Identify impacted code.
     96 	- Create a validation test.
     97 	- Implement the true P2P in data-transfer code.
     98 	- Support the TURN fallback.
     99 	- Verify the data-transfer using validation tests created earlier.
    100 
    101 #### Conference server
    102 
    103 #### Matrix integration
    104 
    105 Likely mentor(s): Pierre, Anthony
    106 
    107 In the same spirit as <https://github.com/matrix-org/matrix-appservice-irc> or <https://github.com/jfrederickson/matrix-xmpp-bridge>, the goal of this project is to integrate Ring to Matrix as well as possible.
    108 That way, communication between users of Ring and users of Matrix would be possible.
    109 
    110 #### Redesign of the media system
    111 
    112 Likely mentor(s): Philippe, Andreas
    113 
    114 	Ring's media system is massive and needs an overhaul.
    115 	The goals of this project are:
    116 	- Implement zero-copy video frame buffer manipulations (ex: OpenGL/OpenCL, VDPAU).
    117 	- Update the usage of Ring's media APIs and codecs to conform to current standards,
    118 	- Provide a cleaner and better design for platform specific implementations and reduce conditionally compiled code clutter.
    119 	- Extend the audio API to allow for client implementations on platforms where media device access is restricted to client specific APIs.
    120 
    121 #### Create a clean wrapper for AndroidTV's API.
    122 
    123 Likely mentor(s): Pierre, Adrien
    124 
    125 	For now, Ring is the only video chat client available on AndroidTV. This client is more basic than the Android one mainly because it's hard to get good quality and maintainable code with the current state of the AndroidTV framework.
    126 	Right now, the Ring AndroidTV client contains a wrapper for AndroidTV's API, but there's still boilerplate code.
    127 	The goals of this project are:
    128 	- To identify improvements that can be made on this wrapper
    129 	- To create an API for Leanback easily usable in the context of Ring (will leverage any knowledge on design patterns and API design)
    130 	- To implement the new API in Ring
    131 	- To create an external library, independent of Ring and usable in the context of any AndroidTV application.
    132 
    133 ------------------------------------------------------------------------
    134 
    135 ### Contributions GSoC 2016:
    136 
    137 1.  Improving distributed and secure communication using free software
    138 	[(link)](https://summerofcode.withgoogle.com/archive/2016/projects/4886025126019072/)
    139 2.  Indexation over a distributed network
    140 	[(link)](https://summerofcode.withgoogle.com/archive/2016/projects/6573755878866944/)
    141 3.  Ring project
    142 	[(link)](https://summerofcode.withgoogle.com/archive/2016/projects/6477112403820544/)
    143 4.  Telepathy Connection Manager for Ring protocol
    144 	[(link)](https://summerofcode.withgoogle.com/archive/2016/projects/5047255782391808/)
    145 
    146 ### Contributions GSoC 2017
    147 
    148 1.  Setting up unit tests for SIP calls in Ring
    149 	[(link)](https://summerofcode.withgoogle.com/archive/2017/projects/5836252280520704/)
    150 2.  Ring - Create a C++ plugin for Ring
    151 	[(link)](https://summerofcode.withgoogle.com/archive/2017/projects/5704614754123776/)
    152 3.  Ring: NodeJS Plugin for Seamless Cross-platform Client Development
    153 	[(link)](https://summerofcode.withgoogle.com/archive/2017/projects/6532521776906240/)