CMU-SV Practicum Team Develops Audio Channel for VNC Connections in the Open Source Guacamole Project
There are many commercial tools available that let you access your desktop remotely. But, what if you could not only control your remote desktop, but also hear what's playing on it using nothing but a browser? This spring, students from Carnegie Mellon University's (CMU) Silicon Valley campus set out to accomplish exactly that, by collaborating on an open source project called Guacamole. Second year software engineering students Craig Hokanson, Gio Perez, and Sion Chaudhuri worked on this project with advising faculty Dr. Edward Katz. Christopher Balz, founder of Propeller Labs, sponsored the practicum project and served as a mentor for the students.
The team contributed to the Guacamole project, a remote desktop gateway that provides access to multiple operating environments using an HTML5 capable browser without the use of any plugins. While Guacamole currently enables you to control your desktop remotely, the goal of the project was to implement a mechanism to capture audio from the remote desktop and stream it to a browser. Using Guacamole, Christopher Balz and his team at Propeller Labs have developed a cloud-based service that provides educational institutions access to virtual computing laboratories. The current offering is sufficient for running educational software and programming tools. However, one of the deficiencies of this service is the inability to stream audio content, as VNC inherently does not support audio. The challenge presented to the practicum team was to extend the core Guacamole libraries to support an audio stream alongside the existing VNC connection.
The team's initial prototype resembled an Internet radio station that streamed the audio content from the remote device without using a Guacamole connection. This prototype helped the team understand the architectural challenges associated with the implementation. Then, the team came up with a high level architectural overview of the proposed solution and a plan to implement that solution. This solution was implemented in three phases. The first phase involved recording the audio data and storing it locally on the same device. In the second phase, instead of storing the data locally, it was streamed through the Guacamole connection to the remote browser. In the final phase, the team focused on enhancing the quality of the audio stream and reducing latency.
The students had already gained extensive experience in delivering software products using Agile methodologies from their coursework. These part-time students were also able to draw from their industry experience gained from working at major software companies. Craig Hokanson said, "This course gave me the opportunity to apply the skills that I have acquired at CMU over the past two years. Collaborating with a team of engineers to solve a complex problem for a client has been a truly rewarding experience."
The team's contribution has been accepted by the Guacamole project team and is currently in the process of being incorporated into the official project source code. Planned future developments include support for separate audio channels for multi-user sessions on the same remote device. The team also hopes that audio support will enable the use of accessibility options such as the Orca screen reader over Guacamole.
As part of CMU's sustained commitment to the open source community, these students delivered a solution that will not only benefit educational companies such as Propeller labs, but also developers and consumers who plan to use Guacamole for their remote desktop needs.