Google Summer of Code 2013 project ideas
Enhance the BOINC Android GUI
The current BOINC Android GUI is functional but not visually appealing, and it lacks some usability features. The project is to design and implement improvements to the GUI. Possibilities includes:
- Add graphics to the GUI; for example, allow projects to supply slide-show images illustrating their science.
- Implement mechanism that allow users to smoothly navigate from the GUI to web-based features on project sites, as is done on the desktop BOINC GUI.
- Implement the "notices" mechanism that allows project to push news items to volunteers.
Automated testing of BOINC
We're in the process of deploying a Jenkins-based automated test system for BOINC. Help us add unit tests to the BOINC code, and to design end-to-end tests that exercise the entire system under a range of use cases and error conditions.
Job size matching
Some BOINC projects now have applications with versions for GPUs, CPUs, and mobile devices. The speed of these devices varies by roughly 3 orders of magnitude; a job that takes 10 minutes to complete on a GPU might take a week to complete on a mobile device. This disparity is undesirable - we'd like all jobs to take roughly the same amount of time. To do this, we need a way to generate an appropriate distribution of jobs sizes, based on a dynamic resource pool, and we need a scheduling mechanisms that distributes jobs appropriately. Design and implement these.
Accelerating batch completion
Volunteer computing resources are unreliable - computers fail, people uninstall BOINC, and so on. Roughly 5% of jobs fail or time out. This means that in a batch of 10,000 jobs, 500 or so will fail. We retry these (after a delay of a few days) and 25 or so will fail, and so on. Thus is can take quite a long time to finish the entire batch.
This problem can be solved by using more reliable computers to handle retries and jobs at the end of a batch. Doing so, however, is tricky. Design and implement a mechanism for doing this.