Year 2010 summary

With average over one change per day (400 commits) previous year 2010 was another year of continuous SZARP evolution. Time for a short summary of past 12 months.

In April we moved from Subversion to git, while still staying on SourceForge. It was quite a big change for us, but git is a better tool – more robust, with better merging/branching functionality, and a lot faster. Also, even whole git repository needs less disk space, then single working copy of Subversion repository. This change is also partially visible for users – previously SZARP minor version number was upgraded with every Subversion commit. Git does not use numerical version identifiers, so every version change is now initiated manually by developers and results in releasing new version – either for Debian stable or unstable or Windows. It means less frequent version changes and every new version is actually delivered to users and brings some new functionality or bug fixes.

New important SZARP functionality is availability to acquire and present parameters historical values with 10 seconds frequency, in addition to previously available 10 minutes frequency. It requires some additional configuration and needs working LAN or VPN connection to SZARP server, but it’s completely integrated with existing tools, allowing users to “dig in deeper” into historical data.

Draw3 application – the most important SZARP data analyse tool – has been enhanced with several other new functionalities. These included 3-dimensional (XYZ) parameters’ graphs, ability to jump to or follow newest data, tree presentation of draws’ sets or searching for time based on condition described by Lua formula.

At the same time, we still worked on improving Draw3 performance. For example, there where some fixes in data caching. Also, the completely new module tries to parse and precompile Lua formulas of defined parameters. If the formula is “simple enough” (contains mainly arithmetical operations and conditions) – which is true for most of them – it’s converted to internal representation and calculated by SZARP itself, without running Lua interpreter. As a result, Lua becomes the ultimate tool for creating defined parameters – simple formulas can be processed with uncompromising performance while still allowing to construct more complicated formulas, using full power of Lua programming language.

One of the other most important “under hood” changes is introducing a new device drivers architecture. Previously, each device driver (daemon) was a separate program, using IPC to communicate with other parts of system. It fits traditional Unix “do one thing” philosophy, but has some limitations. For example, it was not possible to share one serial port among different devices using different protocols – and this situation is common, for example for RS485 serial line. In case of hundreds connected devices (yes, we do it) it also meant running hundreds processes, which lead to performance problems. New solution is to use one meta-daemon called “boruta” (kind of joke – see http://en.wikipedia.org/wiki/Devil_Boruta). Boruta provides common framework for handling configuration and serial or network connections. Specific protocols handling is provided as boruta modules. We’re using libevent library, which allows for fast, even-driving architecture, capable of handling great numbers of connected devices. Modules for most commonly used protocols, including Modbus, are currently available.

We counted 6 new SZARP implementations in previous year, summing up to about 60 installations starting from 1992, 58 (!) of these 60 systems still active. For users, the most important SZARP feature seems to be the ability of remote data access. Installations with commercial support (provided by Newterm company) receive regular software updates and help with configuration/maintenance problems.

We’d like to thank all SZARP users for another year with us, and wish us all more successes in new 2011 year!