Google Summer of Code 2018 ideas


The following ideas are our proposals to participate this year (2018) in the Google Summer of Code program.

IDEA 1: Tasks scheduler for QVD

Create a new tool within QVD administration tools (Web panel and/or Command line interface) to manage actions as response to certain events.

Examples:

  • One hour after user disconnection -> Stop Virtual machine
  • It’s 00:00 -> Stop a list of Virtual machines
  • It’s 00:00 -> Publish latest generated Disk images
  • User’s IP address is not in 192.168.58.0/24 range -> Deny user access
  • It’s not monday to friday from 8:00 to 16:00 -> Deny any users access

The development could be in a first stage perform as a configuration file, then store it in database and create some CLI commands to manage it and finally create a section in the web administration tool to manage it graphically.

To perform the UI part of this feature, will be necessary take care UX principles including a little previous research.

Technologies/Knowledge: Perl, Javascript, BackboneJS, CSS, SASS, UX

IDEA 2: QVD chat tool

Develop a way to communication between QVD administrators and users (desktops).

The proposal is to develop a chat tool between web administration tool and desktop. This feature is mainly useful to give support easily.

The way to perform the chat can be in very different ways: I.E. Using any IRC client/server from client to desktop container.

Technologies/Knowledge: Perl, Javascript, BackboneJS, CSS, SASS

IDEA 3: Support QEMU VNC audio extension in noVNC

QEMU implements its own VNC protocol extension to deliver the virtual machine audio stream to VNC clients.

noVNC is a popular VNC client implementation that QVD uses for letting users connect to and use their virtual machines from a web browser.

So, as a first step into the direction of getting sound support in the QVD web gateway, we want to extend noVNC to support the QEMU extension (and that is a feature that would be useful to anybody accessing QEMU virtual machines from noVNC).

The student doing this task needs to know how to program in Javascript in the browser. It should also be able to read C and/or Java code in order to look into other implementations of the same extension and the server side inside the QEMU source code.

Once this is done, a more advanced target would be to add support for lossless compression in both QEMU and noVNC and to provide some negotiation mechanism. That would require knowing how to program in C.

Technologies/Knowledge: C

IDEA 4: Support QEMU VNC audio extension in x11vnc

QEMU implements its own VNC protocol extension to deliver the virtual machine audio stream to VNC clients.

x11vnc is an utility that allows one to access a X11 desktop using the VNC protocol. We use it in QVD as part of our web gateway.

So, as the second step into getting sound support in the QVD web gateway we want to extend x11vnc to also relay the audio.

We use PulseAudio as our sound server, so x11vnc should be able to connect to the pulseserver as a drain, recode the audio frames into the format used by QEMU (PCM currently) and send then through the channel.

The student doing this task needs to know how to program in C in a Linux environment.

Technologies/Knowledge: C, Linux

IDEA 5: Progressive Web App of the Web Administration Tool (PWAT)

Adapt the current web administration tool (WAT) as a PWA using web workers technology.

The target of this development is allow to register the QVD web administration tool as a native application in mobile devices and allow to receive notifications.

Some improvements of the responsivity may be necessary so is recommended have knowledge about CSS, SASS and resposive interfaces.

Technologies/Knowledge: Javascript, CSS, SASS, Perl (API)