= Volunteer Macintosh Developers needed for BOINC = === Brief Platform Overview === The Berkeley Open Infrastructure for Network Computing (BOINC) <[https://boinc.berkeley.edu/ https://boinc.berkeley.edu]> is open-source software 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/ 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 and . 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: [https://github.com/BOINC/boinc/blob/master/mac_build/HowToBuildBOINC_XCode.pdf HowToBuildBOINC_XCode.pdf] === Help Needed === BOINC needs several volunteers who are willing to become experienced with the BOINC Mac client so that they can: * Monitor the BOINC alpha and BOINC developer mailing lists for reports of issues. See https://boinc.berkeley.edu/trac/wiki/EmailLists for details. * Monitor the BOINC !GitHub issues list for reports of issues with the Mac client. See https://github.com/BOINC/boinc/issues for details. * Investigate and resolve those issues as needed. * Create builds of the BOINC client for testing and distribution === 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". * You can sign up and read past postings for the BOINC Developer email list here: https://groups.google.com/a/ssl.berkeley.edu/forum/#!forum/boinc_dev. * Contributor calls are announced on the BOINC Developer email list. Past contributor calls can be reviewed here: https://drive.google.com/drive/folders/1tw7NOMJdGQQfqJrr6cJdcdTzPmocNkQh === How to get Help === If you have a question or need help, you can post a message to the [https://groups.google.com/a/ssl.berkeley.edu/forum/#!forum/boinc_dev boinc_dev mailing list] which Charlie Fenton, the current principle Macintosh developer, monitors. If you are investigating a specific [https://github.com/BOINC/boinc/issues issue on GitHub], you can post a comment on the issue and use a !GitHub 'mention' @!CharlieFenton and !GitHub will notify him.