The main issue is that the entire system is currently asynchronous:
- user closes app A
- app A starts saving its state while the windows are closed
- app A relinquishes the name on the session bus
- user starts app A again
- the system instantiates app A while the previous instance is still busy saving state
- there is no state for the new app A instance to restore
- the state for the old app A instance is dropped
This will lead to data loss and an inconsistent state.
We discussed various approaches at the GTK hackfest in February, and we have a few ideas we wish to iterate early in the next development cycle, before committing to an API.
Getting things right on Linux is the priority; we are aware that other platforms have more synchronous approaches, so we need to ensure that Linux is covered.