While most of our recent interviews have been focused on LibreOffice, this week we’re talking to someone involved in our sister project, the Document Liberation Project (DLP). If you’ve never heard of DLP before, watch our short video for an overview.
Alex Pantechovskis is a new contributor to the DLP, and has been working on libzmf, a library for importing Zoner Callisto/Draw documents.
Where are you based, what’s your IRC nickname, and GitHub profile?
I live in Lithuania, Vilnius. My IRC nick is AlexP11223, and my GitHub profile is at https://github.com/AlexP11223.
What prompted you to start work on libzmf?
It was a Google Summer of Code (GSoC) project. I thought that this project is interesting for me and the most suitable for my skills, so I contacted the mentor (David Tardon) via IRC and started working on it.
What was the biggest challenge working on the library?
ZMF4 is not the most complex file format (ZMF2 for example is much more complex, and this is one of the reasons why only ZMF4 is supported in libzmf so far), so working with it was not very difficult. But still there were some challenges, mostly related to reverse engineering: in binary formats it is often difficult to understand the exact structure of each element. Some small pieces such as vertical text align in tables are still not covered. Sometimes first attempts are found to be wrong as more details are uncovered, requiring rewrites of related code in the library.
Another challenge is: in some cases, when a feature doesn’t work as expected, it may be difficult or time-consuming to determine what causes this: wrong format understanding, wrong implementation, incorrect usage of librevenge and other libraries, bugs in libodfgen, bugs in LibreOffice…
What do you want to do next? (Either with libzmf or another library)
I don’t know – currently I am busy with studying at university, and some other things. It is possible that I will continue working on libzmf later, to add some of the missing features, or one of the other libraries.
What does the Document Liberation Project mean to you?
A great community doing important work.
How can others help to contribute to the DLP and open up proprietary files?
There are many ways to help. The most obvious is of course development: creating a new import library for some file format or improving one of the existing libraries or tools.
Also, most proprietary file formats do not have published specifications, so in order to work with them the structure needs to be reverse engineered and documented (preferably by contributing to OLE Toy project).
Another way, that does not require any programming skills, is creating and contributing sample documents for regression testing. It is an important but time-consuming task, because the documents should cover all format features (such as all parameters that can be set for a shape in a drawing application, or all text formatting options) and also many formats have more than one versions, so a separate set of documents is needed for each version.
What’s your favourite text editor and why?
For simple text, config files etc. I usually use whatever is available such as gEdit and Vim – on Windows I usually use Notepad++.
For coding I prefer IDEs like Visual Studio (C/C++, .NET) or JetBrains products (web development, Python, Java). I like the features offered by IDEs such as powerful refactoring, code completion, error/warning highlighting, convenient integrated debugging etc., and I have a powerful PC with SSD and a lot of RAM, so performance is usually not an issue. But I understand why many developers prefer editors like Vim (better text editing productivity, consistency, available everywhere), and it is especially relevant for big projects with complex build systems like LibreOffice, where it is hard/impossible to fully integrate (and maintain) an IDE.
During libzmf development I worked on Linux because it would be much more difficult to set up the needed environment on Windows (acquiring/building dependencies like Boost, librevenge, libtool, Autotools), so I used Qt Creator IDE. It allows developers to easily create a non-Qt C++ project from source files – and it worked fine most of the time.
Thanks Alex! And to anyone reading this who wants to get involved, join us and help to free the world from closed, proprietary file formats.