As a part of the v0.19 release I'm starting this blog with all things PicoTorrent, and this post is the first in the category of posts I want to call Behind the release where I go more in depth into what actually shipped and how it came to be.
Lets get into it! 🤠
History of UI frameworks in PicoTorrent
PicoTorrent started out written directly on the Win32 API's, which have been around since about forever. They do the job but to do anything more than basic stuff (like a tree-list view) requires quite alot of effort.
So, a few releases later, I moved to WTL, which is still Win32 based, but made it easier to use C++ features.
Version 0.14 was the first big switch and I moved to wxWidgets, a popular cross-platform GUI library which still built upon the Win32 API's but made it much easier to maintain the GUI parts.
wxWidgets was used for a few versions until version 0.16 when I moved to Qt, which for me as a solo developer made life easier than ever. The switch to Qt took some effort but I think it was worth it. Until...
Earlier this year, Qt made the decision to lock the development libraries behind an account wall. Meaning you had to create a (free) Qt account to download the development libraries. This did not sit well with me - I want PicoTorrent to be as easy as possible to contribute to, and even though the account was free to create, it was still a barrier I did not like.
So, for version 0.19 I've moved back to wxWidgets. I've also gotten the impression that the previous wxWidgets versions was liked the most, so this decision should sit well with both users and contributors 😀
One thing I want to do for PicoTorrent is to recognize the libraries I use. That's why the About dialog has been rewritten and now has a table of all the libraries and their versions (and/or commitish). It looks like this;
This makes it easier for both me and users to get an overview of what is actually used to create PicoTorrent. There's quite a few libraries in there!
The new C API
This version also brings a new C API. This API can (and will) be used to write plugins, both by me and by users. There's two plugins shipping with PicoTorrent right now which I have written to grow the API into something useful.
We have had JS API's and C++ API's before, but settling on this C API makes it possible to write plugins in a variety of languages that have C interop capabilities, such as Rust.
For the future, I'd like to move most non-essential things to plugins and have PicoTorrent be true to its tagline - tiny and hackable.
The API is experimental for now, as no documentation other than code exists. If you are interested in knowing more, please reach out in a GitHub issue!
One of the biggest things for this release is that during the summer I started a separate company, Unidentified Developer, to back the development of PicoTorrent and other open source projects I maintain. This company is dedicated to my open source efforts and I invite you to support development as well!
I have a GitHub sponsors profile and where you can set up recurring donations. All proceeds from this will go back into development of PicoTorrent and to offset the costs of hosting, domains, etc.