Then, assemble various programs from these modules and see which versions do best on a test suite. Finally, create software from these versions so that the versions vote on the right answer. This way, you can build software systems that are more reliable than any single component. Joy would like software to fail only very rarely. The final fault tolerance that needs to be accounted for is user fault tolerance.
Users make mistakes.
We change our passwords and then forget them. We don't want to be denied access. In particular, it's very easy for mistakes made by system administrators to break many things. Joy would like us to use some of the future computing power to build systems that allow users to recover from their mistakes. His goal is for us to move towards reliable, easy to use, and robust software that crashes as rarely as airplanes.