|   | 1 | = Project creation cookbook = | 
                  
                          |   | 2 |  | 
                  
                          |   | 3 | == Make skeletal project == | 
                  
                          |   | 4 |  | 
                  
                          |   | 5 |     * Install and configure all [SoftwarePrereqsUnix prerequisite software] (follow the directions carefully). Make sure MySQL is configured and running. | 
                  
                          |   | 6 |     * [http://boinc.berkeley.edu/source_code.php Get the BOINC software], say into HOME/boinc. | 
                  
                          |   | 7 |     * [http://boinc.berkeley.edu/build_system.php Compile the BOINC server software] | 
                  
                          |   | 8 |     * Run HOME/boinc/tools/[MakeProject make_project] | 
                  
                          |   | 9 |     * Append the contents of projects/PROJECT/PROJECT.httpd.conf to httpd.conf and restart Apache. | 
                  
                          |   | 10 |     * Use 'crontab' to insert a cron job to run the project's periodic tasks, e.g. | 
                  
                          |   | 11 |       0,5,10,15,20,25,30,35,40,45,50,55 * * * * HOME/projects/PROJECT/bin/start --cron | 
                  
                          |   | 12 |       (if cron cannot run 'start', try using a helper script to set PATH and PYTHONPATH) | 
                  
                          |   | 13 |     * 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]. | 
                  
                          |   | 14 |     * Edit html/project/project.inc, changing the master URL and copyright holder. | 
                  
                          |   | 15 |     * Protect the html/ops directory (e.g. by putting .htaccess and .htpasswd files there).  | 
                  
                          |   | 16 |  | 
                  
                          |   | 17 | Visible result: the project web site is up. The database 'platforms' table has several rows. | 
                  
                          |   | 18 |  | 
                  
                          |   | 19 | Troubleshooting: check the Apache access and error logs. | 
                  
                          |   | 20 | == Create an application version == | 
                  
                          |   | 21 |  | 
                  
                          |   | 22 |     * Create a BOINC application executable (if you're in a hurry, use the test application). | 
                  
                          |   | 23 |     * Copy the executable to HOME/projects/PROJECTNAME/apps/APPNAME | 
                  
                          |   | 24 |     * cd to HOME/projects/PROJECTNAME | 
                  
                          |   | 25 |     * run bin//update_versions, type y or return. | 
                  
                          |   | 26 |     * run ./stop && ./start  | 
                  
                          |   | 27 |  | 
                  
                          |   | 28 | Visible result: the web site's Applications page has an entry. | 
                  
                          |   | 29 | == Create a work unit == | 
                  
                          |   | 30 |  | 
                  
                          |   | 31 |     * Using a text editor, create a work unit template file and a result template file. | 
                  
                          |   | 32 |     * Run create_work | 
                  
                          |   | 33 |     * Edit config.xml to add <daemon> records for make_work, feeder, transitioner, file_deleter, the trivial validator, and the trivial assimilator. For example | 
                  
                          |   | 34 | {{{ | 
                  
                          |   | 35 | <daemon> | 
                  
                          |   | 36 |     <cmd>validate_test -app appname</cmd> | 
                  
                          |   | 37 |     <output>validate_test.log</output> | 
                  
                          |   | 38 |     <pid_file>validate_test.pid</pid_file> | 
                  
                          |   | 39 | </daemon> | 
                  
                          |   | 40 | }}} | 
                  
                          |   | 41 | Visible result: after a project restart, 'status' shows the above daemon processes running. | 
                  
                          |   | 42 |  | 
                  
                          |   | 43 | Troubleshooting: check the log files of all daemon processes. | 
                  
                          |   | 44 | == Test the system == | 
                  
                          |   | 45 |  | 
                  
                          |   | 46 |     * Create a client directory (on the same computer or different computer), say HOME/boinc_client. Copy the core client there. | 
                  
                          |   | 47 |     * Using the web interface, create an account on the project. | 
                  
                          |   | 48 |     * Run the core client; enter the project URL and the account key.  | 
                  
                          |   | 49 |  | 
                  
                          |   | 50 | Visible result: the client does a stream of work; the web site shows credit accumulating. | 
                  
                          |   | 51 |  | 
                  
                          |   | 52 | Troubleshooting: check the log files of all daemon processes. | 
                  
                          |   | 53 | == Develop back end components == | 
                  
                          |   | 54 |  | 
                  
                          |   | 55 |     * Write a work generator. | 
                  
                          |   | 56 |     * Write a validator. | 
                  
                          |   | 57 |     * Write an assimilator. | 
                  
                          |   | 58 |     * Edit the configuration file to use these programs instead of the place-holder programs. | 
                  
                          |   | 59 |     * Make sure everything works correctly.  | 
                  
                          |   | 60 |  | 
                  
                          |   | 61 | == Extras == | 
                  
                          |   | 62 |  | 
                  
                          |   | 63 |     * Add message board categories: see html/ops/create_forums.php  |