58°F

Aaron Parecki

  • Articles
  • Notes
  • Photos
  • Thoughts on the Resiliency of Web Projects

    August 31, 2024

    I just did a massive spring cleaning of one of my servers, trying to clean up what has become quite the mess of clutter. For every website on the server, I either:

    • Documented what it is, who is using it, and what version of language and framework it uses
    • Archived it as static HTML flat files
    • Moved the source code from GitHub to a private git server
    • Deleted the files

    It feels good to get rid of old code, and to turn previously dynamic sites (with all of the risk they come with) into plain HTML.

    This is also making me seriously reconsider the value of spinning up any new projects. Several of these are now 10 years old, still churning along fine, but difficult to do any maintenance on because of versions and dependencies. For example:

    • indieauth.com - this has been on the chopping block for years, but I haven't managed to build a replacement yet, and is still used by a lot of people
    • webmention.io - this is a pretty popular service, and I don't want to shut it down, but there's a lot of problems with how it's currently built and no easy way to make changes
    • switchboard.p3k.io - this is a public WebSub (PubSubHubbub) hub, like Superfeedr, and has weirdly gained a lot of popularity in the podcast feed space in the last few years

    One that I'm particularly happy with, despite it being an ugly pile of PHP, is oauth.net. I inherited this site in 2012, and it hasn't needed any framework upgrades since it's just using PHP templates. My ham radio website w7apk.com is similarly a small amount of templated PHP, and it is low stress to maintain, and actually fun to quickly jot some notes down when I want. I like not having to go through the whole ceremony of setting up a dev environment, installing dependencies, upgrading things to the latest version, checking for backwards incompatible changes, git commit, deploy, etc. I can just sftp some changes up to the server and they're live.

    Some questions for myself for the future, before starting a new project:

    • Could this actually just be a tag page on my website, like #100DaysOfMusic or #BikeTheEclipse?
    • If it really needs to be a new project, then:
    • Can I create it in PHP without using any frameworks or libraries? Plain PHP ages far better than pulling in any dependencies which inevitably stop working with a version 2-3 EOL cycles back, so every library brought in means signing up for annual maintenance of the whole project. Frameworks can save time in the short term, but have a huge cost in the long term.
    • Is it possible to avoid using a database? Databases aren't inherently bad, but using one does make the project slightly more fragile, since it requires plans for migrations and backups, and 
    • If a database is required, is it possible to create it in a way that does not result in ever-growing storage needs?
    • Is this going to store data or be a service that other people are going to use? If so, plan on a registration form so that I have a way to contact people eventually when I need to change it or shut it down.
    • If I've got this far with the questions, am I really ready to commit to supporting this code base for the next 10 years?

    One project I've been committed to maintaining and doing regular (ok fine, "semi-regular") updates for is Meetable, the open source events website that I run on a few domains:

    • events.indieweb.org
    • events.oauth.net
    • events.scim.cloud

    I started this project in October 2019, excited for all the IndieWebCamps we were going to run in 2020. Somehow that is already 5 years ago now. Well that didn't exactly pan out, but I did quickly pivot it to add a bunch of features that are helpful for virtual events, so it worked out ok in the end. We've continued to use it for posting IndieWeb events, and I also run an instance for two IETF working groups. I'd love to see more instances pop up, I've only encountered one or two other ones in the wild. I even spent a significant amount of time on the onboarding flow so that it's relatively easy to install and configure. I even added passkeys for the admin login so you don't need any external dependencies on auth providers. It's a cool project if I may say so myself.

    Anyway, this is not a particularly well thought out blog post, I just wanted to get my thoughts down after spending all day combing through the filesystem of my web server and uncovering a lot of ancient history.

    Portland, Oregon • 93°F
    Sat, Aug 31, 2024 6:36pm -07:00 #indieweb #clutter #projects #100daysofmusic #biketheeclipse
    2 likes 1 reply 2 mentions
    • Jamie Tanna
    • Jamie Tanna
    • cweiske
      Many years ago I came to the same conclusion - which is why commentpara.de, my websub server phubb and my indieweb search engine phinde as well the OUYA and Playjam GameStick server software I wrote all have zero dependencies.

      At work I see the amount of work that has to go into keeping software running when just keeping dependencies up to date, and this is not worth it in the long run - especially given the current state of libraries and frameworks that bring out major versions every year, breaking compatibility every time.
      Sun, Sep 1, 2024 9:20pm -07:00

    Other Mentions

    • lemmy.bestiver.se
      Sun, Nov 10, 2024 10:40am -07:00
    • zerobytes.monster
      Sun, Nov 10, 2024 7:36pm -07:00
Posted in /articles using quill.p3k.io

Hi, I'm Aaron Parecki, Director of Identity Standards at Okta, and co-founder of IndieWebCamp. I maintain oauth.net, write and consult about OAuth, and participate in the OAuth Working Group at the IETF. I also help people learn about video production and livestreaming. (detailed bio)

I've been tracking my location since 2008 and I wrote 100 songs in 100 days. I've spoken at conferences around the world about owning your data, OAuth, quantified self, and explained why R is a vowel. Read more.

  • Director of Identity Standards at Okta
  • IndieWebCamp Founder
  • OAuth WG Editor
  • OpenID Board Member

  • 🎥 YouTube Tutorials and Reviews
  • 🏠 We're building a triplex!
  • ⭐️ Life Stack
  • ⚙️ Home Automation
  • All
  • Articles
  • Bookmarks
  • Notes
  • Photos
  • Replies
  • Reviews
  • Trips
  • Videos
  • Contact
© 1999-2025 by Aaron Parecki. Powered by p3k. This site supports Webmention.
Except where otherwise noted, text content on this site is licensed under a Creative Commons Attribution 3.0 License.
IndieWebCamp Microformats Webmention W3C HTML5 Creative Commons
WeChat ID
aaronpk_tv