= 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 actively being developed, and may contain bugs. Use it if you need a recently-added feature. '''Client software''' The client software (core 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) the latest "stable" version is kept in a branch, '''server_stable'''. '''NOTE: don't use the server software in a client tag/branch; it probably isn't stable.''' == 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 }}} 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. You can also download [http://subversion.tigris.org/project_packages.html#windows svn command-line program for Windows]. 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 [/trac/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.