git-annex/doc/design/assistant/android.mdwn
Joey Hess 686760befc typo
2012-06-14 12:27:30 -04:00

62 lines
2 KiB
Markdown

Porting git-annex to Android will use the Android native SDK.
A hopefully small Java app will be developed, which runs the webapp
daemon, and a web browser to display it.
### programs to port
These will probably need to be bundled into the Android app, unless already
available in the App Store.
* ssh (native ssh needed for scp, not a client like ConnectBot)
* rsync
* gpg
* git (not all git commands are needed,
but core plumbing and a few like `git-add` are.)
### Android specific features
The app should be aware of power status, and avoid expensive background
jobs when low on battery or run flat out when plugged in.
The app should be aware of network status, and avoid expensive data
transfers when not on wifi. This may need to be configurable.
### FAT sucks
The main media partition will use some awful FAT filesystem format from
1982 that cannot support git-annex's symlinks. (Hopefully it can at least
handle all of git's filenames.) Possible approaches to this follow.
(May want to consider which of these would make a Windows port easier too.)
#### bare git repo with file browser
Keep only a bare git repo on Android. The app would then need to include
a file browser to access the files in there, and adding a file would move
it into the repo.
Not ideal.
Could be improved some by registering git-annex as a file handling app on
Android, allowing you to "send to" git-annex.
#### implement git smudge filters
See [[todo/smudge]].
Difficult. Would make git-annex generally better.
#### keep files outside bare git repo
Use a bare git repo but don't keep files in `annex/objects`, instead
leave them outside the repo, and add some local mapping to find them.
Problem: Would leave files unlocked to modification, which might lose a
version git-annex dependend upon existing on the phone. (Maybe the phone
would have to be always considered an untrusted repo, which probably
makes sense anyway.)
#### crazy `LD_PRELOAD` wrapper
Need I say more? (Also, Android's linker may not even support it.)