= Project creation cookbook = == Make skeletal project == * Install and configure all [SoftwarePrereqsUnix prerequisite software] (follow the directions carefully). Make sure MySQL is configured and running. * [http://boinc.berkeley.edu/source_code.php Get the BOINC software], say into HOME/boinc. * [http://boinc.berkeley.edu/build_system.php Compile the BOINC server software] * Run HOME/boinc/tools/[MakeProject make_project] * Append the contents of projects/PROJECT/PROJECT.httpd.conf to httpd.conf and restart Apache. * Use 'crontab' to insert a cron job to run the project's periodic tasks, e.g. 0,5,10,15,20,25,30,35,40,45,50,55 * * * * HOME/projects/PROJECT/bin/start --cron (if cron cannot run 'start', try using a helper script to set PATH and PYTHONPATH) * Copy project.xml from HOME/boinc/tools to HOME/projects/PROJECT, edit it to reflect your applications and platforms, and run [http://boinc.berkeley.edu/tool_xadd.php bin/xadd]. * Edit html/project/project.inc, changing the master URL and copyright holder. * Protect the html/ops directory (e.g. by putting .htaccess and .htpasswd files there). Visible result: the project web site is up. The database 'platforms' table has several rows. Troubleshooting: check the Apache access and error logs. == Create an application version == * Create a BOINC application executable (if you're in a hurry, use the test application). * Copy the executable to HOME/projects/PROJECTNAME/apps/APPNAME * cd to HOME/projects/PROJECTNAME * run bin//update_versions, type y or return. * run ./stop && ./start Visible result: the web site's Applications page has an entry. == Create a work unit == * Using a text editor, create a work unit template file and a result template file. * Run create_work * Edit config.xml to add records for make_work, feeder, transitioner, file_deleter, the trivial validator, and the trivial assimilator. For example {{{ validate_test -app appname validate_test.log validate_test.pid }}} Visible result: after a project restart, 'status' shows the above daemon processes running. Troubleshooting: check the log files of all daemon processes. == Test the system == * Create a client directory (on the same computer or different computer), say HOME/boinc_client. Copy the core client there. * Using the web interface, create an account on the project. * Run the core client; enter the project URL and the account key. Visible result: the client does a stream of work; the web site shows credit accumulating. Troubleshooting: check the log files of all daemon processes. == Develop back end components == * Write a [WorkGeneration work generator]. * Write a [ValidationIntro validator]. * Write an [AssimilateIntro assimilator]. * Edit the [ProjectConfigFile configuration file] to use these programs instead of the place-holder programs. * Make sure everything works correctly. == Extras == * Add message board categories: see html/ops/create_forums.php