wiki:MacDeveloper

Volunteer Macintosh Developers needed for BOINC

Brief Platform Overview

The Berkeley Open Infrastructure for Network Computing (BOINC) <https://boinc.berkeley.edu> is open-source software <https://github.com/BOINC/boinc> for volunteer distributed computing and grid computing. BOINC has allowed over 4 million volunteers from the general public to donate their computer's idle time to humanitarian and scientific research, choosing among dozens of projects. BOINC automatically downloads research applications and data from the selected projects, manages the processing, and returns the completed results.

BOINC includes client, server, and web components, and APIs for connecting other components.

The BOINC client software runs on each volunteer's computer. It has two main components:

  • The BOINC Client itself, a daemon which runs in the background and manages (starts, stops, controls) the executables provided by the selected projects
  • The BOINC Manager, a GUI application which allows the user to monitor and control the BOINC Client daemon.

The BOINC Client and Manager are written in C++ as cross-platform code to support MS Windows, Macintosh, Linux, and several other operating systems. While we currently have a number of volunteer developers supporting MS Windows and Linux, our principle Macintosh developer, Charlie Fenton, is winding down his involvement after many years. He is prepared to help a few new Macintosh BOINC developers get up to speed.

Skills Needed

Most of the Macintosh platform-specific work involves the BOINC Manager. Because of the cross-platform nature of the BOINC software, it is designed and built very differently from typical Macintosh applications, so a good understanding of UNIX APIs and programming techniques and tools is important. Familiarity with Xcode is also required.

The Manager is built using the wxWidgets cross-platform GUI library <http://www.wxwidgets.org>, so the developer should be familiar with wxWidgets or be prepared to learn that. The programmer will need to use creative methods to integrate the UNIX code with Macintosh Cocoa methods.

The Macintosh implementation of BOINC provides security using UNIX account-based sandboxing, as described in <http://boinc.berkeley.edu/trac/wiki/SandboxUser> and <http://boinc.berkeley.edu/sandbox_design.php>. For this and other reasons, the BOINC client software uses a custom installer on the Macintosh, which also requires maintenance.

The Mac developer may occasionally need to update the BOINC screensaver or the libraries used by science projects to build their applications for BOINC.

While not essential, it would be helpful if the Macintosh developer can run Microsoft Windows 7 or later, either on a separate PC or on the Mac via Boot Camp, VirtualBox or other software. Since BOINC is cross-platform software, this allows the developer to check that changes made for Macintosh haven't broken any functionality on MS Windows.

For further information, we suggest reading the following documentation: HowToBuildBOINC_XCode.pdf

Help Needed

BOINC needs several volunteers who are willing to become experienced with the BOINC Mac client so that they can:

BOINC Contribution Information

BOINC is an open source project hosted on Github at https://github.com/BOINC/boinc. Information about the development workflow for contributing code to the BOINC project can be found here: https://github.com/BOINC/boinc-policy#development-processes The information there describes how to create a code contribution submissions and what to expect once you create a pull request.

Additional information and help for contributing to BOINC can be found by subscribing to the BOINC Developers email list and by participating in the fortnightly "Contributor Call".

How to get Help

If you have a question or need help, you can post a message to the boinc_dev mailing list which Charlie Fenton, the current principle Macintosh developer, monitors. If you are investigating a specific issue on GitHub, you can post a comment on the issue and use a GitHub 'mention' @CharlieFenton and GitHub will notify him.

Last modified 7 months ago Last modified on 02/14/19 13:45:12