| 1 | = BOINC on Android = |
| 2 | |
| 3 | == History == |
| 4 | |
| 5 | Jeff Eastlack (then of Freescale) has been working on getting SETI@home |
| 6 | (and other scientific programs) to run fast on ARM processors since 2007. |
| 7 | As of 2011 he had SETI@home doing about 1 GFLOPS on the latest Freescale processor. |
| 8 | |
| 9 | In 2008 a team led by Oded Ben-Dov ported SETI@home and a simplified BOINC client to Java on Android. |
| 10 | This was a proof of concept but is not the right long-term approach, |
| 11 | as Android is now able to run native-mode programs. |
| 12 | |
| 13 | At about the same time, Peter Hanappe from Sony Research wrote, in C++, a simplified BOINC client |
| 14 | called BOINCLite, which is able to handle only 1 project attachment and 1 job at a time. |
| 15 | We considered this as a basis for BOINC on Android but decided it was too limited. |
| 16 | |
| 17 | At the 2011 BOINC Workshop, Keith Uplinger, Peter Hanappe and Michael Tarantino |
| 18 | experimented with Android and wrote up |
| 19 | [wiki:WorkShop11/HackFest#BOINConAndroid instructions for building Android apps on Windows]. |
| 20 | |
| 21 | In 2011, Carl Christensen and Peter Hanappe independently built the BOINC client |
| 22 | (and the various libraries it uses) on Android. |
| 23 | |
| 24 | == Architecture == |
| 25 | |
| 26 | As of now, the preferred architecture is based on the standard BOINC client, |
| 27 | so that we can allow multiple attachments, multiple jobs running in parallel, |
| 28 | and queued jobs. |
| 29 | |
| 30 | On !Win/Mac/Linux, the GUI and the client are separate processes that |
| 31 | communicate over a TCP connection. |
| 32 | However (as proposed by Peter Hanappe) for Android it's probably better |
| 33 | to bundle them in the same program. |
| 34 | The BOINC client would be included as a library, |
| 35 | and would run in a separate thread. |
| 36 | |
| 37 | == What about the GUI? == |
| 38 | |
| 39 | The current BOINC GUI (the Manager) is implemented using WxWidgets, |
| 40 | for which no port to Android exists. |
| 41 | Also, though the Manager's "simple view" is similar to what |
| 42 | we might want on Android, it's not quite right. |
| 43 | |
| 44 | So the plan is to implement a new GUI, in Java, using the Android toolkit, |
| 45 | which will communicate with the client using the existing GUI RPC mechanism. |
| 46 | (Note: this mechanism currently uses a TCP connection, but it could be modified |
| 47 | to use Unix pipes or some other IPC mechanism). |
| 48 | |
| 49 | Note: someone (I'm not sure who) has already implemented a BOINC GUI for Android: |
| 50 | |
| 51 | http://code.google.com/p/androboinc/ |
| 52 | |
| 53 | This is intended to control BOINC clients running on remote hosts, |
| 54 | but in principle it could control a local client. |
| 55 | I haven't looked at it. |
| 56 | |
| 57 | == Project plan == |
| 58 | |
| 59 | To be determined |