contents/articles/convergence.md
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
----- id: convergence title: "Convergence" subtitle: "Time for a change of pace, and simpler computing" content-type: article timestamp: 1783893997 ----- Over the past few months I have been thinking about changing a few things related to this web site and my [projects](/projects). With the rise of AI slop and overwhelming bloat throughout the Internet, I have been longing for more simplicity and lightness in my digital life. ### Eee... So, for my last birthday, I bought myself a nice, fully functional, EeePC! It's an 1001PXD model from 2011 with a nice 233GB SATA hard drive, a (32bit) Atom processor and (wow!) 2GB of RAM. That was for 40€ mind, including shipping. Not bad at all. > %float-right% >  I immediately installed [AntiX](https://antixlinux.com), which is an excellent Debian-based distro for older hardware. In retrospect, I could have installed something more adventurous like Arch or a BSD of some kind, but I wanted to keep things simple (at least for now), and went for something I knew I could setup and use with my eyes closed. I setup the usual stuff like git and similar everyday software. I decided to go for [Vim Classic](https://vim-classic.org), a slop-free fork of Vim 8.x by [Drew DeVault](https://drewdevault.com), and then... well, I kinda needed a browser. Now, go find a good, lightweight browser that can access 2026's crappy version of the WWW _for a 32bit processor_. Most browsers simply don't offer 32bit compatibility anymore, but luckily [Basilisk Browser](https://www.basilisk-browser.org) does! It's a really lightweight Firefox fork, and that's now my go-to browser for those web sites that require (ugh!) JavaScript. For nice, [Smolweb](https://smolweb.org)-friendly web-sites, [Dillo](https://dillo-browser.org) is hands-down my favorite, but of course, web sites must be done in a certain way (more on that later on in this article). BUT! There's always a BUT. Even though *technically* Basilisk can render it just fine, GitHub.com doesn't load. Or better, it probably does, eventually, if you close every other tab or program you may have open. That's just not cool. At that point, I realized that there was only one solution... ### Moving away from GitHub This has been bothering me for a while, actually. GitHub, once the stronghold of open source software and the only place you'd ever need to be as a developer, is now, well, [bad](https://sfconservancy.org/GiveUpGitHub/). The solution? Easy: [Sourcehut](https://sr.ht). I had been using it as a mirror for most of my projects for quite some time, but I was not ready to switch, mainly because of the possibility to create GitHub actions to cross-compile my programs so that I could distribute the binaries when I released a new version. Actually, Sourcehut has an awesome [build](https://builds.sr.ht) service targeting *nix systems, but it doesn't offer a way to build for macOS or Windows. And for sure I always wanted to ship the binaries for my software for those platforms as well, right? Well, meh... Truth is, I now have two kids and a full time job, I am the main user of my ecosystem of highly-opinionated tools and keeping all those actions running smoothly had become a second (or third) job. So I was like, you know what? No more binaries distributed for any release of my software! Ah, that felt really good, and gave me the final push to make the move official. And it turns out, releases are overhyped. I was recently discussing with [Devine](https://wiki.xxiivv.com/site/devine_lu_linvega.html) about [Kelvin Versioning](https://wiki.xxiivv.com/site/kelvin_versioning.html), and while I like the idea of software aiming at becoming more stable, I just didn't like the whole decreasing temperature thing, and the way dependencies are managed. But I like the concept of software _converging_ to ultimate stability, maturity, and dependability. Oh yes I did... ### Convergent Versioning What if I stopped stressing about preparing for a version 1.0 of a particular piece of software, and just focused on the level of _completeness_ of that piece of software instead? That is the core philosophy behind [Convergent Versioning](/conver), my own alternative to Semantic Versioning and Kelvin Versioning. After years trying to be a good citizen and trying to follow semantic versioning for all my projects, I realized that it would be much simpler and useful to think about my projects in terms of _how complete they are_ rather than _whether they break compatibility or not_. I am not expecting tons of people to embrace Convergent Versioning, but even if I will be the only user of this new alternative versioning system, at least it will make sense _for me_. After finalizing a reasonable stable draft specification for Convergent Versioning, I decided to use it for _all_ my active [projects](/projects). Now when you look at any of my personal open source project, you will be able to tell the level of maturity and completeness of it. If you go through the changelog of each release, you will also be able to tell whether there have been breaking changes or not (and even derive the corresponding semantic version number for any given version!) -- which I personally reasonably easy to reason about, in all its weirdness. ### SubWeb Alright. So within the last couple of months I managed to: - Start using a 2011 EeePC laptop, and force myself to use simpler and more lightweight software - Move all my active projects to Sourcehut from GitHub, and enjoy the simplicity of this new platform - Adopt Convergent Versioning for all my active projects, and free myself from the pressure of releasing 1.0 or similar versions for my projects, to focus on what matters (dependability, stability, and maturity). However... I felt that my own web site was not simple enough. Don't get me wrong, I managed to simplify it considerably over the years, but it still relied on some fancy CSS for managing multiple themes, it used custom fonts, and linked to external resources in some cases. I tried to imagine how the web (or at least the portion of the web comprised of traditional, personal _web site_, not apps) should be like. I had a look at the [HTML subset](https://smolweb.org/specs/index.html) proposed for Smolweb and while it was definitely an improvement over traditional HTML5, it was still way too rich and complex for my liking. When I think about a web site I want to visit, ideally I would like it to render perfectly with the extremely lightweight Dillo browser. I basically was looking for something a little bit more complex than the [Gemini protocol](https://geminiprotocol.net), something where you would still be able to build your very own, uniquely styles web site, but without all the complexity and multimedia support of HTML5. That's how [SubWeb](/subweb) was born: I decided to come up with my very own subset of HTML and CSS, which: - Allows simple, HTML4-like tags (no SECTION, ASIDE, or other fancy semantic stuff introduced by HTML5 -- no reason to bother when you can just use DIVs with an appropriate class). - No JavaScript. - No objects or external content, for the matter. No video, no audio, obviously no WASM. - Images are allowed (JPG, PNG, and GIF), but only if served from the same origin as the web site. Too strict? Perhaps. But now H3RALD.com is nearly SubWeb-compliant (I still have to fix some external images), and I still don't think I gave up that much! The branding and styling is still recognizable, but it is much more lightweight and considerably simpler. And of course, it renders in Dillo perfectly. ### Where to go from here Well, I am happy I finally did all this. I feel that finally my personal projects and web site reached the level of simplicity that I was searching for a long time. Next... well, maintenance releases, sure, maybe some small features, maybe some improvements to my ConVer and SubWeb proposals... maybe I will eventually manage to recreate my whole ecosystem of tools in a single, cohesive ecosystem implemented in plain C, a-la Uxn. But again, full time job and family commitments take precedence. Still, one can dream (and plan)... |