Application Distribution & Updating System


Application Distribution & Updating System -ADUS- is a new system for application distribution and updating created from scratch for Voxel, and other applications. Is designed to be scalable, universal and easy to use, while maintaining simplicity and speed. In its core uses JSON files for versioning and configuration, and a repository in a multi-directory configuration containing all JAR files. It supports MD5 validation for jar files only, support for configuration will come soon. Other part is the application initialization: creates the command, classpath, custom parameters and then bootstraps the application using the main class specified in the configuration. Is not application-specific, meaning that can be used in any application.

The configuration consist of a main JSON containing all versions and a directory where the versions specific config is stored, the repository stores all jar files in a multi-directory layout. Using this system allows sharing files between versions.

The remote server is fully configurable, it stores the a full copy of versions and files while the client only downloads the files required, mirroring the file structure stored on the server. It can be used in a stand-alone mode or be complemented by a launcher.

All the code is available in the GitHub repository.

Window Manager

I’ve been working in a new GUI for Voxel, this is still based on NanoVG for drawing but uses a new layout and display system. This is based on the idea of a Window Manager/Display Server, all the GUI is composed of “windows”, each window is composed of components (Buttons, Images, Text, etc), making the creation of menus more easy and fast. Of course custom windows can be made by extending the NanoWindow object.

Internally the Window Manager/Display Server uses a compositing renderer, this puts together all the windows and creates the final image that is displayed. Each window contains a buffer where everything is rendered, this is shared between the client-side area and the window frame. The logic (drag,  maximize, close, etc) and decorations are done by the window itself, not the window manager.

The Window Manager takes the image of the buffer, applies custom shaders and then adds it to the final buffer. This is done in a back-to-front rendering. Because of the dynamic nature of NanoVG the entire rendering can be replaced or modified on-runtime.