As it approaches the end of another calendar year, it is de rigueur to have some sort of retrospective glance back over the year's comings and goings, and I'm certainly becoming one to stand on the ceremony of tradition. With that in mind, I've decided to make a note of the ten open source projects that have made the most significant impact to my life over the course of 2019 using my significant social media clout to drive new users to them.
Grafana is a godsend to someone like me: I process data best in a visual way, while being utterly incapable of being able to put together anything that is in any way visually appealing by myself. Grafana will talk to data in pretty much any structured data repository, whether this be time-series databases like InfluxDB or Graphite or relational databases such as PostgreSQL and MySQL and give an aesthetically-appealing representation of that data in graph, gauge or plain-text form. The built-in query editor is competent, while still allowing for the definition of queries manually if you're looking to do something out of the ordinary.
Aside from its intended use case for demonstrating application and infrastructure monitoring data, I've had great success with using Grafana to help display financial and health data trends over time: its roots in observability, while certainly shown in its alerting functionality, don't in any way prevent its use for more generic time-series datasets.
Configuration management grows exponentially in importance with every new device - be that laptop, desktop or server - that one needs to manage. As the proliferation of single-board computers in my life continues unabated, and as long as I'm a prolific distro-hopper, the ability to quickly get devices into operating condition for whatever use I'm putting them to becomes more important. That element of 'quickly' is where Ansible excels over other configuration management approaches. Ansible requires no configuration on the host to be configured aside from the provision of credentials that allow Ansible to connect to that host: no agents need to be provisioned, nor any complex PKI arrangements established to allow connectivity between Anisble host and the host to be configured, in contrast to Puppet's approach. While Puppet does now have Bolt as an agentless alternative, Ansible has been designed from the ground up for this use case and doesn't make use of a configuration spec based on the borderline unreadable Nagios configuration language. While I may well have issues with indentation with YAML from time to time, at least its syntax and semantics are broadly clear and readily understandable for users new to the tool.
There's nothing wrong with Wordpress as a blogging engine: it is a behemoth in the open source world for good reason, acting as an exemplar for how large projects can grow and adapt with the times. It is, however, a victim of its own success in that it has been used for anything and everything as time has gone on due to its flexibility and ability to be extended. With that flexibility and wide adoptions comes the burden of legacy support and scope creep over the years. For me, I want a blogging engine to be simple and pretty enough that I don't have to think too much to use it. Ghost is exactly 'enough' content management in my Content Management System and using it this year has been a joy, particularly with the 3.0 release.
When I did my undergrad degree, I definitely didn't recognise the importance of good reference management. Being honest, I didn't need to given that my course was assessed entirely by examinations, an approach to academia that favours idiots like me who can remember reams and reams of things and regurgitate them in a relatively short time period. Zotero, with its Firefox and LibreOffice plugins, has helped me master the reference management element of the dissertation that I'm required to do for my Master's degree without adding too much of an overhead to my research process.
6. Qemu's SPARC emulator
This one is probably a bit niche. OK, probably a lot more than a 'bit' niche, but the practical applications I've found for SPARC emulation of x86 devices in my dayjob as someone who works at Large Enterprise with Lots of Legacy Sun Hardware We Can't Get Parts for Anymore, the things I've been able to do to get old applications no one wants to touch running in environments not tied to ancient hardware have been so wonderfully empowering. I'm definitely feeling a bit bad that being able to use this is preventing us from actually confronting the real problem of the applications, mind.
5. Visual Studio Code
"Heresy", I can hear you cry. I know, I know, Visual Studio Code isn't really open-source in that it plays the standard "oh some of these assets are copyrighted" that corporates like to play, but the code is available on GitHub and there are open-source builds, such as VSCodium. Saying that VSCodium was my pick for the year, however, wouldn't exactly be SEO-optimised. If we're not cynically optimising for the algorithms of oversized multinationals, what are we even doing on the Internet?
Visual Studio Code has been fantastic in my journey of learning Rust because of Rust Language Server being a core part of the distribution of the language and the Language Server Protocol being a result of Code development in Microsoft. The integration of the editor and the Language Server is fantastic, with compilation errors being rapidly displayed and automatic formatting corrections being applied, with linting advice also being given. It's fast and seamless, perhaps rivalling even the IntelliJ suite of IDEs and their excellent performance and features.
This is somewhat of an obvious choice given the size of the practical ubiquity of the requirement for file syncing and the popularity of any sort of groupware. Even with this said, Nextcloud remains a vital part of how I manage my personal life and get my work done. Data synchronisation is a hard problem and to date, fingers and any other appendages crossed, Nextcloud has never once let me down. Fate has well and truly been tempted with that comment, I'm aware.
I'm not the most sociable person, but I appreciate the possibilities that microblogging services provide assuming good faith on the part of other actors. Any hope of 'good faith' is utterly gone on Twitter given the operations of nation state actors on that platform and the company's seeming complete lack of understanding of how people want to use their platform, so an alternative is required. The federated nature of the Fediverse provides this.
While there are a sizeable number of Fediverse server implementations, Pleroma stands out for its fairly slim system requirements and it's simple and functional interface. Its administrative capability has become more and more mature as time has gone on, and development isn't showing any signs of slowing any time soon. I can be found @firstname.lastname@example.org.
I don't like SaaS code-hosting services as I'm basically a doomsday prepper when it comes to the idea of centralised repositories of any kind. I've also had the displeasure of running a self-hosted GitLab instance and the complexity of configuration and maintenance (as well as the frankly obscene memory requirements). Gitea is a tremendously simple to run and hardware-efficient application to run, supporting pretty much any of the common Git-based workflows and a number of storage backends.
I'm behind Carrier-Grade NAT on my home Internet connection. It's a relatively small price to pay for 1GBps up and down, particularly given that I don't want to pay £5/month for a static, dedicated IP. I do, however, believe that if I pay for an Internet connection, I should be able to host whatever services I like using that connection and have used a number of VPN solutions to do that in the past, including IPSec and OpenVPN. These VPN solutions have always proven difficult to configure, with plenty of room for error in misconfiguration, potentially resulting in an insecure setup.
Wireguard is incomprehensibly simple, making use of some clever crypto to require only the sharing of a public key between hosts to be connected to the network. With the bundled
wg-quick application, it becomes a matter of writing a very simple configuration file to get an interface ready to go. Wireguard has transformed how I think about networking in the few months I've been seriously using it, and its mainstreaming into the Linux kernel cannot come soon enough.