As we do every year, we participated again this year at FOSDEM, the largest conference on free and open source software in Europe. Apart from having really nice conversations and grabbing many stickers 🙂 , we attended many very inspiring talks this year, too.
Different types of tools have been created by the Go community to support dependency management for Go projects, but none of them has been officially supported until May 2017, when the Go community released Dep, an official experimental tool to manage dependencies in the Go language. Dep aims to support the work of developers who write and ship code, leveraging the recommended approach of “vendoring” dependencies.
We will explore using the Dep tool to manage our Go dependencies and ensure that all dependencies are updated and correctly imported in our Go projects.
One of the most interesting and useful talks was given by Pascal Hertleif aka killercup, who I remember as the fantastic MC of RustFest 2017 in Zurich. He presented his project Rustfix, a utility allowing you to semi-automatically apply suggestions from the compiler rustc, as well as from clippy (clippy on GitHub), which is an advanced lint tool for common mistakes and anti-patterns in the Rust language. Automating the human interaction for searching and applying their suggestions saves time and hassle for many developers. For now we’ll try to incorporate it in our daily Rust workflow and evaluate its impact.
Open Source Design is a community of designers and developers pushing more open design processes and improving the user experience and interface design of open source software. They mean “design” in a broad sense, and they include within that term typography, graphic design, interaction design, user experience, human-computer interaction, accessibility, information architecture, content strategy, service design, design research… You can find more information about this community @ opensourcedesign.net
One of the most amazing talks was Interface Animation from the Future by Tobias Bernard. The main topic was the role of animation in modern User Interfaces. From his point of view animation is the future of interface design. It enables us to make interfaces more understandable by offloading processes from the user’s brain to the screen. The industry seems to largely agree that this is the way forward, but there are very few interfaces implementing these ideas in a holistic way. In most cases, animations today serve simply as transitions between screens designed independently from one another. He believes the main reason for this is that the current generation of toolkit and layout technologies is built for static layouts with strict hierarchies. This makes it prohibitively difficult to build interfaces where components move fluidly between different states.
During a very interesting MariaDB talk, we heard about two new features that could be very interesting in the future: System-versioned Tables and Recursive Common Table Expressions.
System-versioned tables is a feature first introduced in the SQL:2011 standard. System-versioned tables store the history of all changes, not only the data which is valid at the current moment in time. This allows data analysis at any point in time, auditing of changes, and comparison of data from different points in time (See system-versioned-tables). This feature has been supported in MariaDB since version 10.3.4.
This feature could be very interesting as a replacement for our current BP versioning engine written in Perl and as an additional feature for other configuration tables we have in NetEye, for example, the EventHandler.
Common Table Expressions (CTEs) are a standard SQL feature, and are essentially temporary named result sets. CTEs first appeared in the SQL standard in 1999, and the first implementations began appearing in 2007. CTEs allow a query to reference itself. A recursive CTE will repeatedly execute itself over subsets of the data until it obtains the complete result set. This makes it particularly useful for handling hierarchical or tree-structured data. This feature has been supported in MariaDB since version 10.2.2.
This feature could be quite useful for querying our Business Process tree data structure easily through SQL and avoiding complex recursive Perl functions.
Containers have become more and more popular in recent years. They are mainly used to ship server applications in the private or public cloud. But have you ever thought about using containers for desktop applications? Many have tried to do it in different ways. The hardcore guys use CoreOS, which is actually a Linux server distribution, as a desktop distribution as well, but it takes a lot of time to set up and maintain. Another possibility is to use Flatpak, which is open source software that can be installed on the major Linux distributions, which will bring containerized desktop applications alongside “classic” applications. The last, and more exciting, solution is Fedora Atomic Workstation, which is an innovative Linux distribution that tries to containerize almost all applications using rpm-ostree as a package manager. See this post to further explore this topic and to download Fedora Atomic Workstation.