I’m Dmitry Marakasov, Free Software developer. My primary languages are C++ and Python, interests include FreeBSD, software packaging, software portability, F/OSS gamedev and improving Free Software, Hardware, and Data ecosystem in general. I try to contribute to everything I can get my hands on.
My most notable projects and contributions are:
- I maintain over 350 ports and have made over 15k commits to FreeBSD ports collection.
- I’m author of Repology, a service which aggregates packaging information from over 300 repositories for the benefit of software authors and package maintainers.
- I maintain some C++ libraries:
- libversion - a library to compare software versions in all their variety;
- libSDLpp - C++ wrapper for SDL.
- I maintain some Python modules:
- aesqlapius - a tool to conveniently organize SQL queries and use them as Python API;
- jsonslicer - a fast stream parser for large JSON files;
- libversion - a python wrapper for libversion listed above.
- I’ve reimplemented XKCD #1608 “Hoverboard” game as a native application.
- I maintain some third party projects abandoned by their authors:
- flops - a small benchmark by Al Aburto;
- Trip on the Funny Boat - a side scrolling arcade shooter game by Pekka “pekuja” Kujansuu et al.;
- QNetWalk - a game for system administrators by Andi Peredri.
- In the past I’ve actively contributed to OpenStreetMap and have written some related tools:
- tiletool - a map tile processing tool;
- opening_hours.js, a javascript library to parse and process opening hours format used in OSM;
- glosm, a realtime 3D OpenStreetMap renderer;
- streetmangler, a street name normalization tool for OSM.
- I took part in making classic Vangers game cross-platform and available under Linux.
- I’ve contributed to hundreds other F/OSS projects.
That is roughly what I write about in this blog.
Recent posts
Python 3.11 in FreeBSD Ports
A month ago I’ve landed Python 3.11 (alpha2) in FreeBSD Ports tree. This is a continuation of my past work on Python 3.10 support, and likewise, it allows curious ones to play with the upcoming release, maintainers to prepare their ports and developers to make sure their code is compatible with the language changes. I’d like to share some details on latest Python support in FreeBSD and the story of porting Python 3.Packaging Friendliness: Compiler Flags to Avoid
It is tempting to enable some (generally useful) compiler flags
such as -Werror
and -march=native
in you build by default
(such as to discover more problems and generate more efficient
code), however in practice these flags may lead to packaging problems
instead.
Writing Huge Posts Is Hard
The portability ABC activity has kind of stalled, most probably because I’ve attempted to bite off too large a piece - that is, to write too huge article at once, in two languages on top of that. There are two such articles in the drafts, and the amount of work needed before posting them is demotivating. So I’ll try to switch to smaller posts now. Apart from that, I’m thinking of a new name, as the topic is actually closer to packaging friendliness than to portability.Portability ABC: project naming
Surprisingly, portability/packaging issues may be introduced to a project long before the first line of code is even written, merely by a bad name choice.
Make sure the name of your project is clear, unambiguous, unique and compatible with packaging, otherwise the package or files installed by it are likely to be named differently than you’ve intended (to avoid name conflicts, comply with packaging policies, or just because of misunderstanding). This, in turn, causes trouble for users locating and running your software and breaks automated tools (such as new upstream release checkers and security vulnerability reporters). In addition, these changes are likely be different in each other repository, which complicates distro migration and hinders interoperability, portability of dependent software and usefulness of documentation.