Let your software wear CLOGS

Last week I was at the Programming Local First 2022 workshop and the Ink and Switch Unconference in Berlin, and an interesting topic we talked about is how software keeps becoming obsolete. Part of this is site deaths. Another part is old software that no longer comes out on newer operating systems, or new software that no longer comes out for older operating systems.

Sometimes, progress is good, but there are three major potential problems when software updates or gets replaced by a newer thing:

Neighbouring systems can be polyglot (CLOGS-aware), and data can be translated on-the-fly. But users may just prefer to keep using the user interface they are familiar with. And this may be possible through CLOGS.

Suppose two companies merge, and their ERP systems need to merge too. This can be achieved through an expensive data migration, or with Master Data Management and Data Virtualisation, the systems can run side-by-side. If data is not migrated away from the format it was in, then software can maybe also be kept running.

To allow software to keep running despite switching dependencies, it would be good to package the software in a way that includes all its dependencies, all the way down to the operating system. Docker is a useful tool that helps with this.

Sometimes a software system will depend on a connection with a neighbouring system that gets shut down, but if that neighbouring system also adheres to CLOGS, then the old API can be kept operational.

A major headache could be security updates; it may not always be possible to maintain an API if for instance its authentication protocol is outdated.

Another problem would be the build-up of complexity if old database tables need to be kept around for backwards compatibility. It's basically the burden of Legacy Code.

In the end I think maybe this problem is fundamentally unsolvable: software just gets deprecated and it's a pity but that's it.