How to preserve old software – with snaps

by Igor Ljubuncic on 7 May 2020

If you have been using computers for some time now, you probably have fond memories of this or that piece of software from the past, an application or a game that was fun, useful and just plain great, but which isn’t available any longer. For those who have had a chance to experience the digital boom of the 90s and early 2000s, software has gone from spartan DOS applications shared on floppy disks to large, network-connected tools that can solve complex problems, often using detailed, realistic graphics. The revolution also led to significant changes in underlying technology and formats, and almost overnight “old” tools became obsolete. And of course, there’s the steady onward march of progress, and we often have to leave software behind.

However, sometimes, there is still time and place for old applications in the modern world. This could be legacy software that your business relies on, and which may not have suitable (modern) replacements. There could also be the question of cost and complexity in replacing these legacy tools, as they are often deeply woven into workflows, with delicate setups and intricate workarounds. As the old adage goes: if it ain’t broken, don’t touch it.

Old applications may not necessarily solve or address every contemporary use case, but they can be of real, practical value. Or you may want to use them out of pure nostalgia, like perhaps the old games. Indeed, there are ways to preserve ancient content, even if it’s no longer available in standard online archives. Leave no (software) behind – with snaps!

Software maintenance in Linux

While there has been a brisk revival of old software, especially games, through stores like Steam and GOG and different compatibility layers that enable new systems to run legacy code, lots of old applications fall under the radar. In Linux, the preservation of old software is perhaps even more challenging than in other operating systems.

Take Ubuntu as an example. Each release comes with its own archives, providing specific versions of tools and their library dependencies. Usually, you cannot freely mix packages across multiple archives. For instance, packages provided in Ubuntu 16.04 may not necessarily be compatible with those in Ubuntu 19.10, and vice versa. Often, applications are compiled against specific versions of libraries. If those libraries become unavailable, applications that depend on them will no longer run.

The reasons for the deprecation or removal of older libraries and their versions stem from various, legitimate operational reasons – security, features, termination of support by the original developer or provider. Quite often, Linux distribution maintainers will remove packages from the archives if they are seen as unmaintained upstream (by their original owners or the community). However, that does not necessarily mean that these “unmaintained” applications are no longer of value, or that they do not work. It practically means that they may not be updated. In some cases, especially when there are no security risks involved, this is a perfectly acceptable usage scenario.

For those who require stability and longevity, there are of course long-term support releases like Ubuntu 18.04 or 20.04 – but even here, eventually there is an end to the availability of certain applications and libraries.

Snaps to the rescue!

One way to work around the library dependency conundrum in Linux is – to break it. Self-contained application formats provide a solution to the issue. This way, programs and all their necessary components can be bundled into a single archive, and used reliably even if the original sources and online repositories may have disappeared, or stopped providing them. Indeed, snaps allow applications to run independently of the underlying operating system. As long as the system can run the snapd service, snaps will run and behave consistently, including not only various versions of Ubuntu, but also across other distributions. When it comes to snaps, this list extends to more than 40 distributions.

The deprecation of Python 2 is a good real-life example. The Python Software Foundation has formally set the Python 2 EOL date to January 2020, which means newer Linux systems no longer ship with it. However, it is still available in Ubuntu 18.04, and you can build applications that rely on it as snaps. This allows you to use Python 2 software on Ubuntu 20.04, as well as other distributions.

Similarly, most distributions no longer provide the 32-bit images (for a while now). However, snaps support six hardware architectures, including i386, so you can build snaps that target 32-bit systems. Again, this provides you with additional flexibility in how you create and use software.

Self-preservation society

So you may be wondering, all right, snaps can preserve old software. How old? Well, how about Mosaic old?

NCSA Mosaic was one of the first graphical Web browsers, with support for protocols like NNTP, FTP and Gopher (possibly unrelated to the Caddyshack gopher). It could display images inline with text, and it was a technological breakthrough of immense proportions at the time. Released in 1992, it was officially discontinued in early 1997.

If you want to try it, you can. It’s available as a snap in the Snap Store.

KompoZer is another example. A fork of the Composer WYSIWYG HTML editor, it was last available for Ubuntu users in Precise Pangolin. Since, it has become progressively more difficult to find the KompoZer packages and install them in modern versions of Linux. But if you have use for this kind of software, then it is available as a snap, which guarantees it will continue working even as the world inexorably marches forward.

Summary

Often, old software goes into the great digital beyond, to join many of its kind that had paved the path to the modern technological landscape we have today. But it does not have to be that way.

Snaps provide an elegant way to preserve applications, both important legacy tools that have suitable replacements, as well as valuable, significant pieces of history that should not be forgotten or lost. In the same way it has become easier to play ancient games on new computers and operating systems, snaps can help you enjoy old applications in a safe way, without having to worry they will disappear from distribution archives or become incompatible with the underlying system libraries.

If you have any comments or ideas, or you’d perhaps like to suggest some old applications that should be snapped and saved from extinction, please join our forum and let us know. Or you could make those snaps yourself, and join the vibrant community of developers in the Snap Store!

Photo by Aaron Greenwood on Unsplash.

Newsletter Signup

Related posts

Popular snaps per distro (2020 edition)

Back in mid-2019, we wrote a blog post detailing and comparing the most popular snaps across multiple distributions – Arch Linux, CentOS, Debian, Fedora, Manjaro, and Ubuntu. This article gave us a fascinating insight into the usage patterns across these different systems and their audiences. We wanted to see if and how the situation has […]

The Hunt for Rogue Time – How we investigated and solved the Chromium snap slow startup problem

In October, we shared a blog post detailing significant snap startup time improvements due to the use of a new compression algorithm. In that article, we focused on the cold and hot application startups, but we did not delve much into the first-run setup scenario. While running our tests, we observed a rather interesting phenomenon, […]

Introducing etrace – a multi-purpose application profiling tool

These days, the internal workings of Linux applications involve many different moving parts. Sometimes, it can be rather difficult to debug them when things go wrong or run slower than expected. Tracing an application’s execution is one way of understanding potential issues without diving into the source code. To this end, we wrote an app […]