| | 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 |