# HG changeset patch # User Jeff Hammel # Date 1364154395 25200 # Node ID 5f95af14b51c86111014d7a3595365dd94205103 # Parent 584a847d24910464464aea124b69c748f212fa0a notes diff -r 584a847d2491 -r 5f95af14b51c silvermirror-whitepaper.txt --- a/silvermirror-whitepaper.txt Sat Apr 09 12:10:19 2011 -0700 +++ b/silvermirror-whitepaper.txt Sun Mar 24 12:46:35 2013 -0700 @@ -1,4 +1,4 @@ -SilverMirror Whitepaper += SilverMirror Whitepaper = It is necessary to maintain parallel directory structures of various resources across an arbitrary number of computers. The traditional @@ -12,9 +12,10 @@ canonical trunk exists) is ideally suited to provide mirroring of desired resources across computers. -Implementation +== Implementation == -A front end to a DVCS - most likely mercurial but potentially bzr - +A front end to a DVCS or other - unison is completed, +mercurial is up next - will be written to keep resources in sync across an arbitrary number of computers. The front end, called SilverMirror, may be used to push or pull changes to resources. Optionally, a daemon will monitor @@ -28,7 +29,7 @@ pattern may be ignored, either globally or on a per resource basis, for the purpose of versioning. -Configuration +== Configuration == SilverMirror is configured via an INI file containing a section for each resource and a section for application configuration. @@ -61,18 +62,18 @@ In order to ensure coherency among resources, all relevant configuration options must be synced prior to push/pull transactions. -Default Configuration: +Default Configuration:: -[::SilverMirror::] -conflict = ClobberRemote + [::SilverMirror::] + conflict = ClobberRemote -Example of a more complex configuration: +Example of a more complex configuration:: -[::SilverMirror::] -conflict.push = ClobberRemote -conflict.pull = ClobberLocal + [::SilverMirror::] + conflict.push = ClobberRemote + conflict.pull = ClobberLocal -Push +== Push == Push changes to remote resources. When resources are pushed, first changes are pulled from each remote host in turn, conflicts between @@ -85,22 +86,22 @@ pushed to the repository. When a conflict occurs between local resources and remote resources, the conflict handler is used. -Pull +== Pull == Get changes to the cloud filesystem resources. If no host is specified, pull changes from all known + accessible hosts. -Namespaced Resources +== Namespaced Resources == It is possible to maintain versioning of a subdirectory within a resource. -Example: +Example:: -[docs] -directory = /path/to/docs + [docs] + directory = /path/to/docs -[docs:private] + [docs:private] This configuration snippet describes a resource, [docs:private], namespaced within the [docs] resource. [docs:private] inherits @@ -120,7 +121,7 @@ was specified in the directory option of the [docs:private] section, it would be joined with the base directory of [docs]. -Behavior on Conflicts +== Behavior on Conflicts == Conflict handlers are set via setuptools entry points. Several conflict handlers are provided with SilverMirror: @@ -137,14 +138,14 @@ silvermirror push -d ClobberRemote -Command Line Usage +== Command Line Usage == silvermirror [push|pull] [resource] [options] In the simplest invocation, SilverMirror is used with no command line -arguments: +arguments:: -silvermirror + silvermirror This pushes changes of the resource as determined by the current working directory after pulling outstanding changes from all @@ -191,7 +192,7 @@ automatically ignore. In a future implementation, these resources would optionally be checked out or updated upon a pull. -Automatic Syncronization +== Automatic Syncronization == SilverMirror includes a script that will automatically invoke syncronizing the resources in a specified period of time. This daemon, @@ -205,7 +206,12 @@ As an alternative, the silvermirror program may be invoked from a cron job. -Future Work +== Events == + +SilverMirror [TODO] may be hooked up to an event listener for +filesystem changes and sync on them. + +== Future Work == SilverMirror implements a cloud filesystem which may be accessed nearly transparently by an arbitrary number of computers. Several @@ -235,3 +241,8 @@ all of the files necessary to create a new SilverMirror node. * SilverMirror + Firefox Sync + +== Vision == + +Essentially, SilverMirror is intended as a portable filesystem on a +filesystem type interface.