4 ms·
I run a bunch of websites on top of popular, open-source CMS software like Wordpress or Drupal. An under-appreciated source of technical debt in those sites ar
by snowwrestler 8y ago
I run a bunch of websites on top of popular, open-source CMS software like Wordpress or Drupal.
An under-appreciated source of technical debt in those sites are plugin/module upgrades--the ones that are not security patches. Most developers and agencies seem to take the approach "if it's working for us, and not a security issue, leave it alone."
That approach works fine until there is a security patch. Then you have to apply it fast, and guess what--it comes with all the previous code changes you chose to avoid. Now you're getting all those changes all at once, and under time pressure.
Keep your plugins and modules up to date! It might mean some level of ongoing development to deal with changes in functionality. That's a good thing. That's a muscle you need to flex in order to keep it in shape. If you only update modules when there's a scary security issue, some of that technical debt is going to come due when you least want it to.
Another underappreciated source of technical debt is the differing preferences among developers and agencies on how to use the CMS + plugins/modules to build a site.
Ok you're building a Drupal site... do you build your layouts with custom template files? Context module? Panels and Panelizer? Paragraphs module? Do you handle embedded media in fields or WYSIWYG? Do build your sidebar with blocks or with Views + nodes + Display Suite?
You can build the same website different ways, and it will work fine. But a legitimate choice can often look like awful technical debt to someone else, who would have made different choices. You have to take this into consideration when hiring new developers or agencies to work on an existing site. Otherwise you can waste a lot of resources rebuilding functionality with no discernible improvement to the end user.
- amelius 8y agoThat's what backports are for. https://en.wikipedia.org/wiki/Backporting https://en.wikipedia.org/wiki/Backporting
- kevan 8y agoBackporting is a legitimate choice, and could be the correct one. But it can also a form of adding tech debt. You save a lot of time. In mature codebases where you're never going to do a major-version bump of a core lib it makes sense to backport. As a counterexample, in Javascript land no one wants to support older versions and you'll very quickly fall behind. If you're lucky they'll leave the docs for a few previous versions online, but good luck getting any community support. In these situations you lose most of the advantages of using open-source.
- tonyarkles 8y agoSure, but do you really expect the one-person maintainer of a random Wordpress plugin to be backporting security fixes? In an ideal world I'd love to see that, but my guess is that that's not often going to be the case. Then the question becomes: is it more effort to backport this fix into a codebase I don't know? Or is it more effort to bring everything else up to using the new version. Either way, it's going to suck :)
- snowwrestler 8y agoBackports are very rarely provided by the community for older plugin/module versions. Backporting by hand, on your site, makes technical debt worse. Now, not only are you not up to date with the community code, but you've got extra custom code that will have to be integrated or torn out to catch up. In terms of competencies: if a team is struggling to integrate and deploy community-provided code, how good a job are they likely to do writing, testing, and deploying custom code? Especially in a hurry. That's what I mean by flexing the muscle. A team that updates their site's code frequently is going to be a team that understands their application better, has more complete test coverage, and deploys with more confidence. And if custom code is required (like a backport), they're going to be better equipped for that too.
- bluesnowmonkey 8y agoIt's true for any kind of library you use. Updating dependencies to the latest version is a form of regular maintenance you have to do.