This commit is contained in:
Joey Hess 2012-05-26 21:24:43 -04:00
parent ec9f793db1
commit 6703892e83
3 changed files with 24 additions and 32 deletions

View file

@ -5,11 +5,19 @@ This is my design and plan for developing it.
Still being fleshed out, still many ideas and use cases to add.
Feel free to chip in with comments! --[[Joey]]
## the pitch
The blue sky goal would be something automated like dropbox, except fully
distributed. All files put into the repository would propagate out
to all the other clones of it, as network links allow. Note that while
dropbox allows modifying files, git-annex freezes them upon creation,
so this would not be 100% equivalent to dropbox.
## roadmap
* Month 1 "like dropbox": [[!traillink inotify]] [[!traillink syncing]]
* Month 2 "shiny webapp": [[!traillink webapp]] [[!traillink progressbars]]
* Month 3 "easy setup": [[!traillink configurators]]
* Month 4: polishing and overflow; release
* Month 4 "release": [[!traillink leftovers]]; release
* Months 5-6 "9k bonus round": [[!traillink Android]]
* In my overfunded nighmares: [[!traillink Windows]]

View file

@ -0,0 +1,14 @@
Things that don't fit anywhere else:
* Somehow get content that is unavailable. This is problematic with inotify,
since we only get an event once the user has tried (and failed) to read
from the file. This is only needed if all the files in the directory
are not kept synced, but in some situations (ie, low disk space phones),
that is likely.
* Drop files that have not been used lately, or meet some other criteria
(as long as there's a copy elsewhere).
* Perhaps automatically dropunused files that have been deleted,
although I cannot see a way to do that, since by the time the inotify
deletion event arrives, the file is deleted, and we cannot see what
its symlink pointed to! Alternatively, perhaps automatically
do an expensive unused/dropunused cleanup process.

View file

@ -9,34 +9,4 @@ to all the other clones of it, as network links allow. Note that while
dropbox allows modifying files, git-annex freezes them upon creation,
so this would not be 100% equivalent to dropbox. --[[Joey]]
----
There is a `watch` branch in git that adds such a command, although currently
it only handles adding new files, and nothing else. To make this really
useful, it needs to:
- notice deleted files and stage the deletion
(tricky; there's a race with add..)
- notice renamed files, auto-fix the symlink, and stage the new file location
- periodically auto-commit staged changes
- honor .gitignore, not adding files it excludes
Also nice to have would be:
- Somehow sync remotes, possibly using a push sync like dvcs-autosync
does, so they are immediately updated.
- Somehow get content that is unavailable. This is problematic with inotify,
since we only get an event once the user has tried (and failed) to read
from the file. Perhaps instead, automatically copy content that is added
out to remotes, with the goal of all repos eventually getting a copy,
if df allows.
- Drop files that have not been used lately, or meet some other criteria
(as long as there's a copy elsewhere).
- Perhaps automatically dropunused files that have been deleted,
although I cannot see a way to do that, since by the time the inotify
deletion event arrives, the file is deleted, and we cannot see what
its symlink pointed to! Alternatively, perhaps automatically
do an expensive unused/dropunused cleanup process.
- Support OSes other than Linux; it only uses inotify currently.
This is a big project with its own [[design pages|design/assistant]].