Planning for Sustainable Software

Software is like milk, if you let it sit out too long, it expires. Sure, your users might keep using a software package that is a little past its freshness date, but it will be a sour experience.

Think of how much the environment running the software changes over time – the OS gets updated, technology standards change, programming languages fade away. It is virtually impossible to write software today and expect it will still run properly 25 years from now.

Remember a simpler time only 15 years ago, before the first iPhones. You probably had a cell phone, and it could make phone calls and send texts, but not much more. Websites ran on computer screens with limited resolution (1024×768 was a pretty high resolution back then). A pixel on a 15 inch computer monitor was much larger than it is on a smart-phone, and nobody even imagined someone taking their computer screen and turning it on its side.

We can’t predict what environments wll be expected to run software on in another 15 years, but we can take some cautionary measures, to extend the life of the programs we write today and make it easier for the programmers of the future who will be tasked with updating them.

Sustainable Tools Today Mean Sustainable Software Tomorrow

Software is not built from nothing. We use a multitude of existing software tools and components to create our new programs. These include the operating systems we support, the programming language we use, the database we want, and a large number of packages we use (numpy, React, etc…)

If you want your software to be sustainable, you should use tools and components that are sustainable – those that are likely to still be supported and used in 10 years.

The best way to ensure this, is to employ the most commonly used tools and packages that are backed by a large community or corporation and have a very large installed user base. The more widely used, the better. All three modern OSes – Windows, Linux and OS X – are still going to be supported in 10 or 20 years. Because if they don’t, pretty much every software project in the world will need to be rewritten from scratch – and that will not happen.

Choose languages that are widely used. Java, Javascript, C, C++, Python, C# – all of these are so widely used, they will moat likely still be supported in two decades. Even if they’ll be considered “legacy” or “old” then, there will still be people who know how to work with and sustain it. Since TypeScript is backed by a large corporation (Microsoft), it, too, is likely to be supported for a long time.

When choosing a framework, use the same logic. React is so widely used, and backed by Facebook, that it is a pretty safe bet that you can will still be able t run a React website in 10 years. Same goes for Angular. Vue is used extensively by large Chinese companies, it is also unlikely to disappear.

Supporting Sustainability Over Time

In addition to using the most up-to-date software tools and components, you also need to update your code on a regular basis to make sure it remains sustainable over time.

As time goes by, some of the packages you use become outdated. Perhaps something became incompatible with modern browsers (like old versions of Polymer that just stopped working with Chrome 80 a few month ago), or perhaps the old version has no more security updates (such Python 2, which stopped being supported at the end of 2019).

You should check your software once a year, to make sure it can still be built properly. You may need to change some versions of the packages you use, and this may require some code changes.

To minimize these changes, try to use LTS (Long Term Support) versions of your tools and packages. A tool version that is guaranteed to be supported for 3 years does not need to be updated yearly.

Putting in a small amount of time at regular intervals will make sure you won’t have to do for major revisions and upgrades all at once.

Budgeting for Sustainability

When you plan a budget for a sustainable project, make sure you reserve enough funds to support this yearly maintenance process. It may require just a couple of days a year in most years, or up to a few weeks of work if there are major changes and upgrades in the packages you use.

One other issue that you want to plan for in your sustainability budget is is documentation. Five years from now, your lab will have different team member, ones who did not participate in the original development of your software. You need to prepare enough documentation so that new people can support your software. Writing this documentation and updating it takes time, but in the long time, it will save you time and money could save your software, so don’t forget to budget it in as well.

As a rule of thumb, allocate around 10% of your budget for documentation and sustainability.

Leave a Comment