# Tips for stable and portable software

DevFeed: [Tips for stable and portable software](<https://devfeed.tech/articles/tips-for-stable-and-portable-software-21489.md>)

Original publisher: [Read original article](<https://begriffs.com/posts/2020-08-31-portable-stable-software.html>)

Published: 2020-08-31T00:00:00Z

Content type: tutorial

Language: en

Sources: [Joe Nelson](<https://devfeed.tech/sources/joe-nelson.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [C](<https://devfeed.tech/topics/c.md>), [Development](<https://devfeed.tech/topics/development.md>), [systems](<https://devfeed.tech/topics/systems.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [development](<https://devfeed.tech/tags/development.md>), [portable](<https://devfeed.tech/tags/portable.md>), [posix](<https://devfeed.tech/tags/posix.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [standards](<https://devfeed.tech/tags/standards.md>), [tips](<https://devfeed.tech/tags/tips.md>)

## AI overview

The article presents principles for building stable, portable software that remains easy to build across systems and continues working as environments change. It recommends understanding software in layers, preferring languages beyond the single-implementation stage, and using standardized languages when long-term compatibility matters. The author discusses C, POSIX compatibility, foundational libraries, and selecting an appropriate language-standard version such as C99.

## Source excerpt

2020-08-31 After several years' involvement with quickly evolving programming languages, I've come to appreciate stability. I'd like to make my programs easy to build on a wide variety of systems with minimal adjustment. I'd like them to keep working long into the future as environments change. To think about stability more clearly, let's divide a functioning program into its layers. Then we can examine development choices one layer at a time.