This article talks about https://piousbox.com . If you are one of (*checks notes*) fourty people who visit my site, you noticed it was down, with a prominent, actual error "layout such and such doesnt exist" being shown to visitors. The website is back up, and I'm going to use this opportunity to write even more documentation and also explain why the downtime was permitted, how it happened, and how it was resolved.
The reason I broke the site is because there are many moving parts, and it's a balance to keep developing while maintaining stability. I also want to reasonably converge to use the same thing across the board, rather than many different disconnected pieces which would be even harder to maintain. I maintain both drupal 9 and drupal 10 sites.
The core module (github: ish_drupal_module) is being rewritten include all functionality and theming(!) shared across marketing sites. I've decided to take most theming out of the themes, and put it in a single module. The themes will just have colors and such. Structure such as Card, Slider, and even field source_url are not part of theming. All theming going forward will be based on bootstrap_barrio_subtheme, with either bootstrap 4 or 5 (I currently support both).
While the (github: bizplus_drupal_theme) was useful in that it gave me insights, I will not use it going forward, due to its poor code quality.
Additionally, the core module will be split in three: city_drupal_module for structures relating to the travel guide and city guide; newproducer_drupal_module for functions relating to youtube, scraping, and the news site. ish_drupal_module will have things like the definition of AdvancedPage, Slider, Issue, Card and other basic needs. The ish_drupal_module (2.x.x) is already being deployed in some other projects.
Meanwhile, the infrastructure is actually shared across multiple sites, and I'm not spinning up independent instances, in order to efficiently use my compute resources. So you can see how in the middle of all this action, the production site received a wrong version of a module. To fix the error, I re-viewed the versions and updated the lockfile.
~ * ~ * ~ * ~
When I noticed the error in the morning, I decided not to fix it right away. Fixing it was at number three in my priority queue. I was well aware of the error, and even though the website was complete unreachable for all users, fixing it was not the most important thing for me to do. But it was important, so at around 4pm once I freed up some time, I fixed it.
As it turned out, it was a partial fix. Due to the moving parts, a bunch of versions of libraries switched back to some old versions. So the next day, in the morning, I reviewed the site functionality, noticed the regression, found out the reason, and updated the packages. I looked a development instance and updated the versions from there. There isn't a particularly central place where I keep this info, just the latest instance would keep the latest data.
Thankfully, between all the modules and libraries and themes and config objects and so forth, everything is semantically versioned by me, and the bundles are reasonably locked in place. This allows me to continue development while continuing maintaining production code. That's the whole idea of semantic versioning. The ish_drupal_module development verison is 2.1.0, while this site is running on v1.2.12. I also actively use all three parts of the version: the major, the minor, and the patch.
So while downtime is bad, I'm happy to have things moving. There are a few updates coming up, some interesting new sites being built, so stay tuned.
