git-annex/doc/design/assistant/android.mdwn

46 lines
2 KiB
Markdown

### goals
1. Get git-annex working at the command line in Android,
along with all the programs it needs, and the assistant. **done**
2. Deal with crippled filesystem; no symlinks; etc. **done**
3. Get an easy to install Android app built. **done**
4. Get the webapp working. Needs Template Haskell, or
switching to <http://www.yesodweb.com/blog/2012/10/yesod-pure>.
5. Possibly, switch from running inside terminal app to real standalone app.
See <https://github.com/neurocyte/android-haskell-activity>
and <https://github.com/neurocyte/foreign-jni>.
### 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.
## Template Haskell for android?
Best lead I have on getting cross compilation of TH working is that GHCJS
does it, and that it involves compiling each file twice, once natively for
TH and once for cross.
## TODO
* webapp
* autostart any configured assistants. Best on boot, but may need to only
do it when app is opened for the first time.
* Don't make app initially open terminal, but go to a page that
allows opening the webapp or terminal.
* I have seen an assistant thread crash with an interrupted system call
when the device went to sleep while it was running. Auto-detect and deal with
that somehow.
* Make git stop complaining that "warning: no threads uspport, ignoring --threads"
* git does not support http remotes. To fix, need to port libcurl and
allow git to link to it.
* getEnvironment is broken on Android <https://github.com/neurocyte/ghc-android/issues/7>
and a few places use it.
* Enable WebDAV support. Currently needs template haskell (could be avoided
by changing the DAV library to not use it), and also networking support,
which seems broken in current ghc-android.
* Get test suite to pass. Current failure is because `git fetch` is somehow
broken with local repositories.