Long-Term Maintainability
Over the last few decades, software has changed. It’s become more complex and evolves at rapid pace. In the 1990s, it was easier for a single team to design and manage an entire software system and support it for 10-20 years. Now, the cost and complexity of maintaining such systems are growing over time—and will continue to grow.
In most cases, it isn't practical for a single team to maintain device firmware anymore. Many modern devices contain third-party open source components, often ‘frozen’ to specific versions when the device is released. Over time, the cost of maintaining these old versions increases exponentially.
Long-Term Maintainability stands in contrast to long-term support (LTS). In the traditional LTS model, engineers make targeted fixes to an otherwise static codebase. This allows for a reasonably simple QA process because the list of changes to validate is very small. However, the in-house code increasingly diverges from the upstream project, making it less likely that security fixes from upstream will be usable without significant effort to rewrite them.
Why a ‘ship and remember’ approach is critical to a successful, long-term software project
Codethink’s approach to Long-Term Maintainability means you can continually update the software over its lifetime, introducing new developments to allow your devices to always work reliably.
The trade-off is that this comes with a cost. Long-Term Maintainability requires you to design systems that can continually be upgraded to the latest version available, with a robust QA process to validate ongoing changes.
Nevertheless, this approach is more cost-effective and secure long-term, as it allows you to be as close to upstream as possible.
Here are some of the benefits of adopting Long-Term Maintainability for your software project:
- Protection against new and emerging vulnerabilities
- Performance enhancements and advanced functionality
- Reduced maintenance costs and improved software life
- Increased user trust
How will Codethink help?
Many organisations will need help adapting to the new state of the art to stay competitive and grow their business. Long-Term Maintainability is only possible once you can fully trust your build pipeline, automated tests and QA process, device update system, and integration process for third-party software.
Codethink will support you by working with the entire ecosystem, implementing the fundamental concepts of Long-Term Maintainability throughout your organisation, continuously finding and fixing issues, and confidently applying them to your products.
To help you achieve Long-Term Maintainability, we will provide:
- Maintainable software system architecture consulting
- Component maintenance support
- Build, integration, and QA pipeline consulting
- DevOps services and infrastructure setup (to support the above points)
Related content
We’ve published a number of recent articles relating to Long-Term Maintainability which you can read here:
- Introducing Long-Term Maintainability with Open Source
- Introducing Our Open-Source Tool: Quality Assurance Daemon
- Think before you Pip
- Introducing BuildStream 2.0
- The Linux kernel is a CNA - so what?
If you would like to learn more about how Codethink can support your Long-Term Maintainability strategy, get in touch via the ‘Contact Us’ page.