In the 1990s when I set up my first website, I hand-crafted the HTML by hand--like most everyone. The tools were crude and the sites were simple and mostly static. Then I learned PHP and built one that was somewhat dynamic and tied to a MySQL database. (A version of that from 2001 can be viewed at the Wayback Machine.) But it was still cumbersome to update and if I wanted to change the layout or graphics, I had a lot of work to do.
Drupal is a community-driven website-building framework that supports a large variety of organizations large and small. It is written in PHP and allows plug-ins to be written to extend its functionality. In the early versions, I wrote a few for my own use; now, there are so many powerful and well-supported plugins, my simple needs are easily satisfied by searching the contributed modules.
One thing I like about Drupal is that it is focused on security and best practices. But that's also it's Achilles heel--nearly every version is a breaking version where modules are not compatible with previous versions because some important data structure or plug-in callback method was changed. There are tools to migrate and things are getting better but it's always been a chore.
As new versions come out and development effort and support is shifted, older versions become obsolete and security vulnerabilities are no longer fixed. Usually, one version ends after the next is fully entrenched but there was an interesting difference that disrupted that pattern last year:
- Drupal 7 is no longer being actively developed but is still supported with security patches.
- Drupal 8 is no longer supported at all because a library framework it depends on is no longer supported.
- Drupal 9 is the current recommended version.
- Drupal 10 is in beta.
With each version upgrade of Drupal, its PHP requirements are upgraded as well:
- Drupal 7 requires PHP 5.2 but still works on 7.4
- Drupal 8 requires PHP 7.2 but works on 7.4
- Drupal 9 requires PHP 8.0.
The upgrade from 8 to 9 is supposed to be easy (I haven't yet gotten to that point) but from 7 to 8 is not as it is a breaking change. I rent shared website hosting space with 5 Drupal-based websites. I haven't kept all of them up-to-date as it takes time to replace modules and sometimes choose a new theme. Since they're on a shared space, the version of PHP in use affects all of them. This has caused a dilemma for me as I still have three of them on Drupal 7 (which is supported) while two of them have been upgraded to Drupal 8 (no longer supported) but are stuck there until the other three are moved because I can't upgrade the PHP requirements to support version 9 until they're all on version 8 and ready to be upgraded.
What's worse is that one of the Drupal 7 sites is a family photo site and the migrate process didn't bring over any pictures. I could dive into the migration API and probably write a custom module to do this for me but I don't really have time--and I had really hoped the migrate process would take care of it for me--I used pretty basic Drupal concepts.
So I'm taking a pause in the midst of this great Drupal upgrade to look at moving my family photos to a photo-sharing site instead of hosting them myself. My expertise is with Delphi; I only use Drupal on a half-dozen sites--and I'm really rusty with PHP. I think using someone else's expertise for hosting, displaying, organizing, and sharing photos will save me some time in the long run. Major Drupal upgrades are supposed to be simpler in the future and it's still a solid and well-supported platform overall so I'll keep using it for my simple blogging and informational site needs.
I used to love Drupal but the update process, security issues, backup and restore difficulties and overall content authoring experience required too much of my time, and some stressful moments. I’ve slowly migrated to the Hugo static website generator and even though I’ve lost some functionalities, I’ve gained a lot of piece of mind: no updates, no security issues, everything is backed up on git and can be hosted on any web server anywhere in a few seconds.
I understand that the Drupal team is aware of that as they provide many efforts to allow it to be a headless CMS.
Thanks for your comments, I'll check out Hugo. I've considered writing my own website generator in Delphi but it would take too much work to reinvent the wheel. I like the idea of writing markdown locally and letting Hugo generate the static content that doesn't require a specific version of PHP or some other conflicting server setting.