xpra icon
Bug tracker and wiki

Changes between Version 25 and Version 26 of ProjectIdeas


Ignore:
Timestamp:
01/12/17 09:53:33 (3 years ago)
Author:
Antoine Martin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ProjectIdeas

    v25 v26  
    3737
    3838           '''Difficulty''': medium/easy\\
    39            '''Keywords''': Wayland, compositor, X.org, X11, network transparency
     39           '''Keywords''': Wayland, compositor, C, X.org, X11, network transparency
    4040}}}
    4141
     
    4444       The applications running on the server need to receive mouse and keyboard input. It is easy to map the client-side mouse-input to mouse events on the server side, but it's more difficult for the keyboard, because the keyboard mapping on the client side can be different from one client to another (US, french, german, ...). What transits over the wires are keycodes (the physical position of the key on the keyboard), and they are translated back to keysyms (the keymap-dependant symbol produced when the key is pressed) on the server side. Xpra uses obsolete X APIs to do this translation work, and often gets it wrong. In addition, running virtual machines with e.g. {{{VirtualBox}}} inside Xpra adds another layer of keyboard translation, and the end result is often wrong.\\
    4545       The tasks for this project are:
    46            * Learn and understand the X11 keyboard input system (specifically {{{Xkb}}})
    47            * Re-implement keyboard mapping logic using {{{Xkb}}} instead of core keyboard API (probably using the [http://xkbcommon.org/doc/current/ xkbcommon] library)
     46           * Learn and understand the X11 keyboard input system (specifically {{{Xkb}}} and {{{uinput}}})
     47           * Re-implement keyboard mapping logic using {{{Xkb}}} instead of core keyboard API (probably using the [http://xkbcommon.org/doc/current/ xkbcommon] library), OR:
     48           * Implement input devices in userspace using uinput, see #173
    4849           
    4950           '''Difficulty''': hard\\
    50            '''Keywords''': Xkb, X11, input, C
     51           '''Keywords''': Xkb, X11, uinput, C
    5152}}}
    5253
     
    8182== 5) Latency improvements through hardware-accelerated video decoding ==
    8283       Remote desktop software is very sensitive to latency. Too high of a latency can kill the user experience. Latency sources are obviously the network, but also and usually more importantly, the video encoding on the server side, the video decoding on the client side, and the video presentation on the client side.\\
    83        We have preliminary support for OpenGL presentation on the client side (doing YUV to RGB conversion and drawing), which helps with latency. However, there is the technical possibility of offloading the video decoding process to the GPU using such APIs as VAAPI (Linux) or DxVA (Windows), possibly both through libva which we already use. This project is about improving latency of Xpra, with the following tasks :
     84       We have preliminary support for OpenGL presentation on the client side (doing YUV to RGB conversion and drawing), which helps with latency. However, there is the technical possibility of offloading the video decoding process to the GPU using such APIs as VAAPI (Linux) or DxVA (Windows), possibly both through libva. This project is about improving latency of Xpra, with the following tasks :
    8485           * Offload video decoding to the GPU through libva
    8586           * Make this work on Windows clients as well as Linux clients
     
    9293
    9394{{{#!div class="box"
    94 == 6) Encryption ==
    95        At the moment, Xpra can use AES encrypted communication over TCP. It supports password authentication, but the key exchange system is open to MITM attacks. \\
    96        Xpra supports a mode where it connects through an SSH connection. That mode is good, but doesn't answer all needs: it requires an ssh server and each user connecting to the session to have shell access on the system, no matter what application needs to be run.\\
    97        The objective of this project is to implement a secure transport mechanism, based on known good cryptographic algorithms.\\
    98        Tasks are:
    99            * Implement secure key exchange
    100            * Implement correct AES CBC mode
    101            * Assess performance impact in terms of latency, bandwidth, and CPU requirements
    102            
    103            '''Difficulty''': Medium, knowledge of good crypto practices\\
    104            '''Keywords''':  (py)crypto, AES
    105 }}}
    106 
    107 {{{#!div class="box"
    108 == 7) Win32 server (shadow mode) ==
     95== 6) Win32 server (shadow mode) ==
    10996       
    110        Xpra's client works on many platforms, but the server is restricted to Linux. This means that Xpra can only be used to remotely access a Linux-based desktop. It would be very interesting to make Xpra's server able to work on a Windows machine. Currently there is preliminary support for this feature but it uses polling which is very inefficient.\\
     97       Xpra's client works on many platforms, but the server is only optimized for running on Unix-like operating systems (ie: Linux). This means that Xpra can only be used to remotely access a Linux-based desktop. The Microsoft Windows version of the server has a lot of room for improvement. Currently there is preliminary support for this feature but it uses polling which is very inefficient.\\
    11198       This project is about improving support for Windows-based server, so that it achieves satisfying performance. Tasks would include:
    11299           * Implement screen update detection code so xpra can forward only the parts of the screen that have actually changed (as it does on *nix)
    113            * Implement win32 socket code so "xpra info" can be used on win32 servers
     100           * Implement correct named pipes support code so "xpra info" can be used reliably on win32 servers
    114101           * Rely on benchmarks to assess which improvements to make and
    115102        Applicants are required to have some Windows development experience.