π 2025-09-13
Today marks the fifth anniversary of the first release of Lagrange.
Five years is quite a hefty chunk of time! While the first couple of years saw rapid development, recently the app has been stabilizing, the monthly releases turning into yearly ones. Save for some lingering bugs that still avoid capture, the slowing of the pace is right and proper. Gemini is not a moving target so there isn't a continual need to bolt on new features. The focus is now squarely on improving the features that are already there β particularly the ones that never advanced far beyond the initial Minimum Viable stage.
Version 0.1.0 was published on September 13, 2020, via an announcement post on the Project Gemini mailing list. It can be found in Acidus's archives:
In the spirit of Gemini, the guiding principle has been to trim things down to the bare bones. To keep the app as portable and small as possible, it's written in C and doesn't depend on existing UI frameworks. Instead, SDL2 is used for low-level graphics/input and the rest is built on top of that. TLS is provided by OpenSSL.
The introductory description still rings true. While the custom GUI approach has its drawbacks (like lack of accessibility features beyond UI scaling), it has given a lot of flexibility when it comes to portability. Lagrange now runs on all the major (and some minor) desktop and mobile operating systems, even in text-mode inside a terminal.
I continue to use Lagrange daily on my phone, iPad, and laptop. It is a strong contender to be my most-used app (duking it out with Reeder). It is even a decent source of local news for me via the YLE teletext interface. Browsing Gemini on the app remains a delightful and mostly stress-free experience. I do occasionally cycle through fontpacks to freshen things up, though. (Current favorite: Manrope + Crimson Pro.)
When it comes to the mobile ports, one huge step still remains: publishing to app stores. I'm battling with perfectionism here somewhat. While the port is quite functional at least on iOS (according to 1800 testers), the UI can be a bit flaky. The integration with native UI controls like input fields and the virtual keyboard can glitch out sometimes, for example. The only true fix would be to write a fully native UI, one for iOS and one for Android. At this point, leaving that to a hypothetical version 2 of the app seems like the most sensible approach.
Speaking of a version 2, I do have ideas for leveling up the UX in various ways. However, with the COVID-19 lockdowns long gone, it is much more difficult to find time to invest in hobby programming. This year has mirrored the previous one in that after the vacations there have been opportunities to work on the app, but as the fall begins in earnest, we shall see how much time and energy remains.
CC-BY-SA 4.0
The original Gemtext version of this page can be accessed with a Gemini client: gemini://skyjake.fi/gemlog/2025-09_lagrange-five.gmi