Functional homogeneity ensures that a service is always available, but it offers no guarantees about the data that service may be managing. Replicated state serves this purpose. Hard state consists of information that cannot be lost and therefore must be maintained in stable storage. For example, an email message and a user's password are hard state. Porcupine replicates hard state so that its derived soft state can be reconstructed during failure.
Soft state consists of information that, if lost, can be reconstructed from existing hard state.
For example, the list of nodes containing mail for a particular user is soft state, because it can be reconstructed by a distributed disk scan. Most soft state is maintained on only one node at a given instant. The exception is directories that are themselves soft state. Such directories are replicated on every node to improve performance. This approach minimizes persistent store updates, message traffic, and consistency management overhead.