[[PageOutline]] = BOINC software development = BOINC is free software, distributed under the Lesser General Public License (LGPL). The University of California holds the copyright on all BOINC source code. By submitting contributions to the BOINC code, you irrevocably assign all right, title, and interest, including copyright and all copyright rights, in such contributions to The Regents of the University of California, who may then use the code for any purpose that it desires. == Get and build BOINC software == * [SourceCode Get source code] * [SoftwarePrereqsUnix Software prerequisites] * [BuildSystem Building on Unix] * [PythonMysql Installing python-mysqldb] * [CompileApp Building applications] * [CompileClient Building the client] * [MacBuild applications on Mac OS X] * [VirtualMachines Linux VMs for use with BOINC] == BOINC development == * [ProjectPeople Personnel and contributors] * [DevProcess Development process] * [DevProjects Development projects] * [http://boinc.berkeley.edu/email_lists.php boinc_dev], an email list for BOINC developers * [CodingStyle Coding style] * [http://boinc.berkeley.edu/test.php Testing framework] * [AddOnDev Writing add-on software] * [UsingSvn Using SVN] * [DebugClientWin Debugging the client on Windows] == Writing add-on software == BOINC's architecture is 'open'; documented interfaces making it possible to develop various types of applications and web sites that interact with BOINC components. Examples include: * [http://boinc.berkeley.edu/gui_rpc.php Client GUIs]: Applications that control a local or remote core client. * [CreditStats Credit statistics web sites]: Web sites showing credit information (project totals, user/team/country leaderboards) based on daily XML feeds of statistics data from BOINC projects. The XML format is documented [http://boinc.berkeley.edu/xml_stats.php here]. * [http://boinc.berkeley.edu/acct_mgt.php Account managers]: Web sites that let BOINC users create and manage accounts on multiple projects. * [StatsXml Aggregate credit statistics] * [http://boinc.berkeley.edu/server_status.php Server status web sites]: Web sites showing the server status of BOINC projects. * [WebRpc Web RPCs]: These interfaces let a program or web site obtain information about users and hosts from projects. * [ProjectConfigRpc Project configuration web RPC] * [ServerStatusRpc Server status web RPC] * [PrefsOverride Local editing of preferences]: This mechanism lets you write programs for local editing of preferences. Check [http://boinc.berkeley.edu/addons.php the index of add-on software] before writing anything (it may already exist). The index has instructions for submitting new add-ons. == Implementation notes == === Client === * [ClientFiles File structure] * [ClientFsm FSM structure] * [ClientData Data structures] * [ClientLogic Main loop logic] * [ClientSched Client scheduling policies] * [HostMeasurement Host measurements] * [HostId Host identification] * [ClientApp Core client/application interaction (basic)] * [ClientStartup Client configuration files ] * [AutoUpdate Automatic update] * [http://boinc.berkeley.edu/memory.php Memory management] * [ScreensaverLogic Screensaver logic] * [http://boinc.berkeley.edu/sandbox.php Sandbox implementation] === Server programs === * [DataBase The BOINC database] * [http://boinc.berkeley.edu/sched_policy.php Work distribution policy] * [BackendState Backend state transitions] * [BackendLogic The logic of backend programs] * [ServerDebug Debugging server components ] * [ServerSecurity Notes on BOINC server security ] === Protocols === * [CommIntro Protocol overview] * [RpcProtocol The scheduling server protocol] * [RpcPolicy Scheduling server timing and retry policies] * [FileUpload Data server protocol] * [PersFileXfer Persistent file transfers ] === Miscellaneous === * [CrossProjectId Cross-project identification] * [http://boinc.berkeley.edu/loc_sim/ Project simulator] * [ClientSim Client simulator] * [PythonFramework Python framework] * [PrefsImpl Preferences] * [TrickleImpl Trickle messages] * [VersionDiff How to see what has changed between two versions of an executable] * [RpmSpec Spec info for RPMs ] * [XmlFormat XML formats] * [DiagnosticsApi Diagnostics API] * [LowLatency Low latency computing] * [TestMatrix Alpha test matrix] == Historical == * [http://boinc.berkeley.edu/api_v4.php Version 4 runtime system] * [http://boinc.berkeley.edu/mac_intel.php Mac/Intel plan] * [http://boinc.berkeley.edu/mac_devgroup.php Old Mac project plan] * [http://boinc.berkeley.edu/new_setup.php Design of version 5 setup] * [http://boinc.berkeley.edu/menubar.php Mac Menubar] * [http://boinc.berkeley.edu/sequence.php Work sequences] * [http://boinc.berkeley.edu/suggestions.php Usability discussion] * [http://boinc.berkeley.edu/disk_management.php Disk management]