Well fundamentally a stable system is one that doesn't suffer from instability. Once it is set-up to do a job it keeps on doing that job. No system is perfectly stable but some systems are much more unstable than others.
Instability can be split up into various categories.
- Instability caused by software bugs that were always there, but manifest conditionally or randomly.
- Instability caused by hardware bugs.
- Instability caused by software messing with other software.
- Instability caused by changes in the software.
Point 1 is mitigated through software maturity. With lots of users using the software for a long time and reporting bugs, hopefully most of the serious ones will be pinned down and fixed.
Point 2 can be the trickiest to deal with. Sufficiantly bad hardware will ruin aspirations for overall system stability, but many hardware issues once discovered and pinned-down can be mitigated by software changes.
Point 3 is mitigated by designing isolation into the system. So that when a peice of software does go haywire it's effects are hopefully contained to that one peice of software rather than the system as a whole.
Point 4 is why we have "stable releases" of software projects (including but not limited to operating system distributions). Instability caused by changes in software can be significant, but not changing the software at all is not really an option either because user needs and outside influences change.
Stable releases that receive a minimal set of critical and/or low-risk updates over a defined lifetime offering stability for that lifetime. At some point a new stable release replaces the old. There may well be breakage during the upgrade from one stable release to the next but that is something that can be planned-for and scheduled.