В инкубатор Apache принята система удаленного доступа к рабочему столу Guacamole
Организация Apache Software Foundation приняла под свое крыло проект Guacamole, в рамках которого развивается ПО для обеспечение удаленного доступа к рабочему столу с использованием в качестве клиента обычного web-браузера. Лицензия на код изменена с MIT на Apache 2.0 (новые версии будут выходить только под лицензией Apache, но старый код остается под MIT).
Проект помещен в инкубатор Apache, в котором будет выполнена подготовка инфраструктуры, проведен аудит лицензионной чистоты и проверка способности соблюдения принятых в сообществе Apache принципов разработки. В дальнейшем, как только проект покажет себя готовым для самостоятельного существования, не требующего дополнительного надзора, он будет переведен в число первичных проектов Apache.
Guacamole написан на языке Java и реализует прослойку, позволяющую организовать управление рабочим столом из web-браузера. Для присоединения к рабочему столу в прослойке поддерживаются штатные протоколы VNC, RDP и SSH. Например, можно экспортировать свое окружение при помощи сервера VNC и использовать Guacamole вместо клиента VNC. Если вместо традиционного X-сервера использовать Xvnc, то при помощи Guacamole можно организовать работу облачных рабочих столов, в которых управление осуществляется через web-браузер. Кроме графического сеанса поддерживается трансляция в браузер терминального доступа по SSH и telnet.
Guacamole состоит из двух компонентов - сервера и web-клиента. Web-клиент написан на JavaScript и отвечает за интерфейс на стороне браузера. Сервер выступает в роли прокси, транслирующего бинарные протоколы, подобные VNC или RDP, в представление, передаваемое web-клиенту. При этом поддерживается не только передача картинки и ввода (мышь, клавиатура, сенсорный экран), но и проброс звука, интернационализация, возможность использования нескольких раскладок клавиатур и экранная клавиатура.
Для работы туннеля может использоваться технология WebSocket или обычный HTTP. Поддержка VNC, RDP и SSH реализована на стороне сервера при помощи нативных библиотек (libVNCServer, FreeRDP, libssh2 ), что позволяет добиться хорошей производительности и совместимости, близким к стандартным клиентам VNC и RDP. Проектом также используются: libwebp или libpng, libjpeg-turbo, libvorbis, OpenSSL, PulseAudio, Pango и Cairo. Предоставляется фреймворк для разработки расширений. Предоставляются средства аутентификации через LDAP или с использованием локальной базы пользователей в PostgreSQL или MySQL. Возможна организация централизованного доступа к группе машин, при который система автоматически перенаправляет клиента на нужный сервер.