{{{ #!div style="font-weight: bold; color: #FF0000;" This is outdated. In January 2013 the BOINC project switched to the git-scm version control system. See SourceCodeGit for more information. }}} = Getting source code = The BOINC source code is stored in a Subversion (SVN) repository. Various versions of the code are available at any given point: '''Development''' The SVN trunk contains the latest source code for all components of BOINC. It is always under development, and has not necessarily been thoroughly tested. Use it if you need a recently-added feature. '''Client software''' The client software (client and manager) is maintained as follows: * The code for each release is 'tagged'. For example, the code for version 6.3.14 is tagged with '''boinc_core_release_6_3_14'''. * A 'branch' is created for each released minor version. For example, the branch '''boinc_core_release_6_2''' is the code for the latest release of version 6.2. '''Server software''' For all software other than the client (i.e., server, web, and API) a "stable" version is kept in a branch, '''server_stable'''. Don't use the server software in a client tag or branch; it probably isn't stable. Notes: * There is no formal testing process for server software. Every so often, when no bugs have been reported recently, we copy trunk to server_stable. * Because of limited resources, bug fixes to server software are normally NOT back-ported from trunk to server_stable. For these reasons: '''trunk is typically a better choice than server_stable for server software'''. == Using Subversion == On Unix, use the the following commands to check out the trunk, a tag, or a branch: {{{ svn co http://boinc.berkeley.edu/svn/trunk/boinc svn co http://boinc.berkeley.edu/svn/tags/boinc_core_release_6_3_14 svn co http://boinc.berkeley.edu/svn/branches/boinc_core_release_6_2 svn co http://boinc.berkeley.edu/svn/branches/server_stable }}} On Windows, get a SVN client like [http://tortoisesvn.net/ TortoiseSVN]. Right-click on the parent directory, select 'SVN checkout', and fill in the dialog with one of the above URLs. There is no need to add 'svn co' in front of it. You can also download [http://subversion.tigris.org/project_packages.html#windows svn command-line program for Windows]. All the additional dependency files are now stored in [source:trunk/boinc_depends_win_vs2005 boinc_depends_win_vs2005], get them using {{{svn co http://boinc.berkeley.edu/svn/trunk/boinc_depends_win_vs2005}}}. The dependencies should be stored in the same parent directory as the BOINC source code, for example: {{{ +-+ source | + boinc | | | + api | + client | + clientgui | + etc... | + boinc_depends_win_vs2005 | | | + curl | + openssl | + wxwidgets | + zlib }}} When you have older source code, I found that deleting all previous source code and downloading it fresh, will fix the breaks in building BOINC. Make sure to backup your own code prior to deleting the source code. Note: some HTTP proxies may cause problems with the SVN protocol. If you have trouble checking out the code, try using https instead of http. == Browsing source code via the web == You can browse the boinc code via [/browser a web-based interface]. This is useful for getting individual files, or seeing the revision history. == Source code road map == The BOINC source tree includes the following directories: '''api''':: The BOINC API (for applications). '''apps''':: Some test applications. '''client''':: The BOINC core client. '''clientgui''':: The BOINC Manager. '''clientscr''':: The BOINC screensaver for Windows. '''clienttray''':: The BOINC Tray component (checks for user activity on Windows). '''db''':: The database schema and C++ interface layer. '''html/ops''':: PHP files for the operational web interface. '''html/user''':: PHP files for the participant web interface. '''html/inc''':: PHP include files. '''html/languages''':: Translation files for project websites. '''lib''':: Code that is shared by more than one component (core client, scheduling server, etc.). '''locale''':: Translation files for BOINC Manager. '''py''':: Python modules used by tools. '''sched''':: The scheduling server, feeder, and file upload handler. '''samples''':: Several [ExampleApps example applications] together with Windows and Mac project files and a Linux makefile for building the applications. It also includes Windows versions of some libraries (GLUT, jpeglib, etc.) that many applications will need, but which are not part of BOINC. '''test''':: Test scripts. '''tools''':: Operational utility programs. '''win_build''':: Project files for compiling the client under Windows, and the Windows installer. '''zip''':: Compression functions; not used by BOINC, but may be useful for applications.