Off-line Mode Functional Specification
There exists two categories of versioning systems.
One targeted to local area networks (e.g. VSS)
and others supporting more distributed environments
(e.g. CVS). Users of the later systems often
works in off-line mode, disconnected from actual
repository. Setting IDE into off-line mode must
limit IDE operations to work only over local
caches.
Offline mode could be also used for LAN
targeted systems to catch situations before IDE
users authorize themselves to use the system.
Entering Off-line Mode
Users can enter off-line mode explicitly by
invoking respective action. Reasoning can be various
e.g. they want to protect their modem connection
from being flooded by versioning system communication.
The second option is automatic repository connection
problems detection. Any action explicitly invoked by users
checks progress and if it detects network failure
it asks users for confirmation that it can enter
off-line mode. Background actions in this case
almost silently fails. They cannot take users focus
so they are limited to signaling into a log file
or an icon, whatever.
Leaving Off-line Mode
Users can leave off-line mode explicitly by
invoking respective action. Reasoning can be various.
The second option is automatic repository connection
detection. Any action explicitly invoked by users
in off-line mode that requires repository access tests
the repository connection and on success it asks users
for confirmation that it can enter on-line mode. On
failure it notifies user about problem (missing
network connection or missing password) and suggests
resolution. Background actions requiring repository
never trigger leaving off-line mode.
Implementation Issues
- API for querying and setting actual mode and authorization is needed.
- Commands must be able to report connection problems (net failure and authorization) to framework.
- SPI for connection probes and authorization setup is needed.
All requirements can be eliminated if mode handling
becomes command responsibility. It's not yet obvious what solution
is better.
Initial DRAFT
Petr Kuzel on Dec 22 2004