Index: openacs-4/packages/acs-core-docs/www/acs-package-dev.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-package-dev.html,v diff -u -r1.15.2.3 -r1.15.2.4 --- openacs-4/packages/acs-core-docs/www/acs-package-dev.html 1 Nov 2004 23:39:29 -0000 1.15.2.3 +++ openacs-4/packages/acs-core-docs/www/acs-package-dev.html 8 Nov 2004 19:58:58 -0000 1.15.2.4 @@ -1,4 +1,4 @@ Part�III.�For OpenACS Package Developers

For OpenACS Package Developers

Tutorials and reference material for creating new OpenACS packages. -

Table of Contents

9. Development Tutorial
Creating an Application Package
Setting Up Database Objects
Creating Web Pages
Debugging and Automated Testing
10. Advanced Topics
Write the Requirements and Design Specs
Add the new package to CVS
Adding Comments
Admin Pages
Categories
Profile your code
Prepare the package for distribution.
Notifications
Hierarchical data
Using .vuh files for pretty urls
Laying out a page with CSS instead of tables
Sending HTML email from your application
Basic Caching
Scheduled Procedures
Future Topics
11. Development Reference
OpenACS Packages
OpenACS Data Models and the Object System
The Request Processor
The OpenACS Database Access API
Using Templates in OpenACS
Groups, Context, Permissions
Writing OpenACS Application Pages
Parties in OpenACS
OpenACS Permissions Tediously Explained
Object Identity
Programming with AOLserver
Using HTML Forms
12. Engineering Standards
OpenACS Style Guide
+

13. Documentation Standards
OpenACS Documentation Guide
Using PSGML mode in Emacs
Using nXML mode in Emacs
Detailed Design Documentation Template
System/Application Requirements Template
14. Internationalization
Internationalization and Localization Overview
How Internationalization/Localization works in OpenACS
How to Internationalize a Package
Design Notes
Translator's Guide
D. Using CVS with an OpenACS Site
View comments on this page at openacs.org
+
Using CVS with OpenACS
OpenACS CVS Concepts
Contributing code back to OpenACS
Additional Resources for CVS
14. Documentation Standards
OpenACS Documentation Guide
Using PSGML mode in Emacs
Using nXML mode in Emacs
Detailed Design Documentation Template
System/Application Requirements Template
15. Internationalization
Internationalization and Localization Overview
How Internationalization/Localization works in OpenACS
How to Internationalize a Package
Design Notes
Translator's Guide
D. Using CVS with an OpenACS Site
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/acs-plat-dev.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-plat-dev.html,v diff -u -r1.18.2.2 -r1.18.2.3 --- openacs-4/packages/acs-core-docs/www/acs-plat-dev.html 1 Nov 2004 23:39:29 -0000 1.18.2.2 +++ openacs-4/packages/acs-core-docs/www/acs-plat-dev.html 8 Nov 2004 19:58:58 -0000 1.18.2.3 @@ -1 +1 @@ -Part�IV.�For OpenACS Platform Developers

For OpenACS Platform Developers

Table of Contents

15. Kernel Documentation
Overview
Object Model Requirements
Object Model Design
Permissions Requirements
Permissions Design
Groups Requirements
Groups Design
Subsites Requirements
Subsites Design Document
Package Manager Requirements
Package Manager Design
Database Access API
OpenACS Internationalization Requirements
Security Requirements
Security Design
Security Notes
Request Processor Requirements
Request Processor Design
Documenting Tcl Files: Page Contracts and Libraries
Bootstrapping OpenACS
External Authentication Requirements
16. Releasing OpenACS
OpenACS Core and .LRN
How to Update the OpenACS.org repository
How to package and release an OpenACS Package
How to Update the translations
View comments on this page at openacs.org
+Part�IV.�For OpenACS Platform Developers

For OpenACS Platform Developers

Table of Contents

16. Kernel Documentation
Overview
Object Model Requirements
Object Model Design
Permissions Requirements
Permissions Design
Groups Requirements
Groups Design
Subsites Requirements
Subsites Design Document
Package Manager Requirements
Package Manager Design
Database Access API
OpenACS Internationalization Requirements
Security Requirements
Security Design
Security Notes
Request Processor Requirements
Request Processor Design
Documenting Tcl Files: Page Contracts and Libraries
Bootstrapping OpenACS
External Authentication Requirements
17. Releasing OpenACS
OpenACS Core and .LRN
How to Update the OpenACS.org repository
How to package and release an OpenACS Package
How to Update the translations
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/apm-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-design.html,v diff -u -r1.27.2.2 -r1.27.2.3 --- openacs-4/packages/acs-core-docs/www/apm-design.html 1 Nov 2004 23:39:31 -0000 1.27.2.2 +++ openacs-4/packages/acs-core-docs/www/apm-design.html 8 Nov 2004 19:59:00 -0000 1.27.2.3 @@ -1,4 +1,4 @@ -Package Manager Design

Package Manager Design

By Bryan Quinn

+Package Manager Design

Package Manager Design

By Bryan Quinn

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

Essentials

  • OpenACS Administrator directory

  • Package Manager Requirements

  • Packages

  • ER diagram

  • Tcl API

    An installation of the OpenACS includes the OpenACS Kernel, some services that extend the kernel's functionality, and some applications intended for end-users. Packages function as individual pieces of subsites. A subsite can contain multiple Index: openacs-4/packages/acs-core-docs/www/apm-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-requirements.html,v diff -u -r1.22.2.2 -r1.22.2.3 --- openacs-4/packages/acs-core-docs/www/apm-requirements.html 1 Nov 2004 23:39:31 -0000 1.22.2.2 +++ openacs-4/packages/acs-core-docs/www/apm-requirements.html 8 Nov 2004 19:59:02 -0000 1.22.2.3 @@ -1,4 +1,4 @@ -Package Manager Requirements

    Package Manager Requirements

    By Bryan Quinn and Todd Nightingale

    +Package Manager Requirements

    Package Manager Requirements

    By Bryan Quinn and Todd Nightingale

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Introduction

    The following is a requirements document for the OpenACS Package Manager Index: openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html,v diff -u -r1.10.2.5 -r1.10.2.6 --- openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html 1 Nov 2004 23:39:33 -0000 1.10.2.5 +++ openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html 8 Nov 2004 19:59:04 -0000 1.10.2.6 @@ -1,4 +1,6 @@ -Automated Testing

    Automated Testing

    By Jeff Davis

    +Automated Testing

    Automated Testing

    By Jeff Davis

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Best practices in writing OpenACS automated tests

    • Special characters in Tcl.� @@ -24,4 +26,6 @@ Make sure that if a duplicate name is entered that there is a reasonable error rather than a server error. Check for insert, move, copy, and rename. -

    ($Id$)
    View comments on this page at openacs.org
    +

($Id$)
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/backup-recovery.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.html,v diff -u -r1.25.2.5 -r1.25.2.6 --- openacs-4/packages/acs-core-docs/www/backup-recovery.html 1 Nov 2004 23:39:33 -0000 1.25.2.5 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.html 8 Nov 2004 19:59:04 -0000 1.25.2.6 @@ -7,4 +7,4 @@ probably need to create your own backup strategies (in particular full dumps from oracle, while easy to set up, are far from the best solution).

There are three basic things which need to be backed up, the database data, the server - source tree, and the acs-content-repository (which is in the server source tree).

Figure�8.1.�Backup and Recovery Strategy

Backup and Recovery Strategy
($Id$)
View comments on this page at openacs.org
+ source tree, and the acs-content-repository (which is in the server source tree).

Figure�8.1.�Backup and Recovery Strategy

Backup and Recovery Strategy
($Id$)
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/bootstrap-acs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/bootstrap-acs.html,v diff -u -r1.31.2.5 -r1.31.2.6 --- openacs-4/packages/acs-core-docs/www/bootstrap-acs.html 1 Nov 2004 23:39:35 -0000 1.31.2.5 +++ openacs-4/packages/acs-core-docs/www/bootstrap-acs.html 8 Nov 2004 19:59:05 -0000 1.31.2.6 @@ -1,4 +1,4 @@ -Bootstrapping OpenACS

Bootstrapping OpenACS

By Jon Salz

+Bootstrapping OpenACS

Bootstrapping OpenACS

By Jon Salz

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
  • Tcl code: /tcl/0-acs-init.tcl and /packages/acs-kernel/bootstrap.tcl

This document describes the startup (bootstrapping) process for an AOLserver Index: openacs-4/packages/acs-core-docs/www/contributing-code.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/contributing-code.html,v diff -u -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/acs-core-docs/www/contributing-code.html 3 Nov 2004 16:37:48 -0000 1.1.2.1 +++ openacs-4/packages/acs-core-docs/www/contributing-code.html 8 Nov 2004 19:59:05 -0000 1.1.2.2 @@ -3,7 +3,7 @@ ">

Contributing code back to OpenACS

There are three main ways to contribute code to OpenACS:

  1. To contribute a small fix, if you do not have a developer account, submit a patch.

  2. If you are making many changes, or would like to become a direct contributor, send mail to the Core Team asking for commit rights. You can then commit code directly to the repository:

    1. Use one of the checkout methods described above to get files to your system. This takes the place of steps 1 and 2 in the section called “Installation Option 2: Install from tarball”. Continue setting up the site as described there.

    2. Fix bugs and add features.

    3. - Commit that file (or files):

      cvs commit -m "what I did and why" filename

      + Commit that file (or files):

      cvs commit -m "what I did and why" filename

      Because this occurs in your personal checkout and not an anonymous one, this commit automagically moves back upstream to the Mother Ship repository at openacs.org. The names of the changed files, and your comments, are sent to a mailing list for OpenACS developers. A Core Team developer may review or roll back your changes if necessary. @@ -12,11 +12,11 @@ OpenACS CVS browser that your changes are where you intended them to be.

  3. Add a new package. Contact the Core Team to get approval and to get a module alias created.

    1. - Check out acs-core on the HEAD branch. (Weird things happen if you add files to a branch but not to HEAD):

      cd /tmp
      -cvs -d:ext:openacs.org:/cvsroot checkout acs-core

      Copy your package directory from your working directory to this directory. Make sure not to copy any CVSROOT directories.

      cp /var/lib/aolserver/service0/packagse/newpackage /tmp/openacs-4/packages

      Import the package into the OpenACS.org cvs repository:

      cd /tmp/openacs-4/packages/newpackage
      -cvs import -m "Initial import of newpackage" openacs-4/packages/newpackage myname 0.1d
    2. Add the new package to the modules file. (An administrator has to do this step.) On any machine, in a temporary directory:

      cvs -d :ext:openacs.org:/cvsroot co CVSROOT
      +                Check out acs-core on the HEAD branch.  (Weird things happen if you add files to a branch but not to HEAD):

      cd /tmp
      +cvs -d:ext:openacs.org:/cvsroot checkout acs-core

      Copy your package directory from your working directory to this directory. Make sure not to copy any CVSROOT directories.

      cp /var/lib/aolserver/service0/packagse/newpackage /tmp/openacs-4/packages

      Import the package into the OpenACS.org cvs repository:

      cd /tmp/openacs-4/packages/newpackage
      +cvs import -m "Initial import of newpackage" openacs-4/packages/newpackage myname 0.1d
    3. Add the new package to the modules file. (An administrator has to do this step.) On any machine, in a temporary directory:

      cvs -d :ext:openacs.org:/cvsroot co CVSROOT
       cd CVSROOT
      -emacs modules

      Add a line of the form:

      photo-album-portlet openacs-4/packages/photo-album-portlet

      Commit the change:

      cvs commit -m "added alias for package newpackage" modules

      This should print something like:

      cvs�commit:�Examining�.
      +emacs modules

      Add a line of the form:

      photo-album-portlet openacs-4/packages/photo-album-portlet

      Commit the change:

      cvs commit -m "added alias for package newpackage" modules

      This should print something like:

      cvs�commit:�Examining�.
      ****�Access�allowed:�Personal�Karma�exceeds�Environmental�Karma.
      Checking�in�modules;
      /cvsroot/CVSROOT/modules,v��<--��modules
      @@ -134,7 +134,7 @@ flag which defaults to no-effect wouldn't require a TIP. Added a new mandatory flag to an existing function would require a TIP. -

    +

Reasons

We don't currently have clear standards for committing @@ -170,7 +170,7 @@ applies to all packages. This tag can be used to fork packages as needed, and provides a common ancestor between the fork and the OpenACS code so that patches can be generated. -

+

Informal Guidelines

Informal guidelines which may be obsolete in places and should be reviewed: Index: openacs-4/packages/acs-core-docs/www/cvs-guidelines.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-guidelines.html,v diff -u -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/acs-core-docs/www/cvs-guidelines.html 1 Nov 2004 23:44:47 -0000 1.1.2.1 +++ openacs-4/packages/acs-core-docs/www/cvs-guidelines.html 8 Nov 2004 19:59:06 -0000 1.1.2.2 @@ -1,422 +1,14 @@ - +<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�13.� CVS Guidelines -

+

Chapter�13.� CVS Guidelines -

+

By Joel Aufrecht with input from Jeff Davis, Branimir Dolicki, and Jade Rubick.

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

OpenACS CVS Concepts

Modules

- All OpenACS code resides within a single CVS module, openacs-4. (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.) Checking out this module retrieves all openacs code of any type. For convenience, subsets of openacs-4 are repackaged as smaller modules.

- acs-core contains only critical common - packages. It does not have any user applications, such as forums, - bug-tracker, calendar, or ecommerce. These can be added at - any time. -

The complete list of core packages is:

acs-admin 
-acs-api-browser 
-acs-authentication 
-acs-automated-testing 
-acs-bootstrap-installer
-acs-content-repository 
-acs-core-docs 
-acs-kernel 
-acs-lang 
-acs-mail
-acs-messaging 
-acs-reference 
-acs-service-contract 
-acs-subsite 
-acs-tcl
-acs-templating 
-ref-timezones search

- dotlrn-all contains the packages required, in combination with acs-core, to run the .LRN system. -

- project-manager-all contains the packages required, in combination with acs-core, to run the project-manager package. -

- Each OpenACS package (i.e., directory in openacs-4/packages/) is also aliased as a module of the same name. -

- Tags and Branches -

- Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch. Check out - a tag to get a specific version of OpenACS. Check out a branch to - get the most current code for that major-minor version (e.g., 5.0.x - or 5.1.x). You can only commit to a branch, not a tag, so check out - a branch if you will be working on the code.

  • openacs-x-y-z-final - tags mark final releases of OpenACS. This tag is applied to the acs-core files for an OpenACS core release, and to the latest released versions of all other packages at the time of release. Example: openacs-5-0-4-final. -

  • dotlrn-x-y-z-final - tags mark final releases of .LRN. These tags apply only to .LRN packages. Example: dotlrn-2-0-1-final -

  • packagename-x-y-z-final - tags apply to releases of individual packages. For example, calendar-2-0-0-final is a tag that will retrieve only the files in the calendar 2.0.0 release. It applies only to the - calendar package. All non-core, non-dotlrn packages should have a - tag of this style, based on the package name. Many packages have - not been re-released since the new naming convention was adopted - and so don't have a tag of this type. -

  • openacs-x-y-compat tags point to the most recent released version of OpenACS X.Y. - It is similar to openacs-x-y-z-compat, except that it will - always get the most recent dot-release of Core and the - most recent compatible, released version of all other - packages. All of the other tag styles should be static, - but -compat tags may change over time. If you want version - 5.0.4 exactly, use the openacs-5-0-4-final tag. If you want the best newest released code in the 5.0.x release series and you want to upgrade within 5.0.x later, use the compat tag. -

    - For example, if you check out the entire tree with -r - openacs-5-0-compat, you might get version 5.0.4 of each OpenACS - core package, version 2.0.1 of calendar, version 2.0.3 of each .LRN - package, etc. If you update the checkout two months later, you - might get version 5.0.5 of all OpenACS core packages and version - 2.1 of calendar. -

  • oacs-x-y is a branch, , not a tag. All core packages in the 5.0 release series (5.0.0, 5.0.1, 5.0.2, etc) are also on the oacs-5-0 branch. Similarly, OpenACS core packages for 5.1.0 are on the oacs-5-1 branch.

    These branches are used for two purposes. OpenACS - Core packages on these branches are being tidied up for - release. Only bug fixes, not new features, should be - added to core packages on release branches. For all other - packages, release branches are the recommended location - for development. For example, if you are working on - calendar, which is compatible with openacs 5.0 but not - 5.1, work on the oacs-5-0 branch.

  • HEAD is a branch used - for development of core packages.

Using CVS with OpenACS

Getting Started

- All OpenACS code is available anonymously. To get code - anonymously, use the parameter - -d:pserver:anonymous@openacs.org:/cvsroot immediately after cvs in a cvs command to check out or export code. -

- If you are an OpenACS developer, you should check out code so - that you or any other developer can commit it. To do this, use - the parameter - -d:ext:openacs.org:/cvsroot - immediately after cvs in - checkout commands. This will create a local checkout directory - that uses openacs.org but does not specify the user. By - default, it will use your local account name as the user, so if - you are logged in as "foobar" it will try to check out and - commit as if you had specified - :ext:foobar@openacs.org:/cvsroot. The advantage of not specifying a user in the checkout command is that other users can work in the directory using their own accounts. -

- OpenACS.org supports non-anonymous cvs access only over ssh, so you - must have CVS_RSH=ssh in your - environment. (Typically this is accomplished by putting - export CVS_RSH=ssh into - ~/.bash_profile.). If your local - account name does not match your openacs.org account name, create a - file ~/.ssh/config with an entry - like: -

Host openacs.org
-    User joel
-

- With this setup, you will be asked for your password with - each cvs command. To avoid this, set up ssh certificate - authentication for your openacs account. (More - information) -

- You may want to set some more default actions for CVS usage. - To do so, create the file - ~/.cvsrc with the contents: -

cvs -z6
-cvs -q

-z6 speeds up cvs access over the network quite a bit by enabling compressed - connection by default. -q suppresses some verbose output from commands. For example, it makes the output of cvs up much easier to read.

Checkout for Package Development

If you are actively developing a non-core package, you - should work from the latest core release branch. Currently this - is oacs-5-1. This ensures that you are working on top - of a stable OpenACS core, but still allows you to commit feature - changes to non-core packages. To check out all packages,

cvs -d :ext:openacs.org:/cvsroot co -r oacs-5-1 openacs-4

If you work in the directories created with this command, all of your - cvs updates and commits will be confined to the oacs-5-1 - branch. Your work will be merged back to HEAD for you - with each release.

Because the entire openacs-4 directory is large, you may - want to use only acs-core plus some specific modules. To do - this, check out core first:

cvs -d:ext:openacs.org:/cvsroot -r oacs-5-1 checkout acs-core

Then add modules as needed:

cd /var/lib/aolserver/service0/packages
-cvs up -d packagename

... where packagename is the name of the - package you want. Visit the - Package Inventory - for a list of available packages and their - current state. -

Checkout for Core Development

If you are actively developing packages in the OpenACS - Core, work from the HEAD branch. HEAD is used for active - development of the next version of core OpenACS. It may be very - buggy; it may not even install correctly. Do not use this branch for - development of non-core features unless your work depends on some - of the HEAD core work. To check out HEAD, omit the - -r tag.

To check out HEAD for development, which requires an OpenACS developer account:

cvs -d:ext:openacs.org:/cvsroot checkout acs-core

To check out HEAD anonymously:

cvs -d:pserver:anonymous@openacs.org:/cvsroot checkout acs-core

Checkout .LRN

- .LRN consists of a given version openacs core, plus a set of - packages. These are collectively packages together to form a - distrubution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0. - .LRN also uses an OpenACS install.xml file during installation; - this file is distributed within the dotlrn package and must be - moved. To get a development checkout of .LRN in the subdirectory - dotlrn: -

cvs -d :pserver:anonymous@openacs.org:/cvsroot checkout -r oacs-5-1 acs-core
-mv openacs-4 dotlrn
-cd dotlrn/packages
-cvs -d :pserver:anonymous@openacs.org:/cvsroot checkout -r oacs-5-1 dotlrn-all
-mv dotlrn/install.xml ..

Working with CVS

- Once you have a checkout you can use some commands to track - what has changed since you checked out your copy. cvs -n update does not change any files, but reports which changes have been updated or locally modified, or are not present in CVS. -

To update your files, use cvs update. This will merge changes from the repository with your local files. It has no effect on the openacs.org repository.

Contributing code back to OpenACS

There are three main ways to contribute code to OpenACS:

  1. To contribute a small fix, if you do not have a developer account, submit a patch.

  2. If you are making many changes, or would like to become a direct contributor, send mail to the Core Team asking for commit rights. You can then commit code directly to the repository:

    1. Use one of the checkout methods described above to get files to your system. This takes the place of steps 1 and 2 in the section called “Installation Option 2: Install from tarball”. Continue setting up the site as described there.

    2. Fix bugs and add features.

    3. - Commit that file (or files):

      cvs commit -m "what I did and why" filename

      - Because this occurs in your personal checkout and not an anonymous - one, this commit automagically moves back upstream to the Mother - Ship repository at openacs.org. The names of the changed files, and your comments, are sent to a mailing list for OpenACS developers. A Core Team developer may review or roll back your changes if necessary. -

    4. - Confirm via the - OpenACS CVS browser - that your changes are where you intended them to be. -

  3. Add a new package. Contact the Core Team to get approval and to get a module alias created.

    1. - Check out acs-core on the HEAD branch. (Weird things happen if you add files to a branch but not to HEAD):

      cd /tmp
      -cvs -d:ext:openacs.org:/cvsroot checkout acs-core

      Copy your package directory from your working directory to this directory. Make sure not to copy any CVSROOT directories.

      cp /var/lib/aolserver/service0/packagse/newpackage /tmp/openacs-4/packages

      Import the package into the OpenACS.org cvs repository:

      cd /tmp/openacs-4/packages/newpackage
      -cvs import -m "Initial import of newpackage" openacs-4/packages/newpackage myname 0.1d
    2. Add the new package to the modules file. (An administrator has to do this step.) On any machine, in a temporary directory:

      cvs -d :ext:openacs.org:/cvsroot co CVSROOT
      -cd CVSROOT
      -emacs modules

      Add a line of the form:

      photo-album-portlet openacs-4/packages/photo-album-portlet

      Commit the change:

      cvs commit -m "added alias for package newpackage" modules

      This should print something like:

      cvs�commit:�Examining�.
      -****�Access�allowed:�Personal�Karma�exceeds�Environmental�Karma.
      -Checking�in�modules;
      -/cvsroot/CVSROOT/modules,v��<--��modules
      -new�revision:�1.94;�previous�revision:�1.93
      -done
      -cvs�commit:�Rebuilding�administrative�file�database

- Rules for Committing Code to the OpenACS.org repository -

- CVS commit procedures are governed by - - TIP (Technical Improvement Proposal) #61: Guidelines for CVS committers - -

  1. - Which branch? -

    1. - For core packages, new features should always be - committed on HEAD, not to release branches. -

    2. - For core packages, bug fixes should be committed on the - current release branch whenever applicable. -

    3. - For non-core packages, developers should work on a - checkout of the release branch of the lastest release. For example, - if OpenACS 5.1.0 is released, developers should work on the - oacs-5-1 branch. When oacs-5-2 is branched, developers should - continue working on oacs-5-1 until OpenACS 5.2.0 is actually - released. -

    4. - The current release branch is merged back to HEAD after - each dot release. -

  2. - New packages should be created in the - - /packages - - directory - and the maturity flag in the .info file should be zero. This is a change from - previous policy, where new packages went to /contrib/packages) -

  3. - Code -

    1. - Only GPL code and material should be committed to the - openacs.org CVS repository -

    2. - Code should only be reformatted when functionality is - changed, e.g. when you change control flow and reindent to reflect - it. -

    3. - Database upgrade scripts should only span one release - increment, and should follow - - Naming Database Upgrade Scripts - - . -

    4. - Database upgrade scripts should never go to the release - version, e.g., should always have a letter suffix such as d1 or - b1. -

    5. - CVS commit messages should be intelligible in the context - of Changelogs. They should not refer to the files or - versions. -

    6. - CVS commit messages and code comments should refer to - bug, tip, or patch number if appropriate, in the format "resolves - bug 11", "resolves bugs 11, resolves bug 22". "implements tip 42", - "implements tip 42, implements tip 50", "applies patch 456 by User - Name", "applies patch 456 by User Name, applies patch 523 by - ...". -

  4. - When to TIP -

    1. - A TIP is a Techical Improvement Proposal ( - - more information - - ). A proposed change must be approved by TIP if: -

      1. - It changes the core data model, or -

      2. - It will change the behavior of any core package in a way - that affects existing code (typically, by changing public API), or -

      3. - It is a non-backwards-compatible change to any core or - standard package. -

    2. - A proposed change need not be TIPped if: -

      1. - it adds a new function to a core package in a way that: -

        1. - does not change the backwards-compatibility of public API - functions. -

        2. - does not change the data model -

        3. - has no negative impact on performance -

      2. - it changes private API, or -

      3. - it is a change to a non-core, non-standard package -

  5. - Tags -

    1. - When a package is released in final form, the developer - shall tag it "packagename-x-y-z-final" and "oacs-x-y-compat". x-y - should correspond to the current branch. If the package is - compatible with several different core versions, several compat - tags should be applied. -

    2. - When OpenACS core is released, the openacs-x-y-z-final - tag shall be applied to all compat packages. -

    - For example, adding a new API function wouldn't require a - TIP. Changing an existing API function by adding an optional new - flag which defaults to no-effect wouldn't require a TIP. Added a - new mandatory flag to an existing function would require a - TIP. -

- Reasons -

- We don't currently have clear standards for committing - code. -

- Rule 1.3: First, this ensures that developers are working - against stable core code. Second, it ensures that new package - releases are available to OpenACS users immediately. -

- Rule 3.4: If an upgrade script ends with the final release - number, then if a problem is found in a release candidate it cannot - be addressed with another upgrade script. E.g., the last planned - upgrade script for a package previously in dev 1 would be - upgrade-2.0.0d1-2.0.0b1.sql, not upgrade-2.0.0d1-2.0.0.sql. Note - that using rc1 instead of b1 would be nice, because that's the - convention with release codes in cvs, but the package manager - doesn't support rc tags. -

- Rule 5.1: Reason 1: The packagename tag is a permanent, - static tag that allows for future comparison. The compat tag is a - floating tag which is used by the repository generator to determine - the most recent released version of each package for each core - version. This allows package developers to publish their releases - to all users of automatic upgrade without any intervention from the - OpenACS release team.Reason 2: The compat tags allows CVS users to - identify packages which have been released since the last core - release.Reason 3: The compat tag or something similar is required - to make Rule 6 possible. -

- Rule 5.2: This allows OpenACS developers who are creating - extensively customized sites to branch from a tag which is stable, - corresponds to released code instead of development code, and - applies to all packages. This tag can be used to fork packages as - needed, and provides a common ancestor between the fork and the - OpenACS code so that patches can be generated. -

- Informal Guidelines -

- Informal guidelines which may be obsolete in places and should be reviewed: -

  • - Before committing to cvs you must submit a bug report and - patch to the - - OpenACS - bug tracker - - . The only exceptions to this rule are - for - - package - maintainers - - committing in a package they are - maintaining and for members of the core team. -

  • - If you are committing a bug fix you need to coordinate - with the package maintainer. If you are a maintainer then - coordinate with any fellow maintainers. -

  • - If you are to commit a new feature, an architecture - change, or a refactoring, you must coordinate with the OpenACS core - team first. Also, such changes should have a discussion in the - forums to allow for feedback from the whole community. -

  • - If you are changing the data model you *must* provide an - upgrade script and bump up the version number of the - package. -

  • - Consider any upgradability ramifications of your change. - Avoid changing the contract and behaviour of Tcl procedures. If you - want to build a new and clean API consider deprecating the old proc - and making it invoke the new one. -

  • - Never rush to commit something. Before committing double - check with cvs diff what exactly you are committing. -

  • - Always accompany a commit with a brief but informative - comment. If your commit is related to bug number N and/or patch - number P, indicate this in the commit comment by including "bug N" - and/or "patch P". This allows us to link bugs and patches in the - Bug Tracker with changes to the source code. For example suppose - you are committing a patch that closes a missing HTML tag, then an - appropriate comment could be "Fixing bug 321 by applying patch 134. - Added missing h3 HTML close tag". -

  • - Commit one cohesive bug fix or feature change at a time. - Don't put a bunch of unrelated changes into one commit. -

  • - Before you throw out or change a piece of code that you - don't fully understand, use cvs annotate and cvs log on the file to - see who wrote the code and why. Consider contacting the - author. -

  • - Test your change before committing. Use the OpenACS - package acs-automated-testing to test Tcl procedures and the tool - - - Tclwebtest - - - to test pages -

  • - Keep code simple, adhere to conventions, and use comments - liberally. -

  • - In general, treat the code with respect, at the same - time, never stop questioning what you see. The code can always be - improved, just make sure you change the code in a careful and - systematic fashion. -

Additional Resources

+

($Id$)

-

View comments on this page at openacs.org
+

View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/cvs-tips.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.html,v diff -u -r1.15.2.5 -r1.15.2.6 --- openacs-4/packages/acs-core-docs/www/cvs-tips.html 1 Nov 2004 23:39:36 -0000 1.15.2.5 +++ openacs-4/packages/acs-core-docs/www/cvs-tips.html 8 Nov 2004 19:59:06 -0000 1.15.2.6 @@ -1,7 +1,7 @@ Appendix�D.�Using CVS with an OpenACS Site

Appendix�D.�Using CVS with an OpenACS Site

By Joel Aufrecht

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

Add the Service to CVS - OPTIONAL.�These steps take an existing OpenACS directory and add +

Add the Service to CVS - OPTIONAL.�These steps take an existing OpenACS directory and add it to a CVS repository.

  1. Create and set permissions on a subdirectory in the local cvs repository.

    [root root]# mkdir /cvsroot/$OPENACS_SERVICE_NAME
     [root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /cvsroot/$OPENACS_SERVICE_NAME
    Index: openacs-4/packages/acs-core-docs/www/db-api-detailed.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api-detailed.html,v
    diff -u -r1.31.2.5 -r1.31.2.6
    --- openacs-4/packages/acs-core-docs/www/db-api-detailed.html	1 Nov 2004 23:39:37 -0000	1.31.2.5
    +++ openacs-4/packages/acs-core-docs/www/db-api-detailed.html	8 Nov 2004 19:59:06 -0000	1.31.2.6
    @@ -1,4 +1,4 @@
    -Database Access API

    Database Access API

    By Jon Salz. Revised and expanded by Roberto Mello (rmello at fslc dot usu dot edu), July 2002.

    +Database Access API

    Database Access API

    By Jon Salz. Revised and expanded by Roberto Mello (rmello at fslc dot usu dot edu), July 2002.

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
    • Tcl procedures: /packages/acs-kernel/10-database-procs.tcl

    • Tcl initialization: /packages/acs-kernel/database-init.tcl

    The Big Picture

    Index: openacs-4/packages/acs-core-docs/www/doc-standards.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/doc-standards.html,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-core-docs/www/doc-standards.html 1 Nov 2004 23:39:39 -0000 1.5.2.2 +++ openacs-4/packages/acs-core-docs/www/doc-standards.html 8 Nov 2004 19:59:07 -0000 1.5.2.3 @@ -1 +1 @@ -Chapter�13.�Documentation Standards

    View comments on this page at openacs.org
    +Chapter�14.�Documentation Standards
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/docbook-primer.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.html,v diff -u -r1.32.2.5 -r1.32.2.6 --- openacs-4/packages/acs-core-docs/www/docbook-primer.html 1 Nov 2004 23:39:39 -0000 1.32.2.5 +++ openacs-4/packages/acs-core-docs/www/docbook-primer.html 8 Nov 2004 19:59:07 -0000 1.32.2.6 @@ -1,4 +1,4 @@ -OpenACS Documentation Guide

    OpenACS Documentation Guide

    +OpenACS Documentation Guide

    OpenACS Documentation Guide

    By Claus Rasmussen, with additions by Roberto Mello and the OpenACS Community

    Overview of OpenACS Documentation

    @@ -36,7 +36,7 @@ In order to separate content and presentation, all OpenACS documentation will be marked up to conform to the DocBook XML DTD - + This enables us to publish in a variety of formats and relieves each contributor of the burden of presentation, freeing him to focus on content and sharing knowledge. @@ -57,7 +57,7 @@ list of elements and use more exotic features in your documents. The list is made up of SGML-elements but basically the same elements are valid in the XML DTD as long as you remember to: - +

    • Always close your tags with corresponding end-tags and to not use other tag minimization @@ -106,7 +106,7 @@ The documentation for each package will make up a little "book" that is structured like this - examples are emphasized: - +

           book                        : Docs for one package - templating
      @@ -130,20 +130,20 @@
             sources of these DocBook documents
             to get an idea of how they are tied together.
           

    Headlines, Sections

    - + Given that your job starts at the sect1-level, all your documents should open with a <sect1>-tag and end with the corresponding </sect1>.

    - + You need to feed every <sect1> two attributes. The first attribute, id, is standard and can be used with all elements. It comes in very handy when interlinking between documents (more about this when talking about links in the section called “Links”). The value of id has to be unique throughout the book you're making since the id's in your sect1's will turn into filenames when the book is parsed into HTML.

    - + The other attribute is xreflabel. The value of this is the text that will appear as the link when referring to this sect1.

    @@ -158,7 +158,7 @@ </sect1>

    - + Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel @@ -167,7 +167,7 @@ When it comes to naming your sect2's and below, prefix them with some abbreviation of the id in the sect1 such as requirements-overview.

Code

- + For displaying a snippet of code, a filename or anything else you just want to appear as a part of a sentence, we will use the tag <computeroutput>. @@ -177,12 +177,12 @@ <programlisting> is used. Just wrap your code block in it; mono-spacing, indents and all that stuff is taken care of automatically.

Links

- + Linking falls into two different categories: inside the book you're making and outside:

1. Inside linking, cross-referencing other parts of your book

By having unique id's you can cross-reference any part of your book with a simple tag, regardless of where that part is. -

Check out how I link to a subsection of the Developer's Guide:

Put this in your XML:

+	  

Check out how I link to a subsection of the Developer's Guide:

Put this in your XML:

 - Find information about creating a package in
 <xref linkend="packages-making-a-package"></xref>.
 

And the output is:

@@ -206,7 +206,7 @@
 	    packages-looks, the
 	    parser will try its best to explain where the link takes you.
 	  

2. Linking outside the documentation

- + If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just a little different @@ -227,7 +227,7 @@ do it, so if you want to start converting your documents right away, start out with the ones without graphics ;)

- + To insert a graphic we use the elements <mediaobject>, <imageobject>, @@ -253,7 +253,7 @@ Put your graphics in a separate directory ("images") and link to them only with relative paths.

Lists

- + Here's how you make the DocBook equivalent of the three usual HTML-lists:

1. How to make an <ul>

Making an unordered list is pretty much like doing the same thing in HTML - if you close your <li>, that is. The only differences are that each list item has to be wrapped in something more, such as @@ -298,7 +298,7 @@ </variablelist>

Tables

- + DocBook supports several types of tables, but in most cases, the <informaltable> is enough: @@ -335,7 +335,7 @@ <table> for an example.

Emphasis

- + Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one - <emphasis>.

@@ -413,4 +413,4 @@ 8/3/2002Vinod Kurup0.3 Added OpenACS information, updated tools, added extra links and added info to the Publishing section. - 12/24/2001Roberto Mello0.2Changed recommendation from <phrase> to <emphasis role="strong">01/19/2000Claus Rasmussen0.1Creation12/2000Claus Rasmussen

View comments on this page at openacs.org
+ 12/24/2001Roberto Mello0.2Changed recommendation from <phrase> to <emphasis role="strong">01/19/2000Claus Rasmussen0.1Creation12/2000Claus Rasmussen
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html,v diff -u -r1.31.2.5 -r1.31.2.6 --- openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html 1 Nov 2004 23:39:42 -0000 1.31.2.5 +++ openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html 8 Nov 2004 19:59:10 -0000 1.31.2.6 @@ -1,6 +1,4 @@ -Release Version Numbering

Release Version Numbering

By Ron Henderson

Revised by Joel Aufrecht

+Release Version Numbering

Release Version Numbering

By Ron Henderson

Revised by Joel Aufrecht

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

@@ -65,6 +63,4 @@

  • If you are working on a pre-release version of a package, use the current package version as OLDVERSION. Increment the package version as appropriate (see above) and use the new version as NEWVERSION. For example, if you are working on 2.0.1d3, make it 2.0.1d4 and use upgrade-2.0.1d3-2.0.1d4.sql.

  • Database upgrades should be confined to development releases, not alpha or beta releases.

  • Never use a final release number as a NEWVERSION. If you do, then it is impossible to add any more database upgrades without incrementing the overall package version.

  • Use only the d, a, and b letters in OLDVERSION and NEWVERSION. rc is not supported by OpenACS APM.

  • The distance from OLDVERSION to NEWVERSION should never span a release. For example if we had a bug fix in acs-kernel on 5.1.0 you wouldn't want a file upgrade-5.0.4-5.1.0d1.sql since if you subsequently need to provide a 5.0.4-5.0.5 upgrade you will have to rename the 5.0.4-5.1.0 upgrade since you can't have upgrades which overlap like that. Instead, use upgrade-5.1.0d1-5.1.0d2.sql -

  • ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/eng-standards.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards.html,v diff -u -r1.19.2.2 -r1.19.2.3 --- openacs-4/packages/acs-core-docs/www/eng-standards.html 1 Nov 2004 23:39:42 -0000 1.19.2.2 +++ openacs-4/packages/acs-core-docs/www/eng-standards.html 8 Nov 2004 19:59:10 -0000 1.19.2.3 @@ -1,3 +1 @@ -Chapter�12.�Engineering Standards

    Chapter�12.�Engineering Standards

    Table of Contents

    OpenACS Style Guide
    - CVS Guidelines -
    Release Version Numbering
    Constraint naming standard
    ACS File Naming and Formatting Standards
    PL/SQL Standards
    Variables
    Automated Testing
    View comments on this page at openacs.org
    +Chapter�12.�Engineering Standards

    Chapter�12.�Engineering Standards

    Table of Contents

    OpenACS Style Guide
    Release Version Numbering
    Constraint naming standard
    ACS File Naming and Formatting Standards
    PL/SQL Standards
    Variables
    Automated Testing
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html,v diff -u -r1.20.2.5 -r1.20.2.6 --- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 1 Nov 2004 23:39:43 -0000 1.20.2.5 +++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 8 Nov 2004 19:59:11 -0000 1.20.2.6 @@ -1,4 +1,4 @@ -External Authentication Requirements

    External Authentication Requirements

    Vision

    People have plenty of usernames and passwords already, we +External Authentication Requirements

    External Authentication Requirements

    Vision

    People have plenty of usernames and passwords already, we don't want them to have yet another. We want people to be able to log in to OpenACS with the same password they use to log in to any other system.

    Besides, administrators have better things to do than create @@ -44,7 +44,7 @@ only one implementation of the authentication API, namly the one included in OpenACS Core.

  • Authentication Driver API: The service contract which authentication drivers implement.

  • Conceptual Pictures

    Authentication:

    -

    Account Management (NO PICTURE YET)

    Batch Synchronization (NO PICTURE YET)

    Requirements

    New API

    FeatureStatusDescription
    EXT-AUTH-01AExtend Authentication/Acct Status API
    EXT-AUTH-03AAccount Creation API
    EXT-AUTH-05APassword Management API
    EXT-AUTH-30AAuthority Management API

    Login

    FeatureStatusDescription
    EXT-AUTH-04ARewrite login, register, and admin pages to use APIs
    EXT-AUTH-38Aad_form complain feature
    EXT-AUTH-19ARewrite password recovery to use API
    EXT-AUTH-21ARewrite email verification with API
    EXT-AUTH-28AUsername is email switch

    Users will log in using a username, a authority, and a +

    Account Management (NO PICTURE YET)

    Batch Synchronization (NO PICTURE YET)

    Requirements

    New API

    FeatureStatusDescription
    EXT-AUTH-01AExtend Authentication/Acct Status API
    EXT-AUTH-03AAccount Creation API
    EXT-AUTH-05APassword Management API
    EXT-AUTH-30AAuthority Management API

    Login

    FeatureStatusDescription
    EXT-AUTH-04ARewrite login, register, and admin pages to use APIs
    EXT-AUTH-38Aad_form complain feature
    EXT-AUTH-19ARewrite password recovery to use API
    EXT-AUTH-21ARewrite email verification with API
    EXT-AUTH-28AUsername is email switch

    Users will log in using a username, a authority, and a password. The authority is the source for user/password verification. OpenACS can be an authority itself.

    Each user in OpenACS will belong to exactly one authority, which can either be the "local" OpenACS users table, in which case the @@ -376,4 +376,4 @@ PAM specification

  • Draft Proposal by Andrew Grumet.

  • Yale CAS, a centrl authentication service a' la - Passport.

  • Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    1Updated work-in-progress for consortium-sponsored ext-auth work at Collaboraid.20 Aug 2003Joel Aufrecht
    View comments on this page at openacs.org
    + Passport.

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    1Updated work-in-progress for consortium-sponsored ext-auth work at Collaboraid.20 Aug 2003Joel Aufrecht
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/filename.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/filename.html,v diff -u -r1.31.2.5 -r1.31.2.6 --- openacs-4/packages/acs-core-docs/www/filename.html 1 Nov 2004 23:39:43 -0000 1.31.2.5 +++ openacs-4/packages/acs-core-docs/www/filename.html 8 Nov 2004 19:59:11 -0000 1.31.2.6 @@ -1,4 +1,4 @@ -Detailed Design Documentation Template

    Detailed Design Documentation Template

    By You

    Start Note

    +Detailed Design Documentation Template

    Detailed Design Documentation Template

    By You

    Start Note

    NOTE: Some of the sections of this template may not apply to your package, e.g. there may be no user-visible UI elements for a component of the OpenACS Core. Furthermore, it may be easier in some circumstances Index: openacs-4/packages/acs-core-docs/www/form-builder.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/form-builder.html,v diff -u -r1.10.2.5 -r1.10.2.6 --- openacs-4/packages/acs-core-docs/www/form-builder.html 1 Nov 2004 23:39:44 -0000 1.10.2.5 +++ openacs-4/packages/acs-core-docs/www/form-builder.html 8 Nov 2004 19:59:12 -0000 1.10.2.6 @@ -1,4 +1,4 @@ -Using HTML Forms

    Using HTML Forms

    Overview

    Multi-part Elements

    Some elements have more than one choice, or can submit more than one value.

    SELECT elements

    1. Creating the form element.�Populate a list of lists with values for the option list.

      set foo_options [db_list_of_lists foo_option_list "
      +Using HTML Forms

      Using HTML Forms

      Overview

      Multi-part Elements

      Some elements have more than one choice, or can submit more than one value.

      SELECT elements

      1. Creating the form element.�Populate a list of lists with values for the option list.

        set foo_options [db_list_of_lists foo_option_list "
             select foo,
                    foo_id
               from foos
        @@ -43,5 +43,5 @@
             ns_set print $mypage
         }
             

      Common Errors

      Here are some common errors and what to do when you - encounter them:

      Error when selecting values

      This generally happens when there is an error in your + encounter them:

      Error when selecting values

      This generally happens when there is an error in your query.

      ($Id$)
      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/groups-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-design.html,v diff -u -r1.21.2.2 -r1.21.2.3 --- openacs-4/packages/acs-core-docs/www/groups-design.html 1 Nov 2004 23:39:44 -0000 1.21.2.2 +++ openacs-4/packages/acs-core-docs/www/groups-design.html 8 Nov 2004 19:59:13 -0000 1.21.2.3 @@ -1,4 +1,4 @@ -Groups Design

      Groups Design

      By Rafael H. Schloming and Mark Thomas

      +Groups Design

      Groups Design

      By Rafael H. Schloming and Mark Thomas

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

      Essentials

      • User directory

      • Sitewide administrator directory

      • Subsite administrator directory

      • TCL script directory

      • OpenACS 4 Groups Requirements

      • Data model

      • PL/SQL file

        • Index: openacs-4/packages/acs-core-docs/www/groups-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-requirements.html,v diff -u -r1.21.2.2 -r1.21.2.3 --- openacs-4/packages/acs-core-docs/www/groups-requirements.html 1 Nov 2004 23:39:44 -0000 1.21.2.2 +++ openacs-4/packages/acs-core-docs/www/groups-requirements.html 8 Nov 2004 19:59:14 -0000 1.21.2.3 @@ -1,4 +1,4 @@ -Groups Requirements

          Groups Requirements

          By Rafael H. Schloming, Mark Thomas

          +Groups Requirements

          Groups Requirements

          By Rafael H. Schloming, Mark Thomas

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

          Introduction

          Almost all database-backed websites have users, and need to model the Index: openacs-4/packages/acs-core-docs/www/high-avail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/high-avail.html,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/acs-core-docs/www/high-avail.html 1 Nov 2004 23:39:45 -0000 1.5.2.5 +++ openacs-4/packages/acs-core-docs/www/high-avail.html 8 Nov 2004 19:59:15 -0000 1.5.2.6 @@ -1 +1 @@ -High Availability/High Performance Configurations

          High Availability/High Performance Configurations

          See also the section called “Running a PostgreSQL database on another server”.

          Figure�6.1.�Multiple-server configuration

          Multiple-server configuration
          View comments on this page at openacs.org
          +High Availability/High Performance Configurations

          High Availability/High Performance Configurations

          See also the section called “Running a PostgreSQL database on another server”.

          Figure�6.1.�Multiple-server configuration

          Multiple-server configuration
          View comments on this page at openacs.org
          Index: openacs-4/packages/acs-core-docs/www/how-do-I.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/how-do-I.html,v diff -u -r1.9.2.5 -r1.9.2.6 --- openacs-4/packages/acs-core-docs/www/how-do-I.html 1 Nov 2004 23:39:45 -0000 1.9.2.5 +++ openacs-4/packages/acs-core-docs/www/how-do-I.html 8 Nov 2004 19:59:15 -0000 1.9.2.6 @@ -1,6 +1,6 @@ -How Do I?

          How Do I?

          How do I edit the front page of a new site through a web interface?

          The easiest way is to install the Edit-This-Page package.

          1. Log in to the web site as an administrator.

          2. Click on Admin > Install Software > Install from OpenACS Repository / Install new application

          3. Choose Edit This Page and install

          4. Follow the instructions within Edit This Page (the link will only work after Edit This Page is installed).

          How do I let anybody who registers post to a weblog?

          Go to /admin/permissions and grant Create to Registered Users

          How do I replace the front page of a new site with the front page of an application on that site

          Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.

          1. On the front page, click the Admin button.

          2. On the administration page, click Parameters link.

          3. Change the parameter IndexRedirectUrl to be the URI of the desired application. For a default weblogger installation, this would be weblogger/. Note the trailing slash.

          How do I put custom functionality on front page of a new site?

          Every page within an OpenACS site is part of a subsite More information). The home page of the entire site is the front page is a special, default instance of a subsite, served from /var/lib/aolserver/$OPENACS_SERVICE_NAME/www. If an index page is not found there, the default index page for all subsites is used. To customize the code on the front page, copy the default index page from the Subsite package to the Main site and edit it:

          1. cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-subsite/www/index* /var/lib/aolserver/$OPENACS_SERVICE_NAME/www
          2. Edit the new index.adp to change the text; you shouldn't need to edit index.tcl unless you are adding new functionality.

          How do I change the site-wide style?

          Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works:

          • +How Do I?

            How Do I?

            How do I edit the front page of a new site through a web interface?

            The easiest way is to install the Edit-This-Page package.

            1. Log in to the web site as an administrator.

            2. Click on Admin > Install Software > Install from OpenACS Repository / Install new application

            3. Choose Edit This Page and install

            4. Follow the instructions within Edit This Page (the link will only work after Edit This Page is installed).

            How do I let anybody who registers post to a weblog?

            Go to /admin/permissions and grant Create to Registered Users

            How do I replace the front page of a new site with the front page of an application on that site

            Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.

            1. On the front page, click the Admin button.

            2. On the administration page, click Parameters link.

            3. Change the parameter IndexRedirectUrl to be the URI of the desired application. For a default weblogger installation, this would be weblogger/. Note the trailing slash.

            How do I put custom functionality on front page of a new site?

            Every page within an OpenACS site is part of a subsite More information). The home page of the entire site is the front page is a special, default instance of a subsite, served from /var/lib/aolserver/$OPENACS_SERVICE_NAME/www. If an index page is not found there, the default index page for all subsites is used. To customize the code on the front page, copy the default index page from the Subsite package to the Main site and edit it:

            1. cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-subsite/www/index* /var/lib/aolserver/$OPENACS_SERVICE_NAME/www
            2. Edit the new index.adp to change the text; you shouldn't need to edit index.tcl unless you are adding new functionality.

            How do I change the site-wide style?

            Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works:

            • A templated page uses an ADP/TCL pair. The first line in the ADP file is usually:

              <master>

              If it appears exactly like this, without any arguments, the template processer uses default-master for that subsite. For pages in /var/lib/aolserver/$OPENACS_SERVICE_NAME/www, this is /var/lib/aolserver/$OPENACS_SERVICE_NAME/www/default-master.adp and the associated .tcl file. -

            • The default-master is itself a normal ADP page. It draws the subsite navigation elements and invokes site-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/site-master.adp and .tcl)

            • The site-master draws site-wide navigation elements and invokes blank-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/blank-master.adp and .tcl).

            • Blank-master does HTML housekeeping and provides a framework for special sitewide navigation "meta" elements such as Translator widgets and Admin widgets.

            Figure�4.1.�Site Templates

            Site Templates

            How do I diagnose a permissions problem?

            • Steps to Reproduce.�The events package does not allow users to register for new events.

              1. Go to the http://yourserver.net/events as a visitor (ie, log out and, if necessary, clear cookies). This in on a 4.6.3 site with events version 0.1d3.

              2. Select an available event

              3. A link such as Registration: Deadline is 03/15/2004 10:00am. +

              4. The default-master is itself a normal ADP page. It draws the subsite navigation elements and invokes site-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/site-master.adp and .tcl)

              5. The site-master draws site-wide navigation elements and invokes blank-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/blank-master.adp and .tcl).

              6. Blank-master does HTML housekeeping and provides a framework for special sitewide navigation "meta" elements such as Translator widgets and Admin widgets.

            Figure�4.1.�Site Templates

            Site Templates

            How do I diagnose a permissions problem?

            • Steps to Reproduce.�The events package does not allow users to register for new events.

              1. Go to the http://yourserver.net/events as a visitor (ie, log out and, if necessary, clear cookies). This in on a 4.6.3 site with events version 0.1d3.

              2. Select an available event

              3. A link such as Registration: Deadline is 03/15/2004 10:00am. � Login or sign up to register for this event. is visible. Click on "Login or sign up" -

              4. Complete a new registration. Afterwards, you should be redirected back to the same page.

              Actual Results: The page says "You do not have permission to register for this event."

              Expected results: A link or form to sign up for the event is shown.

            • Finding the problem.�We start with the page that has the error. In the URL it's http://myserver.net/events/event-info.tcl, so open the file /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/events/www/event-info.tcl. It contains this line:

              set can_register_p [events::security::can_register_for_event_p -event_id $event_id]

              We need to know what that procedure does, so go to /api-doc, paste events::security::can_register_for_event_p into the ACS Tcl API Search box, and click Feeling Lucky. The next pages shows the proc, and we click "show source" to see more information. The body of the proc is simply

              return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]

              This means that a given user must have the write privilige on the event in order to register. Let's assume that the priviliges inherit, so that if a user has the write privilige on the whole package, they will have the write privilege on the event.

            • Setting Permissions.�A permission has three parts: the privilige, the object of the privilige, and the subject being granted the privilige. In this case the privilige is "write," the object is the Events package, and the subject is all Registered Users.

              1. To grant permissions on a package, start at the site map. Find the event package and click "Set permissions".

              2. Click "Grant Permission"

              3. Grant the write permission to Registered Users.

                Figure�4.2.�Granting Permissions

                Granting Permissions

              OpenACS 5.0 offers a prettier version at /admin/applications.

              Figure�4.3.�Granting Permissions in 5.0

              Granting Permissions in 5.0
            View comments on this page at openacs.org
            +

          • Complete a new registration. Afterwards, you should be redirected back to the same page.

    Actual Results: The page says "You do not have permission to register for this event."

    Expected results: A link or form to sign up for the event is shown.

  • Finding the problem.�We start with the page that has the error. In the URL it's http://myserver.net/events/event-info.tcl, so open the file /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/events/www/event-info.tcl. It contains this line:

    set can_register_p [events::security::can_register_for_event_p -event_id $event_id]

    We need to know what that procedure does, so go to /api-doc, paste events::security::can_register_for_event_p into the ACS Tcl API Search box, and click Feeling Lucky. The next pages shows the proc, and we click "show source" to see more information. The body of the proc is simply

    return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]

    This means that a given user must have the write privilige on the event in order to register. Let's assume that the priviliges inherit, so that if a user has the write privilige on the whole package, they will have the write privilege on the event.

  • Setting Permissions.�A permission has three parts: the privilige, the object of the privilige, and the subject being granted the privilige. In this case the privilige is "write," the object is the Events package, and the subject is all Registered Users.

    1. To grant permissions on a package, start at the site map. Find the event package and click "Set permissions".

    2. Click "Grant Permission"

    3. Grant the write permission to Registered Users.

      Figure�4.2.�Granting Permissions

      Granting Permissions

    OpenACS 5.0 offers a prettier version at /admin/applications.

    Figure�4.3.�Granting Permissions in 5.0

    Granting Permissions in 5.0
  • View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/i18n-convert.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-convert.html,v diff -u -r1.4.2.4 -r1.4.2.5 --- openacs-4/packages/acs-core-docs/www/i18n-convert.html 1 Nov 2004 23:39:45 -0000 1.4.2.4 +++ openacs-4/packages/acs-core-docs/www/i18n-convert.html 8 Nov 2004 19:59:16 -0000 1.4.2.5 @@ -1,4 +1,4 @@ -How to Internationalize a Package

    How to Internationalize a Package

    Tip

    +How to Internationalize a Package

    How to Internationalize a Package

    Tip

    For multilingual websites we recommend using the UTF8 charset. In order for AOLserver to use utf8 you need to set the config parameters OutputCharset and @@ -71,7 +71,7 @@ test. If you don't provide the package_key argument then all packages with catalog files will be checked. The script will run its checks primarily on en_US xml catalog files. -

    Avoiding common i18n mistakes

    • Replace complicated keys with longer, simpler keys.�When writing in one language, it is possible to create clever code to make correct text. In English, for example, you can put an if command at the end of a word which adds "s" if a count is anything but 1. This pluralizes nouns correctly based on the data. However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages. While internationalizing, watch out that the automate converter does not create such keys. Also, refactor compound text as you encounter it.

      The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle. In these cases, uncheck those keys during the conversion and then edit the files directly. For example, this code:

        <p class="form-help-text"><b>Invitations</b> are sent,
      +      

    Avoiding common i18n mistakes

    • Replace complicated keys with longer, simpler keys.�When writing in one language, it is possible to create clever code to make correct text. In English, for example, you can put an if command at the end of a word which adds "s" if a count is anything but 1. This pluralizes nouns correctly based on the data. However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages. While internationalizing, watch out that the automate converter does not create such keys. Also, refactor compound text as you encounter it.

      The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle. In these cases, uncheck those keys during the conversion and then edit the files directly. For example, this code:

        <p class="form-help-text"><b>Invitations</b> are sent,
                 when this wizard is completed and casting begins.</p>

      has a bold tag which confuses the converter into thinking there are two message keys for the text beginning "Invitations ..." where there should be one:

      Instead, we cancel those keys, edit the file manually, and put in a single temporary message tag:

        <p class="form-help-text"> <#Invitations_are_sent <b>Invitations</b> are sent, 
       when this wizard is completed and casting begins.#>
         </p>

      Complex if statements may produce convoluted message keys that are very hard to localize. Rewrite these if statements. For example:

      Select which case <if @simulation.casting_type@ eq "open">and
      Index: openacs-4/packages/acs-core-docs/www/i18n-design.html
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-design.html,v
      diff -u -r1.2.2.3 -r1.2.2.4
      --- openacs-4/packages/acs-core-docs/www/i18n-design.html	1 Nov 2004 23:39:45 -0000	1.2.2.3
      +++ openacs-4/packages/acs-core-docs/www/i18n-design.html	8 Nov 2004 19:59:16 -0000	1.2.2.4
      @@ -1,2 +1,2 @@
      -Design Notes

      Design Notes

      User locale is a property of ad_conn, ad_conn locale. The request processor sets this by calling lang::conn::locale, which looks for the following in order of precedence:

      1. Use user preference for this package (stored in ad_locale_user_prefs)

      2. Use system preference for the package (stored in apm_packages)

      3. Use user's general preference (stored in user_preferences)

      4. Use Browser header (Accept-Language HTTP header)

      5. Use system locale (an APM parameter for acs_lang)

      6. default to en_US

      For ADP pages, message key lookup occurs in the templating engine. For TCL pages, message key lookup happens with the _ function. In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is +Design Notes

      Design Notes

      User locale is a property of ad_conn, ad_conn locale. The request processor sets this by calling lang::conn::locale, which looks for the following in order of precedence:

      1. Use user preference for this package (stored in ad_locale_user_prefs)

      2. Use system preference for the package (stored in apm_packages)

      3. Use user's general preference (stored in user_preferences)

      4. Use Browser header (Accept-Language HTTP header)

      5. Use system locale (an APM parameter for acs_lang)

      6. default to en_US

      For ADP pages, message key lookup occurs in the templating engine. For TCL pages, message key lookup happens with the _ function. In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is found, then that locale is offered instead.

      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/i18n-introduction.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-introduction.html,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-core-docs/www/i18n-introduction.html 1 Nov 2004 23:39:45 -0000 1.4.2.3 +++ openacs-4/packages/acs-core-docs/www/i18n-introduction.html 8 Nov 2004 19:59:16 -0000 1.4.2.4 @@ -1,4 +1,4 @@ -How Internationalization/Localization works in OpenACS

      How Internationalization/Localization works in OpenACS

      +How Internationalization/Localization works in OpenACS

      How Internationalization/Localization works in OpenACS

      This document describes how to develop internationalized OpenACS packages, including writing new packages with internationalization and converting old packages. Text that Index: openacs-4/packages/acs-core-docs/www/i18n-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-overview.html,v diff -u -r1.2.2.3 -r1.2.2.4 --- openacs-4/packages/acs-core-docs/www/i18n-overview.html 1 Nov 2004 23:39:45 -0000 1.2.2.3 +++ openacs-4/packages/acs-core-docs/www/i18n-overview.html 8 Nov 2004 19:59:16 -0000 1.2.2.4 @@ -1 +1 @@ -Internationalization and Localization Overview

      Internationalization and Localization Overview

      Table�14.1.�Internationalization and Localization Overview

      StageTaskWho
      InternationalizationPackage Developer uses the acs-lang tools to replace all visible text in a package with message keys. (More information)Package Developer
      Release ManagementThe newly internationalized package is released.Package Developer
      The translation server is updated with the new package.Translation server maintainers
      LocalizationTranslators work in their respective locales to write text for each message key. (More information)Translators
      Release ManagementThe translated text in the database of the translation server is compared to the current translations in the OpenACS code base, conflicts are resolved, and the new text is written to catalog files on the translation server.Translation server maintainers
      The catalog files are committed to the OpenACS code base.Translation server maintainers
      A new version of OpenACS core and/or affected packages is released and published in the OpenACS.org repository.Release Manager
      UpgradingSite Administrators upgrade their OpenACS sites, either via the automatic upgrade from the Repository or via tarball or CVS Site Administrators
      Site Administrators import the new translations. Existing local translations, if they exist, are not overwritten.Site Administrators
      View comments on this page at openacs.org
      +Internationalization and Localization Overview

      Internationalization and Localization Overview

      Table�15.1.�Internationalization and Localization Overview

      StageTaskWho
      InternationalizationPackage Developer uses the acs-lang tools to replace all visible text in a package with message keys. (More information)Package Developer
      Release ManagementThe newly internationalized package is released.Package Developer
      The translation server is updated with the new package.Translation server maintainers
      LocalizationTranslators work in their respective locales to write text for each message key. (More information)Translators
      Release ManagementThe translated text in the database of the translation server is compared to the current translations in the OpenACS code base, conflicts are resolved, and the new text is written to catalog files on the translation server.Translation server maintainers
      The catalog files are committed to the OpenACS code base.Translation server maintainers
      A new version of OpenACS core and/or affected packages is released and published in the OpenACS.org repository.Release Manager
      UpgradingSite Administrators upgrade their OpenACS sites, either via the automatic upgrade from the Repository or via tarball or CVS Site Administrators
      Site Administrators import the new translations. Existing local translations, if they exist, are not overwritten.Site Administrators
      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/i18n-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-requirements.html,v diff -u -r1.13.2.2 -r1.13.2.3 --- openacs-4/packages/acs-core-docs/www/i18n-requirements.html 1 Nov 2004 23:39:45 -0000 1.13.2.2 +++ openacs-4/packages/acs-core-docs/www/i18n-requirements.html 8 Nov 2004 19:59:16 -0000 1.13.2.3 @@ -1,4 +1,4 @@ -OpenACS Internationalization Requirements

      OpenACS Internationalization Requirements

      by Henry Minsky, +OpenACS Internationalization Requirements

      OpenACS Internationalization Requirements

      by Henry Minsky, Yon Feldman, Lars Pind, Peter Marklund, @@ -93,7 +93,7 @@ Analysis

      Other application servers: ATG Dyanmo, Broadvision, Vignette, ... ? Anyone know how they deal with i18n ?

      Related Links

      • System/Package "coversheet" - where all -documentation for this software is linked off of

      • Design document

      • Developer's guide

      • User's guide

      • Other-cool-system-related-to-this-one +documentation for this software is linked off of

      • Design document

      • Developer's guide

      • User's guide

      • Other-cool-system-related-to-this-one document

        LI18NUX 2000 Globalization Specification: http://www.li18nux.net/

        Mozilla Index: openacs-4/packages/acs-core-docs/www/i18n-translators.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-translators.html,v diff -u -r1.2.2.3 -r1.2.2.4 --- openacs-4/packages/acs-core-docs/www/i18n-translators.html 1 Nov 2004 23:39:45 -0000 1.2.2.3 +++ openacs-4/packages/acs-core-docs/www/i18n-translators.html 8 Nov 2004 19:59:16 -0000 1.2.2.4 @@ -1 +1 @@ -Translator's Guide

        Translator's Guide

        Most translators use the OpenACS Public Translation Server, because the process of getting new message keys onto the server and getting new translations back into the distribution are handled by the maintainers of that machine. You can also do translation work on your own OpenACS site; this makes your own translations more readily available to you but also means that your work will not be shared with other users unless you take extra steps (contacting an OpenACS core developer or submitting a patch) to get your work back to the OpenACS core.

        The basic steps for translators:

        • Go to the Localization page and choose the locale that you are translating to. If the locale is not present you need to visit Administration of Localization and create the locale.

        • Translating with Translator Mode.�To translate messages in the pages they appear, Toggle Translator Mode and then browse to the page you want to translate. Untranslated messages will have a yellow background and a red star that you click to translate the message. Translated messages have a green star next to them that is a hyperlink to editing your translation. There is a history mechanism that allows you to see previous translations in case you would want to revert a translation.

          While in Translator mode, a list of all message keys appears at the bottom of each page.

        • Batch translation.�To translate many messages at once, go to Administration of Localization, click on the locale to translate, then click on a package, and then click Batch edit these messages.

        When creating a new locale based on an existing one, such as creating the Guatamalan version of Spanish, you can copy the existing locale's catalog files using the script /packages/acs-core-docs/www/files/create-new-catalog.sh.

        View comments on this page at openacs.org
        +Translator's Guide

        Translator's Guide

        Most translators use the OpenACS Public Translation Server, because the process of getting new message keys onto the server and getting new translations back into the distribution are handled by the maintainers of that machine. You can also do translation work on your own OpenACS site; this makes your own translations more readily available to you but also means that your work will not be shared with other users unless you take extra steps (contacting an OpenACS core developer or submitting a patch) to get your work back to the OpenACS core.

        The basic steps for translators:

        • Go to the Localization page and choose the locale that you are translating to. If the locale is not present you need to visit Administration of Localization and create the locale.

        • Translating with Translator Mode.�To translate messages in the pages they appear, Toggle Translator Mode and then browse to the page you want to translate. Untranslated messages will have a yellow background and a red star that you click to translate the message. Translated messages have a green star next to them that is a hyperlink to editing your translation. There is a history mechanism that allows you to see previous translations in case you would want to revert a translation.

          While in Translator mode, a list of all message keys appears at the bottom of each page.

        • Batch translation.�To translate many messages at once, go to Administration of Localization, click on the locale to translate, then click on a package, and then click Batch edit these messages.

        When creating a new locale based on an existing one, such as creating the Guatamalan version of Spanish, you can copy the existing locale's catalog files using the script /packages/acs-core-docs/www/files/create-new-catalog.sh.

        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/i18n.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n.html,v diff -u -r1.20.2.3 -r1.20.2.4 --- openacs-4/packages/acs-core-docs/www/i18n.html 1 Nov 2004 23:39:45 -0000 1.20.2.3 +++ openacs-4/packages/acs-core-docs/www/i18n.html 8 Nov 2004 19:59:16 -0000 1.20.2.4 @@ -1,4 +1,4 @@ -Chapter�14.�Internationalization

        Chapter�14.�Internationalization

        +Chapter�15.�Internationalization

        Chapter�15.�Internationalization

        By Peter Marklund and Lars Pind

        Index: openacs-4/packages/acs-core-docs/www/index.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/index.html,v diff -u -r1.33.2.6 -r1.33.2.7 --- openacs-4/packages/acs-core-docs/www/index.html 3 Nov 2004 16:37:48 -0000 1.33.2.6 +++ openacs-4/packages/acs-core-docs/www/index.html 8 Nov 2004 19:59:18 -0000 1.33.2.7 @@ -1,3 +1,3 @@ -OpenACS Core Documentation

        OpenACS Core Documentation


        Table of Contents

        I. OpenACS For Everyone
        1. High level information: What is OpenACS?
        Overview
        OpenACS Release Notes
        II. Administrator's Guide
        2. Installation Overview
        Basic Steps
        Prerequisite Software
        3. Complete Installation
        Install a Unix-like system and supporting software
        Install Oracle 8.1.7
        Install PostgreSQL
        Install AOLserver 4
        Install OpenACS 5.1.2
        OpenACS Installation Guide for Windows2000
        OpenACS Installation Guide for Mac OS X
        4. Configuring a new OpenACS Site
        How Do I?
        5. Upgrading
        Overview
        Upgrading 4.5 or higher to 4.6.3
        Upgrading OpenACS 4.6.3 to 5.0
        Upgrading 5.0.0 to 5.0.x or 5.1.x
        Upgrading the OpenACS files
        Upgrading Platform components
        6. Production Environments
        Starting and Stopping an OpenACS instance.
        AOLserver keepalive with inittab
        Running multiple services on one machine
        High Availability/High Performance Configurations
        Staged Deployment for Production Networks
        Installing SSL Support for an OpenACS service
        Set up Log Analysis Reports
        External uptime validation
        Diagnosing Performance Problems
        7. Database Management
        Running a PostgreSQL database on another server
        Deleting a tablespace
        Vacuum Postgres nightly
        8. Backup and Recovery
        Backup Strategy
        Manual backup and recovery
        Automated Backup
        Using CVS for backup-recovery
        A. Install Red Hat 8/9
        B. Install additional supporting software
        Unpack the OpenACS tarball
        Initialize CVS (OPTIONAL)
        Add PSGML commands to emacs init file (OPTIONAL)
        Install Daemontools (OPTIONAL)
        Install qmail (OPTIONAL)
        Install Analog web file analyzer
        Install nspam
        Install Full Text Search
        Install nsopenssl
        Install tclwebtest.
        Install PHP for use in AOLserver
        Install Squirrelmail for use as a webmail system for OpenACS
        Install PAM Radius for use as external authentication
        Install LDAP for use as external authentication
        Install AOLserver 3.3oacs1
        C. Credits
        Where did this document come from?
        Linux Install Guides
        Security Information
        Resources
        III. For OpenACS Package Developers
        9. Development Tutorial
        Creating an Application Package
        Setting Up Database Objects
        Creating Web Pages
        Debugging and Automated Testing
        10. Advanced Topics
        Write the Requirements and Design Specs
        Add the new package to CVS
        Adding Comments
        Admin Pages
        Categories
        Profile your code
        Prepare the package for distribution.
        Notifications
        Hierarchical data
        Using .vuh files for pretty urls
        Laying out a page with CSS instead of tables
        Sending HTML email from your application
        Basic Caching
        Scheduled Procedures
        Future Topics
        11. Development Reference
        OpenACS Packages
        OpenACS Data Models and the Object System
        The Request Processor
        The OpenACS Database Access API
        Using Templates in OpenACS
        Groups, Context, Permissions
        Writing OpenACS Application Pages
        Parties in OpenACS
        OpenACS Permissions Tediously Explained
        Object Identity
        Programming with AOLserver
        Using HTML Forms
        12. Engineering Standards
        OpenACS Style Guide
        Release Version Numbering
        Constraint naming standard
        ACS File Naming and Formatting Standards
        PL/SQL Standards
        Variables
        Automated Testing
        13. +OpenACS Core Documentation

        OpenACS Core Documentation


        Table of Contents

        I. OpenACS For Everyone
        1. High level information: What is OpenACS?
        Overview
        OpenACS Release Notes
        II. Administrator's Guide
        2. Installation Overview
        Basic Steps
        Prerequisite Software
        3. Complete Installation
        Install a Unix-like system and supporting software
        Install Oracle 8.1.7
        Install PostgreSQL
        Install AOLserver 4
        Install OpenACS 5.1.2
        OpenACS Installation Guide for Windows2000
        OpenACS Installation Guide for Mac OS X
        4. Configuring a new OpenACS Site
        How Do I?
        5. Upgrading
        Overview
        Upgrading 4.5 or higher to 4.6.3
        Upgrading OpenACS 4.6.3 to 5.0
        Upgrading 5.0.0 to 5.0.x or 5.1.x
        Upgrading the OpenACS files
        Upgrading Platform components
        6. Production Environments
        Starting and Stopping an OpenACS instance.
        AOLserver keepalive with inittab
        Running multiple services on one machine
        High Availability/High Performance Configurations
        Staged Deployment for Production Networks
        Installing SSL Support for an OpenACS service
        Set up Log Analysis Reports
        External uptime validation
        Diagnosing Performance Problems
        7. Database Management
        Running a PostgreSQL database on another server
        Deleting a tablespace
        Vacuum Postgres nightly
        8. Backup and Recovery
        Backup Strategy
        Manual backup and recovery
        Automated Backup
        Using CVS for backup-recovery
        A. Install Red Hat 8/9
        B. Install additional supporting software
        Unpack the OpenACS tarball
        Initialize CVS (OPTIONAL)
        Add PSGML commands to emacs init file (OPTIONAL)
        Install Daemontools (OPTIONAL)
        Install qmail (OPTIONAL)
        Install Analog web file analyzer
        Install nspam
        Install Full Text Search
        Install nsopenssl
        Install tclwebtest.
        Install PHP for use in AOLserver
        Install Squirrelmail for use as a webmail system for OpenACS
        Install PAM Radius for use as external authentication
        Install LDAP for use as external authentication
        Install AOLserver 3.3oacs1
        C. Credits
        Where did this document come from?
        Linux Install Guides
        Security Information
        Resources
        III. For OpenACS Package Developers
        9. Development Tutorial
        Creating an Application Package
        Setting Up Database Objects
        Creating Web Pages
        Debugging and Automated Testing
        10. Advanced Topics
        Write the Requirements and Design Specs
        Add the new package to CVS
        Adding Comments
        Admin Pages
        Categories
        Profile your code
        Prepare the package for distribution.
        Notifications
        Hierarchical data
        Using .vuh files for pretty urls
        Laying out a page with CSS instead of tables
        Sending HTML email from your application
        Basic Caching
        Scheduled Procedures
        Future Topics
        11. Development Reference
        OpenACS Packages
        OpenACS Data Models and the Object System
        The Request Processor
        The OpenACS Database Access API
        Using Templates in OpenACS
        Groups, Context, Permissions
        Writing OpenACS Application Pages
        Parties in OpenACS
        OpenACS Permissions Tediously Explained
        Object Identity
        Programming with AOLserver
        Using HTML Forms
        12. Engineering Standards
        OpenACS Style Guide
        Release Version Numbering
        Constraint naming standard
        ACS File Naming and Formatting Standards
        PL/SQL Standards
        Variables
        Automated Testing
        13. CVS Guidelines -
        Using CVS with OpenACS
        OpenACS CVS Concepts
        Contributing code back to OpenACS
        Additional Resources for CVS
        14. Documentation Standards
        OpenACS Documentation Guide
        Using PSGML mode in Emacs
        Using nXML mode in Emacs
        Detailed Design Documentation Template
        System/Application Requirements Template
        15. Internationalization
        Internationalization and Localization Overview
        How Internationalization/Localization works in OpenACS
        How to Internationalize a Package
        Design Notes
        Translator's Guide
        D. Using CVS with an OpenACS Site
        IV. For OpenACS Platform Developers
        16. Kernel Documentation
        Overview
        Object Model Requirements
        Object Model Design
        Permissions Requirements
        Permissions Design
        Groups Requirements
        Groups Design
        Subsites Requirements
        Subsites Design Document
        Package Manager Requirements
        Package Manager Design
        Database Access API
        OpenACS Internationalization Requirements
        Security Requirements
        Security Design
        Security Notes
        Request Processor Requirements
        Request Processor Design
        Documenting Tcl Files: Page Contracts and Libraries
        Bootstrapping OpenACS
        External Authentication Requirements
        17. Releasing OpenACS
        OpenACS Core and .LRN
        How to Update the OpenACS.org repository
        How to package and release an OpenACS Package
        How to Update the translations
        Index
        View comments on this page at openacs.org
        +
        Using CVS with OpenACS
        OpenACS CVS Concepts
        Contributing code back to OpenACS
        Additional Resources for CVS
        14. Documentation Standards
        OpenACS Documentation Guide
        Using PSGML mode in Emacs
        Using nXML mode in Emacs
        Detailed Design Documentation Template
        System/Application Requirements Template
        15. Internationalization
        Internationalization and Localization Overview
        How Internationalization/Localization works in OpenACS
        How to Internationalize a Package
        Design Notes
        Translator's Guide
        D. Using CVS with an OpenACS Site
        IV. For OpenACS Platform Developers
        16. Kernel Documentation
        Overview
        Object Model Requirements
        Object Model Design
        Permissions Requirements
        Permissions Design
        Groups Requirements
        Groups Design
        Subsites Requirements
        Subsites Design Document
        Package Manager Requirements
        Package Manager Design
        Database Access API
        OpenACS Internationalization Requirements
        Security Requirements
        Security Design
        Security Notes
        Request Processor Requirements
        Request Processor Design
        Documenting Tcl Files: Page Contracts and Libraries
        Bootstrapping OpenACS
        External Authentication Requirements
        17. Releasing OpenACS
        OpenACS Core and .LRN
        How to Update the OpenACS.org repository
        How to package and release an OpenACS Package
        How to Update the translations
        Index
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/install-cvs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.html,v diff -u -r1.21.2.5 -r1.21.2.6 --- openacs-4/packages/acs-core-docs/www/install-cvs.html 1 Nov 2004 23:39:47 -0000 1.21.2.5 +++ openacs-4/packages/acs-core-docs/www/install-cvs.html 8 Nov 2004 19:59:20 -0000 1.21.2.6 @@ -1,4 +1,4 @@ -Initialize CVS (OPTIONAL)

        Initialize CVS (OPTIONAL)

        CVS is a source control system. Create and initialize a +Initialize CVS (OPTIONAL)

        Initialize CVS (OPTIONAL)

        CVS is a source control system. Create and initialize a directory for a local cvs repository.

        [root tmp]# mkdir /cvsroot
         [root tmp]# cvs -d /cvsroot init
         [root tmp]#
        Index: openacs-4/packages/acs-core-docs/www/install-daemontools.html
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.html,v
        diff -u -r1.22.2.5 -r1.22.2.6
        --- openacs-4/packages/acs-core-docs/www/install-daemontools.html	1 Nov 2004 23:39:47 -0000	1.22.2.5
        +++ openacs-4/packages/acs-core-docs/www/install-daemontools.html	8 Nov 2004 19:59:21 -0000	1.22.2.6
        @@ -3,7 +3,7 @@
               installed in /package.  These commands install daemontools and
               svgroup.  svgroup is a script for granting permissions, to allow
               users other than root to use daemontools for specific
        -      services.

        1. Install Daemontools

          download daemontools and install it.

          • Red Hat 8

            [root root]# mkdir -p /package
            +      services.

            1. Install Daemontools

              download daemontools and install it.

              • Red Hat 8

                [root root]# mkdir -p /package
                 [root root]# chmod 1755 /package/
                 [root root]# cd /package/
                 [root package]# tar xzf /tmp/daemontools-0.76.tar.gz
                Index: openacs-4/packages/acs-core-docs/www/install-full-text-search.html
                ===================================================================
                RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/install-full-text-search.html,v
                diff -u -r1.20.2.5 -r1.20.2.6
                --- openacs-4/packages/acs-core-docs/www/install-full-text-search.html	1 Nov 2004 23:39:48 -0000	1.20.2.5
                +++ openacs-4/packages/acs-core-docs/www/install-full-text-search.html	8 Nov 2004 19:59:21 -0000	1.20.2.6
                @@ -1,7 +1,7 @@
                 Install Full Text Search

                Install Full Text Search

                By Joel Aufrecht and Malte Sussdorff

                OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

                Install OpenFTS module

                If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and +

                Install OpenFTS module

                If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and AOLserver. You will need the openfts tarball in /tmp.

                1. Install Tsearch. This is a PostgreSQL module that OpenFTS requires.

                  [root root]# su - postgres
                  @@ -76,7 +76,7 @@
                   make
                   su postgres
                   make install
                  -exit

                Install OpenFTS prerequisites in PostgreSQL instance

                If you are installing Full Text Search, add required +exit

          Install OpenFTS prerequisites in PostgreSQL instance

          If you are installing Full Text Search, add required packages to the new database. (In order for full text search to work, you must also install the PostgreSQL OpenFTS module and prerequisites.)

          [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/local/pgsql/bin/psql $OPENACS_SERVICE_NAME -f /usr/local/src/postgresql-7.3.4/contrib/tsearch/tsearch.sql
          Index: openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html
          ===================================================================
          RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html,v
          diff -u -r1.5.2.5 -r1.5.2.6
          --- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html	1 Nov 2004 23:39:48 -0000	1.5.2.5
          +++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html	8 Nov 2004 19:59:22 -0000	1.5.2.6
          @@ -63,6 +63,6 @@
           
                   Most of this information comes from Tom Jackson's AOLserver+Daemontools
                     Mini-HOWTO.
          -

        Table�6.1.�How it Works

        ProgramInvoked by this program ...... using this fileWhere to find errorsLog goes toUse these commands to control it
        svscanboot +

        Table�6.1.�How it Works

        ProgramInvoked by this program ...... using this fileWhere to find errorsLog goes toUse these commands to control it
        svscanboot init/etc/inittabps -auxw | grep readproctitlen/a
        aolserversupervise (a child of svscanboot)/service/$OPENACS_SERVICE_NAME/run/var/lib/aolserver/$OPENACS_SERVICE_NAME/log/error.log/var/lib/aolserver/$OPENACS_SERVICE_NAME/log/$OPENACS_SERVICE_NAME.logsvc -k /service/$OPENACS_SERVICE_NAME
        postgresqlRedhat init scripts during boot/etc/init.d/postgresql/usr/local/pgsql/data/server.logservice postgresql start (Red Hat), /etc/init.d/postgresql start (Debian)
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/install-qmail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.html,v diff -u -r1.22.2.5 -r1.22.2.6 --- openacs-4/packages/acs-core-docs/www/install-qmail.html 1 Nov 2004 23:39:49 -0000 1.22.2.5 +++ openacs-4/packages/acs-core-docs/www/install-qmail.html 8 Nov 2004 19:59:22 -0000 1.22.2.6 @@ -29,7 +29,7 @@ tcpserver: usage: tcpserver [ -1UXpPhHrRoOdDqQv ] [ -c limit ] [ -x rules.cdb ] [ -B banner ] [ -g gid ] [ -u uid ] [ -b backlog ] [ -l localname ] [ -t timeout ] host port program [root ucspi-tcp-0.88]# -

        +

        (I'm not sure if this next step is 100% necessary, but when I skip it I get problems. If you get the error 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) then you need to do this.) AOLserver sends outgoing mail via the ns_sendmail command, which pipes a command to the sendmail executable. Or, in our @@ -43,7 +43,7 @@ send outgoing mail.

        [root ucspi-tcp-0.88]# cp /tmp/openacs-5.1.2/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
         [root ucspi-tcp-0.88]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
         cp /tmp/openacs-5.1.2/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp 
        -tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 
      • Install Qmail.�

        Download qmail, +tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

      • Install Qmail.�

        Download qmail, set up the standard supporting users and build the binaries:

        [root root]# cd /usr/local/src
         [root src]# wget http://www.qmail.org/netqmail-1.04.tar.gz
         [root src]# tar xzf netqmail-1.04.tar.gz
        @@ -102,7 +102,7 @@
         cd netqmail-1.04
         ./collate.sh
         cd netqmail-1.04
        -make setup check

        Replace sendmail with qmail's wrapper.

        [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
        +make setup check

        Replace sendmail with qmail's wrapper.

        [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
         [root qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
         [root qmail-1.03]#
         rm -f /usr/bin/sendmail /usr/sbin/sendmail
        @@ -124,7 +124,7 @@
         cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root 
         chmod 644 ~alias/.qmail* 
         /var/qmail/bin/maildirmake ~alias/Maildir/ 
        -chown -R alias.nofiles /var/qmail/alias/Maildir

        Configure qmail to use the Maildir delivery format +chown -R alias.nofiles /var/qmail/alias/Maildir

        Configure qmail to use the Maildir delivery format (instead of mbox), and install a version of the qmail startup script modified to use Maildir.

        [root alias]# echo "./Maildir" > /var/qmail/bin/.qmail
         [root alias]# cp /tmp/openacs-5.1.2/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
         [root alias]# chmod 755 /var/qmail/rc
        Index: openacs-4/packages/acs-core-docs/www/install-redhat.html
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.html,v
        diff -u -r1.22.2.5 -r1.22.2.6
        --- openacs-4/packages/acs-core-docs/www/install-redhat.html	1 Nov 2004 23:39:49 -0000	1.22.2.5
        +++ openacs-4/packages/acs-core-docs/www/install-redhat.html	8 Nov 2004 19:59:22 -0000	1.22.2.6
        @@ -26,7 +26,7 @@
         	

        1. Unplug the network cable from your computer. We don't want to connect to the network until we're sure the computer is secure. - + (Wherever you see the word secure, you should always read it as, "secure enough for our purposes, given the amount of work we're @@ -54,7 +54,7 @@ Review (and modify if needed) the partitions created and click Next

        2. On the pop-up window asking "Are you sure you want to do this?" click Yes - IF YOU ARE WIPING YOUR HARD DRIVE.

        3. Click Next on the boot loader screen

      • Configure Networking. + IF YOU ARE WIPING YOUR HARD DRIVE.

      • Click Next on the boot loader screen

      • Configure Networking. Again, if you know what you're doing, do this step yourself, being sure to note the firewall holes. Otherwise, follow the instructions in this step to set up a computer directly connected to the internet with a dedicated IP address.

        1. DHCP is a system by which a computer that @@ -75,7 +75,7 @@ Mail (SMTP). In the Other ports box, enter 443, 8000, 8443. Click Next. -Port 443 is for https (http over ssl), and 8000 and 8443 are http and https access to the development server we'll be setting up.

      • Select any additional languages you want the +Port 443 is for https (http over ssl), and 8000 and 8443 are http and https access to the development server we'll be setting up.

      • Select any additional languages you want the computer to support and then click Next

      • Choose your time zone and click Next.

      • Type in a root password, twice.

      • On the Package selection page, we're going to @@ -87,13 +87,13 @@ risk that's still screened by the firewall, or a resource hog. Just don't install a database or web server, because that would conflict with the database and web server we'll install later. -

        check Editors (this installs emacs),
        click Details next to Text-based Internet, check lynx, and click OK;
        check Authoring and Publishing (this installs docbook),
        uncheck Server Configuration Tools,
        uncheck Web Server,
        uncheck Windows File Server,
        check SQL Database Server (this installs PostgreSQL),
        check Development Tools (this installs gmake and other build tools),
        uncheck Administration Tools, and
        uncheck Printing Support.

        At the bottom, check Select Individual Packages and click Next

      • We need to fine-tune the exact list of packages. +

        check Editors (this installs emacs),
        click Details next to Text-based Internet, check lynx, and click OK;
        check Authoring and Publishing (this installs docbook),
        uncheck Server Configuration Tools,
        uncheck Web Server,
        uncheck Windows File Server,
        check SQL Database Server (this installs PostgreSQL),
        check Development Tools (this installs gmake and other build tools),
        uncheck Administration Tools, and
        uncheck Printing Support.

        At the bottom, check Select Individual Packages and click Next

      • We need to fine-tune the exact list of packages. The same rules apply as in the last step - you can add more stuff, but you shouldn't remove anything the guide adds. We're going to go through all the packages in one big list, so select Flat View and wait. In a minute, a -list of packages will appear.

        uncheck apmd (monitors power, not very useful for servers),
        check ImageMagick (required for the photo-album packages,
        uncheckisdn4k-utils (unless you are using isdn, this installs a useless daemon),
        check mutt (a mail program that reads Maildir),
        uncheck nfs-utils (nfs is a major security risk),
        uncheck pam-devel (I don't remember why, but we don't want this),
        uncheck portmap,
        uncheck postfix (this is an MTA, but we're going to install qmail later),
        check postgresql-devel,
        uncheck rsh (rsh is a security hole),
        uncheck sendmail (sendmail is an insecure MTA; we're going to install qmail instead later),
        check tcl (we need tcl), and
        uncheck xinetd (xinetd handles incoming tcp connections. We'll install a different, more secure program, ucspi-tcp).
        Click Next
      • Red Hat isn't completely happy with the combination +list of packages will appear.

        uncheck apmd (monitors power, not very useful for servers),
        check ImageMagick (required for the photo-album packages,
        uncheckisdn4k-utils (unless you are using isdn, this installs a useless daemon),
        check mutt (a mail program that reads Maildir),
        uncheck nfs-utils (nfs is a major security risk),
        uncheck pam-devel (I don't remember why, but we don't want this),
        uncheck portmap,
        uncheck postfix (this is an MTA, but we're going to install qmail later),
        check postgresql-devel,
        uncheck rsh (rsh is a security hole),
        uncheck sendmail (sendmail is an insecure MTA; we're going to install qmail instead later),
        check tcl (we need tcl), and
        uncheck xinetd (xinetd handles incoming tcp connections. We'll install a different, more secure program, ucspi-tcp).
        Click Next
      • Red Hat isn't completely happy with the combination of packages we've selected, and wants to satisfy some dependencies. Don't let it. On the next screen, choose Ignore Package @@ -119,7 +119,7 @@ upgrading all of that. Since you are upgrading the kernel, reboot after this step.

      • Lock down SSH

        1. - + SSH is the protocol we use to connect securely to the computer (replacing telnet, which is insecure). sshd is the daemon that listens for incoming Index: openacs-4/packages/acs-core-docs/www/install-steps.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.html,v diff -u -r1.15.2.5 -r1.15.2.6 --- openacs-4/packages/acs-core-docs/www/install-steps.html 1 Nov 2004 23:39:51 -0000 1.15.2.5 +++ openacs-4/packages/acs-core-docs/www/install-steps.html 8 Nov 2004 19:59:24 -0000 1.15.2.6 @@ -37,7 +37,7 @@ su - $OPENACS_SERVICE_NAME svc -d /service/$OPENACS_SERVICE_NAME dropdb $OPENACS_SERVICE_NAME -createdb $OPENACS_SERVICE_NAME

          Setting a global shell variable for cut and paste.�In order to cut and paste the instructions into your shell, you must set the environment variable $OPENACS_SERVICE_NAME. In order to set it globally so that it works for any new users or special service users you may create, edit the file /etc/profile and add this line:

          export OPENACS_SERVICE_NAME=service0

        Paths and Users

        Table�2.1.�Default directories for a standard install

        Fully qualified domain name of your serveryourserver.test
        name of administrative access accountremadmin
        OpenACS service +createdb $OPENACS_SERVICE_NAME

        Setting a global shell variable for cut and paste.�In order to cut and paste the instructions into your shell, you must set the environment variable $OPENACS_SERVICE_NAME. In order to set it globally so that it works for any new users or special service users you may create, edit the file /etc/profile and add this line:

        export OPENACS_SERVICE_NAME=service0

        Paths and Users

        Table�2.1.�Default directories for a standard install

        Fully qualified domain name of your serveryourserver.test
        name of administrative access accountremadmin
        OpenACS service $OPENACS_SERVICE_NAME (set to service0 in default install)
        OpenACS service account$OPENACS_SERVICE_NAME
        OpenACS database name$OPENACS_SERVICE_NAME
        Root of OpenACS service file tree (SERVERROOT)/var/lib/aolserver/$OPENACS_SERVICE_NAME
        Location of source code tarballs for new software/tmp
        The OpenACS tarball contains some files which are useful while setting up other software. Those files are located at:/tmp/openacs-5.1.2/packages/acs-core-docs/www/files
        Database backup directory/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup
        Service config files/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
        Service log files/var/lib/aolserver/$OPENACS_SERVICE_NAME/log
        Compile directory/usr/local/src
        PostgreSQL directory/usr/local/pgsql
        AOLserver directory/usr/local/aolserver

        Index: openacs-4/packages/acs-core-docs/www/ix01.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.html,v diff -u -r1.10.2.5 -r1.10.2.6 --- openacs-4/packages/acs-core-docs/www/ix01.html 1 Nov 2004 23:39:52 -0000 1.10.2.5 +++ openacs-4/packages/acs-core-docs/www/ix01.html 8 Nov 2004 19:59:25 -0000 1.10.2.6 @@ -1,2 +1,2 @@ -Index

        Index

        Symbols

        $OPENACS_SERVICE_NAME, Paths and Users

        C

        computeroutput
        code, Code
        cvs
        initializing, Initialize CVS (OPTIONAL)
        setup, Using CVS with an OpenACS Site

        D

        daemontools
        installation, Install Daemontools (OPTIONAL)
        docbook
        installation, Install Red Hat 8/9
        DocBook
        DTD, Why DocBook?
        emacs configuration for, Add PSGML commands to emacs init file (OPTIONAL)
        Document structure, Document Structure

        E

        emacs
        installation, Install Red Hat 8/9
        emphasis
        bold, italics, Emphasis

        G

        Graphics
        Images, Graphics

        I

        informaltable
        table, Tables

        L

        language
        installation, Install Red Hat 8/9
        Linking, Links
        lists, Lists

        O

        OpenACS Package, What a Package Looks Like

        P

        photo-album
        installation (see ImageMagick)
        Postgres
        Vacuuming, Installation Option 2: Install from tarball

        Q

        qmail
        installation, Install qmail (OPTIONAL)
        Maildir, Install qmail (OPTIONAL)
        rcpthosts error message, Install qmail (OPTIONAL)

        T

        The publish point for new packages should be +Index

        Index

        Symbols

        $OPENACS_SERVICE_NAME, Paths and Users

        C

        computeroutput
        code, Code
        cvs
        initializing, Initialize CVS (OPTIONAL)
        setup, Using CVS with an OpenACS Site

        D

        daemontools
        installation, Install Daemontools (OPTIONAL)
        docbook
        installation, Install Red Hat 8/9
        DocBook
        DTD, Why DocBook?
        emacs configuration for, Add PSGML commands to emacs init file (OPTIONAL)
        Document structure, Document Structure

        E

        emacs
        installation, Install Red Hat 8/9
        emphasis
        bold, italics, Emphasis

        G

        Graphics
        Images, Graphics

        I

        informaltable
        table, Tables

        L

        language
        installation, Install Red Hat 8/9
        Linking, Links
        lists, Lists

        O

        OpenACS Package, What a Package Looks Like

        P

        photo-album
        installation (see ImageMagick)
        Postgres
        Vacuuming, Installation Option 2: Install from tarball

        Q

        qmail
        installation, Install qmail (OPTIONAL)
        Maildir, Install qmail (OPTIONAL)
        rcpthosts error message, Install qmail (OPTIONAL)

        T

        The publish point for new packages should be fixed., Prepare the package for distribution.

        U

        ulink, Links
        upgrade
        OpenACS 4.5 to 4.6.x
        Linux/Unix, Upgrading 4.5 or higher to 4.6.3

        X

        XML guidelines, Why DocBook?
        xref
        linkend, Links
        xreflabel, Headlines, Sections
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/kernel-doc.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-doc.html,v diff -u -r1.24.2.2 -r1.24.2.3 --- openacs-4/packages/acs-core-docs/www/kernel-doc.html 1 Nov 2004 23:39:52 -0000 1.24.2.2 +++ openacs-4/packages/acs-core-docs/www/kernel-doc.html 8 Nov 2004 19:59:26 -0000 1.24.2.3 @@ -1 +1 @@ -Chapter�15.�Kernel Documentation
        View comments on this page at openacs.org
        +Chapter�16.�Kernel Documentation
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/kernel-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-overview.html,v diff -u -r1.18.2.2 -r1.18.2.3 --- openacs-4/packages/acs-core-docs/www/kernel-overview.html 1 Nov 2004 23:39:53 -0000 1.18.2.2 +++ openacs-4/packages/acs-core-docs/www/kernel-overview.html 8 Nov 2004 19:59:28 -0000 1.18.2.3 @@ -1,4 +1,4 @@ -Overview

        Overview

        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/maint-performance.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maint-performance.html,v diff -u -r1.10.2.5 -r1.10.2.6 --- openacs-4/packages/acs-core-docs/www/maint-performance.html 1 Nov 2004 23:39:54 -0000 1.10.2.5 +++ openacs-4/packages/acs-core-docs/www/maint-performance.html 8 Nov 2004 19:59:29 -0000 1.10.2.6 @@ -1,7 +1,7 @@ Diagnosing Performance Problems

        Diagnosing Performance Problems

        • Did performance problems happen overnight, or did they sneak up on you? Any clue what caused the performance problems (e.g. loading 20K users into .LRN)

        • Is the file system out of space? Is the machine swapping to disk constantly?

        • Isolating and solving database problems.

          • Without daily internal maintenance, most databases slowly degrade in performance. For PostGreSQL, see the section called “Vacuum Postgres nightly”. For Oracle, use exec dbms_stats.gather_schema_stats('SCHEMA_NAME') (Andrew Piskorski's Oracle notes).

          • You can track the exact amount of time each database query on a page takes:

            1. Go to Main Site : Site-Wide Administration : Install Software

            2. Click on "Install New Application" in "Install from OpenACS Repository"

            3. Choose "ACS Developer Support">

            4. After install is complete, restart the server.

            5. Browse to Developer Support, which is automatically mounted at /ds. -

            6. Turn on Database statistics

            7. Browse directly to a slow page and click "Request Information" at the bottom of the page.

            8. This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.

              Figure�6.8.�Query Analysis example

              Query Analysis example
          • Identify a runaway Oracle query: first, use ps aux or top to get the UNIX process ID of a runaway Oracle process.

            Log in to SQL*Plus as the admin:

            [$OPENACS_SERVICE_NAME ~]$ svrmgrl
            +              

          • Turn on Database statistics

          • Browse directly to a slow page and click "Request Information" at the bottom of the page.

          • This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.

            Figure�6.8.�Query Analysis example

            Query Analysis example
        • Identify a runaway Oracle query: first, use ps aux or top to get the UNIX process ID of a runaway Oracle process.

          Log in to SQL*Plus as the admin:

          [$OPENACS_SERVICE_NAME ~]$ svrmgrl
           
           Oracle Server Manager Release 3.1.7.0.0 - Production
           
          @@ -43,7 +43,7 @@
               

          To be able to get a overview of how Oracle executes a particular query, install "autotrace". I usually follow the instructions here http://asktom.oracle.com/~tkyte/article1/autotrace.html. -

          Make sure, that the Oracle CBO works with adequate statistics

          +

          Make sure, that the Oracle CBO works with adequate statistics

          The Oracle Cost Based optimizer is a piece of software that tries to find the "optimal" execution plan for a given SQL statement. For that it estimates the costs of running a SQL query in a particular way (by default Index: openacs-4/packages/acs-core-docs/www/maintenance-deploy.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-deploy.html,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/acs-core-docs/www/maintenance-deploy.html 1 Nov 2004 23:39:54 -0000 1.5.2.5 +++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.html 8 Nov 2004 19:59:29 -0000 1.5.2.6 @@ -1,7 +1,7 @@ Staged Deployment for Production Networks

          Staged Deployment for Production Networks

          By Joel Aufrecht

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          This section describes two minimal-risk methods for deploying changes on a production network. The important characteristics of a safe change deployment include: (THIS SECTION IN DEVELOPMENT)

          • Control: You know for sure that the change you are making is the change that you intend to make and is the change that you tested.

          • Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.

          Method 1: Deployment with CVS

          With this method, we control the files on a site via +

          This section describes two minimal-risk methods for deploying changes on a production network. The important characteristics of a safe change deployment include: (THIS SECTION IN DEVELOPMENT)

          • Control: You know for sure that the change you are making is the change that you intend to make and is the change that you tested.

          • Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.

          Method 1: Deployment with CVS

          With this method, we control the files on a site via CVS. This example uses one developmental server (service0-dev) and one production server (service0). Depending on your needs, you can also have a staging server for extensive testing before you go @@ -66,4 +66,4 @@ cvs up -Pd index.adp

          If you make changes that require changes to the database, test them out first on service0-dev, using either -create.sql or upgrade scripts. Once you've tested them, you then update and - run the upgrade scripts from the package manager.

          The production site can run "HEAD" from cvs.

          The drawback to using HEAD as the live code is that you cannot commit new work on the development server without erasing the definition of 'working production code.' So a better method is to use a tag. This guarantees that, at any time in the future, you can retrieve exactly the same set of code. This is useful for both of the characteristics of safe change deployment. For control, you can use tags to define a body of code, test that code, and then know that what you are deploying is exactly that code. For rollback, you can use return to the last working tag if the new tag (or new, untagged changes) cause problems. .... example of using tags to follow ...

        Method 2: A/B Deployment

        The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site. This guarantees control, at least at the final step of the process: you know what changes you are about to make because you can see them directly. It does not, by itself, guarantee the entire control chain. You need additional measures to make sure that the change you are making is exactly and completely the change you intended to make and tested previously, and nothing more. Those additional measures typically take the form of source control tags and system version numbers. The parallel-server approach also guarantees rollback because the original working service is not touched; it is merely set aside.

        This approach can has limitations. If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.

        Simple A/B Deployment: Database is not changed

        Figure�6.2.�Simple A/B Deployment - Step 1

        Simple A/B Deployment - Step 1

        Figure�6.3.�Simple A/B Deployment - Step 2

        Simple A/B Deployment - Step 2

        Figure�6.4.�Simple A/B Deployment - Step 3

        Simple A/B Deployment - Step 3

        Complex A/B Deployment: Database is changed

        Figure�6.5.�Complex A/B Deployment - Step 1

        Complex A/B Deployment - Step 1

        Figure�6.6.�Complex A/B Deployment - Step 2

        Complex A/B Deployment - Step 2

        Figure�6.7.�Complex A/B Deployment - Step 3

        Complex A/B Deployment - Step 3
        View comments on this page at openacs.org
        + run the upgrade scripts from the package manager.

        The production site can run "HEAD" from cvs.

        The drawback to using HEAD as the live code is that you cannot commit new work on the development server without erasing the definition of 'working production code.' So a better method is to use a tag. This guarantees that, at any time in the future, you can retrieve exactly the same set of code. This is useful for both of the characteristics of safe change deployment. For control, you can use tags to define a body of code, test that code, and then know that what you are deploying is exactly that code. For rollback, you can use return to the last working tag if the new tag (or new, untagged changes) cause problems. .... example of using tags to follow ...

        Method 2: A/B Deployment

        The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site. This guarantees control, at least at the final step of the process: you know what changes you are about to make because you can see them directly. It does not, by itself, guarantee the entire control chain. You need additional measures to make sure that the change you are making is exactly and completely the change you intended to make and tested previously, and nothing more. Those additional measures typically take the form of source control tags and system version numbers. The parallel-server approach also guarantees rollback because the original working service is not touched; it is merely set aside.

        This approach can has limitations. If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.

        Simple A/B Deployment: Database is not changed

        Figure�6.2.�Simple A/B Deployment - Step 1

        Simple A/B Deployment - Step 1

        Figure�6.3.�Simple A/B Deployment - Step 2

        Simple A/B Deployment - Step 2

        Figure�6.4.�Simple A/B Deployment - Step 3

        Simple A/B Deployment - Step 3

        Complex A/B Deployment: Database is changed

        Figure�6.5.�Complex A/B Deployment - Step 1

        Complex A/B Deployment - Step 1

        Figure�6.6.�Complex A/B Deployment - Step 2

        Complex A/B Deployment - Step 2

        Figure�6.7.�Complex A/B Deployment - Step 3

        Complex A/B Deployment - Step 3
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/nxml-mode.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/nxml-mode.html,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-core-docs/www/nxml-mode.html 1 Nov 2004 23:39:55 -0000 1.5.2.2 +++ openacs-4/packages/acs-core-docs/www/nxml-mode.html 8 Nov 2004 19:59:30 -0000 1.5.2.3 @@ -1,4 +1,4 @@ -Using nXML mode in Emacs

        Using nXML mode in Emacs

        By Jeff Davis

        +Using nXML mode in Emacs

        Using nXML mode in Emacs

        By Jeff Davis

        OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

        Index: openacs-4/packages/acs-core-docs/www/object-system-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-design.html,v diff -u -r1.22.2.2 -r1.22.2.3 --- openacs-4/packages/acs-core-docs/www/object-system-design.html 1 Nov 2004 23:39:55 -0000 1.22.2.2 +++ openacs-4/packages/acs-core-docs/www/object-system-design.html 8 Nov 2004 19:59:30 -0000 1.22.2.3 @@ -1,4 +1,4 @@ -Object Model Design

        Object Model Design

        By Pete Su, Michael Yoon, Richard Li, Rafael Schloming

        +Object Model Design

        Object Model Design

        By Pete Su, Michael Yoon, Richard Li, Rafael Schloming

        OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

        Essentials

        Data Model

        • Index: openacs-4/packages/acs-core-docs/www/object-system-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-requirements.html,v diff -u -r1.21.2.2 -r1.21.2.3 --- openacs-4/packages/acs-core-docs/www/object-system-requirements.html 1 Nov 2004 23:39:56 -0000 1.21.2.2 +++ openacs-4/packages/acs-core-docs/www/object-system-requirements.html 8 Nov 2004 19:59:30 -0000 1.21.2.3 @@ -1,4 +1,4 @@ -Object Model Requirements

          Object Model Requirements

          By Pete Su

          +Object Model Requirements

          Object Model Requirements

          By Pete Su

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

          I. Introduction

          A major goal in OpenACS 4 is to unify and normalize many of the core services Index: openacs-4/packages/acs-core-docs/www/objects.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.html,v diff -u -r1.32.2.5 -r1.32.2.6 --- openacs-4/packages/acs-core-docs/www/objects.html 1 Nov 2004 23:39:57 -0000 1.32.2.5 +++ openacs-4/packages/acs-core-docs/www/objects.html 8 Nov 2004 19:59:31 -0000 1.32.2.6 @@ -78,7 +78,7 @@ Fire up your text editor and open the ROOT/packages/notes/sql/oracle/notes-create.sql (ROOT/packages/notes/sql/postgresql/notes-create.sql for the PG version) file created when we created the package. Then, do the following: -

          Describe the new type to the type system

          +

          Describe the new type to the type system

          First, add an entry to the acs_object_types table with the following PL/SQL call:

           begin  
          @@ -138,7 +138,7 @@
           because the new type note is a subtype of
           acs_object, it will inherit these attributes, so there is
           no need for us to define them.
          -

          Define a table in which to store your objects

          +

          Define a table in which to store your objects

          The next thing we do is make a small modification to the data model to reflect the fact that each row in the notes table represents something that is not only an object of type @@ -163,7 +163,7 @@ use the acs_objects table to find objects will transparently find any objects that are instances of any subtype of acs_objects. -

          Define a package for type specific procedures

          +

          Define a package for type specific procedures

          The next step is to define a PL/SQL package for your new type, and write some basic procedures to create and delete objects. Here is a package definition for our new type: @@ -211,7 +211,7 @@ object OBJ was "read only", then any other object that used OBJ as its context would also be "read only" by default. We'll talk about this more later. -

          Define a package body for type specific procedures

          +

          Define a package body for type specific procedures

          The PL/SQL package body contains the implementations of the procedures defined above. The only subtle thing going on here is that we must use acs_object.new to insert a row into Index: openacs-4/packages/acs-core-docs/www/openacs-cvs-concepts.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/openacs-cvs-concepts.html,v diff -u -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/acs-core-docs/www/openacs-cvs-concepts.html 3 Nov 2004 16:37:48 -0000 1.1.2.1 +++ openacs-4/packages/acs-core-docs/www/openacs-cvs-concepts.html 8 Nov 2004 19:59:31 -0000 1.1.2.2 @@ -2,7 +2,7 @@ CVS Guidelines ">

          OpenACS CVS Concepts

          Modules

          +

        Next

        OpenACS CVS Concepts

        Modules

        All OpenACS code resides within a single CVS module, openacs-4. (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.) Checking out this module retrieves all openacs code of any type. For convenience, subsets of openacs-4 are repackaged as smaller modules.

        acs-core contains only critical common packages. It does not have any user applications, such as forums, @@ -30,7 +30,7 @@ project-manager-all contains the packages required, in combination with acs-core, to run the project-manager package.

        Each OpenACS package (i.e., directory in openacs-4/packages/) is also aliased as a module of the same name. -

        +

        Tags and Branches

        Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch. Check out Index: openacs-4/packages/acs-core-docs/www/openacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.html,v diff -u -r1.31.2.5 -r1.31.2.6 --- openacs-4/packages/acs-core-docs/www/openacs.html 1 Nov 2004 23:39:59 -0000 1.31.2.5 +++ openacs-4/packages/acs-core-docs/www/openacs.html 8 Nov 2004 19:59:31 -0000 1.31.2.6 @@ -220,7 +220,7 @@ CREATE DATABASE [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ su - $OPENACS_SERVICE_NAME -createdb -E UNICODE $OPENACS_SERVICE_NAME

      • Automate daily database Vacuuming. This is a process which cleans out discarded data from the database. A quick way to automate vacuuming is to edit the cron file for the database user. Recommended: VACUUM ANALYZE every hour and VACUUM FULL ANALYZE every day.

        [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ export EDITOR=emacs;crontab -e

        Add these lines to the file. The vacuum command cleans up temporary structures within a PostGreSQL database, and can improve performance. We vacuum gently every hour and completely every day. The numbers and stars at the beginning are cron columns that specify when the program should be run - in this case, whenever the minute is 0 and the hour is 1, i.e., 1:00 am every day, and every (*) day of month, month, and day of week. Type man 5 crontab for more information.

        0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --analyze $OPENACS_SERVICE_NAME
        +createdb -E UNICODE $OPENACS_SERVICE_NAME
      • Automate daily database Vacuuming. This is a process which cleans out discarded data from the database. A quick way to automate vacuuming is to edit the cron file for the database user. Recommended: VACUUM ANALYZE every hour and VACUUM FULL ANALYZE every day.

        [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ export EDITOR=emacs;crontab -e

        Add these lines to the file. The vacuum command cleans up temporary structures within a PostGreSQL database, and can improve performance. We vacuum gently every hour and completely every day. The numbers and stars at the beginning are cron columns that specify when the program should be run - in this case, whenever the minute is 0 and the hour is 1, i.e., 1:00 am every day, and every (*) day of month, month, and day of week. Type man 5 crontab for more information.

        0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --analyze $OPENACS_SERVICE_NAME
         0 0 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze $OPENACS_SERVICE_NAME

        Depending on your distribution, you may receive email when the crontab items are executed. If you don't want to receive email for those crontab items, @@ -233,7 +233,7 @@ need to configure a virtual server. The Reference Platform uses a configuration file included in the OpenACS tarball, /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl. - Open it in an editor to adjust the parameters.

        [root root]# su - $OPENACS_SERVICE_NAME
        +	   Open it in an editor to adjust the parameters.

        [root root]# su - $OPENACS_SERVICE_NAME
         [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
         [$OPENACS_SERVICE_NAME etc]$ emacs config.tcl
         

        Index: openacs-4/packages/acs-core-docs/www/packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/packages.html,v diff -u -r1.31.2.5 -r1.31.2.6 --- openacs-4/packages/acs-core-docs/www/packages.html 1 Nov 2004 23:40:04 -0000 1.31.2.5 +++ openacs-4/packages/acs-core-docs/www/packages.html 8 Nov 2004 19:59:31 -0000 1.31.2.6 @@ -12,7 +12,7 @@

        Server file layout

        Here is how an OpenACS 5 server is laid out starting from the Server root (ROOT): -

        Figure�11.1.�Server file layout diagram

        +    

        Figure�11.1.�Server file layout diagram

         ROOT/
             bin/
                 Various executables and scripts for server maintanence.
        @@ -50,7 +50,7 @@
               
               To illustrate the general structure of a package, let's see what the
               package for the "notes" application should look like.
        -    

        Figure�11.2.�Package file layout diagram

        +    

        Figure�11.2.�Package file layout diagram

         ROOT/
           +-- packages/    APM Root
                 |
        @@ -123,7 +123,7 @@
               directories.  This makes it suitable for storing icons, css
               files, javascript, and other static content which can be treated
               this way.
        -    

        Table�11.1.�Package files

        File TypeIts UseNaming Convention
        Package Specification FileThe package specification file is an XML file generated and +

        Table�11.1.�Package files

        File TypeIts UseNaming Convention
        Package Specification FileThe package specification file is an XML file generated and maintained by the OpenACS Package Manager (APM). It specifies information about the package including its parameters and its files.notes.info
        Data Model Creation Script Index: openacs-4/packages/acs-core-docs/www/permissions-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-design.html,v diff -u -r1.21.2.2 -r1.21.2.3 --- openacs-4/packages/acs-core-docs/www/permissions-design.html 1 Nov 2004 23:40:06 -0000 1.21.2.2 +++ openacs-4/packages/acs-core-docs/www/permissions-design.html 8 Nov 2004 19:59:32 -0000 1.21.2.3 @@ -1,4 +1,4 @@ -Permissions Design

        Permissions Design

        By John Prevost and Rafael H. Schloming

        +Permissions Design

        Permissions Design

        By John Prevost and Rafael H. Schloming

        OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

        Essentials

        • Tcl in packages/acs-kernel

        • OpenACS 4 Permissions Requirements

        • Index: openacs-4/packages/acs-core-docs/www/permissions-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-requirements.html,v diff -u -r1.21.2.2 -r1.21.2.3 --- openacs-4/packages/acs-core-docs/www/permissions-requirements.html 1 Nov 2004 23:40:06 -0000 1.21.2.2 +++ openacs-4/packages/acs-core-docs/www/permissions-requirements.html 8 Nov 2004 19:59:32 -0000 1.21.2.3 @@ -1,4 +1,4 @@ -Permissions Requirements

          Permissions Requirements

          By John McClary Prevost

          +Permissions Requirements

          Permissions Requirements

          By John McClary Prevost

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

          Introduction

          This document records requirements for the OpenACS 4 Permissions system, a Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html,v diff -u -r1.25.2.5 -r1.25.2.6 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 1 Nov 2004 23:40:07 -0000 1.25.2.5 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 8 Nov 2004 19:59:32 -0000 1.25.2.6 @@ -100,7 +100,7 @@

          Context Hierarchy

          Suppose objects A, B, ..., and F form the following hierarchy. -

          Table�11.2.�Context Hierarchy Example

          +

          Table�11.2.�Context Hierarchy Example

          A

          object_id=10 @@ -134,7 +134,7 @@ This can be represented in the acs_objects table by the following entries: -

          Table�11.3.�acs_objects example data

          object_idcontext_id
          2010
          3010
          4020
          5020
          6030

          +

          Table�11.3.�acs_objects example data

          object_idcontext_id
          2010
          3010
          4020
          5020
          6030

          The first entry tells us that object 20 is the descendant of object 10, and the third entry shows that object 40 is the descendant of object 20. By running a CONNECT BY query, Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html,v diff -u -r1.22.2.5 -r1.22.2.6 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 1 Nov 2004 23:40:08 -0000 1.22.2.5 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 8 Nov 2004 19:59:33 -0000 1.22.2.6 @@ -1,4 +1,4 @@ -Add PSGML commands to emacs init file (OPTIONAL)

          Add PSGML commands to emacs init file (OPTIONAL)

          +Add PSGML commands to emacs init file (OPTIONAL)

          Add PSGML commands to emacs init file (OPTIONAL)

          If you plan to write or edit any documentation with emacs, install a customized emacs configuration file with DocBook commands in the skeleton directory, so it will be used for all new users. The file also Index: openacs-4/packages/acs-core-docs/www/psgml-mode.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-mode.html,v diff -u -r1.31.2.5 -r1.31.2.6 --- openacs-4/packages/acs-core-docs/www/psgml-mode.html 1 Nov 2004 23:40:09 -0000 1.31.2.5 +++ openacs-4/packages/acs-core-docs/www/psgml-mode.html 8 Nov 2004 19:59:34 -0000 1.31.2.6 @@ -1,4 +1,4 @@ -Using PSGML mode in Emacs

          Using PSGML mode in Emacs

          By David Lutterkort

          +Using PSGML mode in Emacs

          Using PSGML mode in Emacs

          By David Lutterkort

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

          Note: nxml mode replaces and/or complements psgml mode. More information.

          What it is

          PSGML Mode is a mode for editing, umm, SGML and XML documents in emacs. It Index: openacs-4/packages/acs-core-docs/www/release-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.html,v diff -u -r1.35.2.5 -r1.35.2.6 --- openacs-4/packages/acs-core-docs/www/release-notes.html 1 Nov 2004 23:40:09 -0000 1.35.2.5 +++ openacs-4/packages/acs-core-docs/www/release-notes.html 8 Nov 2004 19:59:34 -0000 1.35.2.6 @@ -109,7 +109,7 @@

        • Serving backup files and files from the CVS directories is turned off by default via the acs-kernel parameter ExcludedFiles in section request-processor (The variable provides a string match glob list of files and is defaulted to "*/CVS/* *~") -

        • ($Id$)

          Changelog

          2004-07-03 01:21  gabrielb
          +	

          ($Id$)

          Changelog

          2004-07-03 01:21  gabrielb
           
           	* www/blank-master.adp: Moved the textarea out of <head> and added
           	  required fields so it validates properly on validator.w3.org.
          Index: openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html
          ===================================================================
          RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html,v
          diff -u -r1.2.2.5 -r1.2.2.6
          --- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html	1 Nov 2004 23:40:10 -0000	1.2.2.5
          +++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html	8 Nov 2004 19:59:34 -0000	1.2.2.6
          @@ -1,4 +1,4 @@
          -OpenACS Core and .LRN

          OpenACS Core and .LRN

          1. Update Translations.�the section called “How to Update the translations”

          2. Update Version Numbers.�The version numbers in the documentation and in the packages must be updated. This should only happen after a release candidate is approved.

            .LRN: this must be repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq in openacs cvs tree). My current working model is that I bulk-update .LRN and OpenACS core but that I don't touch dotlrn-prereq modules - I just use the most recent release and it's up to individual package developers to tag and release those packages when they change. This model is already broken because following it means that dotlrn-prereqs don't get new translations.
            1. Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/variables.ent with the new version number. +OpenACS Core and .LRN

              OpenACS Core and .LRN

              1. Update Translations.�the section called “How to Update the translations”

              2. Update Version Numbers.�The version numbers in the documentation and in the packages must be updated. This should only happen after a release candidate is approved.

                .LRN: this must be repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq in openacs cvs tree). My current working model is that I bulk-update .LRN and OpenACS core but that I don't touch dotlrn-prereq modules - I just use the most recent release and it's up to individual package developers to tag and release those packages when they change. This model is already broken because following it means that dotlrn-prereqs don't get new translations.
                1. Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/variables.ent with the new version number.

                2. Add new section in /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml

                3. Regenerate all HTML docs

                  cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml
                   make
                4. Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/readme.txt with the new version number

                5. Update version number in all of the core packages. Here's a bash/perl script which works but could be made easier to use. Run it from /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages:

                  #!/bin/sh
                  @@ -21,7 +21,7 @@
                     perl -p -i -e 's/-5\.0\.0.apm"/-5\.1\.0d1.apm"/' $dir
                     perl -p -i -e 's/(provides.*version)="5\.0\.0"/\1="5\.1\.0d1"/' $dir
                   done
                6. Commit changes to CVS

              3. Rubuild the Changelog.�Rebuild the Changelog. I use a tool called cvs2cl. Run this command from the package root to automatically generate a Changelog file in the same dir:

                cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
                -perl /var/tmp/cvs2cl/cvs2cl.pl -F oacs-5-0 --delta openacs-5-0-0-final:oacs-5-0

                +perl /var/tmp/cvs2cl/cvs2cl.pl -F oacs-5-0 --delta openacs-5-0-0-final:oacs-5-0

          Commit changes

        • Tag the files in CVS.�The steps to this point should have ensured that the head of the current branch contains the full set of code to release. Now we need to tag it as the code to be released.

          1. Check out OpenACS Core. The files must be checked out through a cvs account with write access and should be a @@ -35,7 +35,7 @@

          2. Tag the tree. If it's a final release of core, move or create the appropriate openacs-major-minor-compat tag. (Ie, if releasing 5.0.3 final, move the openacs-5-0-compat flag.)

            cd /var/tmp/openacs-4
             cvs tag -F openacs-5-0-0a1
             cvs tag -F openacs-5-0-compat
            -

            Branching

            When we feature-freeze on HEAD as part of the release process, we are blocking new development. To avoid this, we branch the code at this point, so that new work can continue on HEAD while the branch is stabilized for release. However, branching means that bug fixes have to be synchronized between HEAD and the branch, and bug fixes tend to be more frequent right at this time. Therefore, our actual branch point is as late as possible - essentially, we do not branch until and unless new feature work is actively blocked by the feature freeze. Branching is almost the same as tagging, except for the flag and slightly different tag nomenclature. To see the list of old branches, cvs status -v somefile.

            cvs tag -b oacs-5-0

            If doing .LRN: Since the .LRN packages aren't all in one +

            Branching

            When we feature-freeze on HEAD as part of the release process, we are blocking new development. To avoid this, we branch the code at this point, so that new work can continue on HEAD while the branch is stabilized for release. However, branching means that bug fixes have to be synchronized between HEAD and the branch, and bug fixes tend to be more frequent right at this time. Therefore, our actual branch point is as late as possible - essentially, we do not branch until and unless new feature work is actively blocked by the feature freeze. Branching is almost the same as tagging, except for the flag and slightly different tag nomenclature. To see the list of old branches, cvs status -v somefile.

            cvs tag -b oacs-5-0

            If doing .LRN: Since the .LRN packages aren't all in one module, we iterate through all of the modules. Log in first (cvs login) so that you don't have to log in for each module.

            cd /var/tmp/dotlrn-packages
            @@ -44,7 +44,10 @@
             

            Note that for the compat tag we use the -F flag which will force the tag to the new version (just in case someone has created the tag already on another version). Excercise care when doing this since you don't want to inadvertently move a prior release tag. Also if the tagging goes horribly wrong - for some reason you can delete the tag via "cvs tag -d <symbolic_tag>".

        • Make the tarball(s).�

          • openacs-core.�

            1. Go to a new working space and export the tagged files.

              mkdir /var/tmp/tarball
              +          for some reason you can delete the tag via "cvs tag -d <symbolic_tag>".

            2. Apply the final tag across the tree. First, check out the entire OpenACS tree, getting the most recent stable version of each package. This is most simply done on openacs.org:

              cd /var/tmp
              +cvs -d /cvsroot checkout -r openacs-5-1-compat openacs-4
              +cd openacs-4
              +cvs tag openacs-5-1-2-final
          • Make the tarball(s).�

            • openacs-core.�

              1. Go to a new working space and export the tagged files.

                mkdir /var/tmp/tarball
                 cd /var/tmp/tarball
                 cvs -d /cvsroot export -r openacs-5-0-0a1 acs-core
              2. Generate the tarball.

                cd /var/tmp/tarball
                 mv openacs-4 openacs-5.0.0a1
                @@ -66,7 +69,8 @@
                 mv openacs-4 dotlrn-2.0.0a1
                 tar cz -f dotlrn-2.0.0a1.tar.gz dotlrn-2.0.0a1
                 
          • Test the new tarball(s).�Download the tarballs just created and install them and make sure everything looks okay and that automated tests pass.

          • Update Web site.�Update the different places on OpenACS.org where we track status.

            • Release Status for the current version - something like http://openacs.org/projects/openacs/5.0/milestones

            • Home page of openacs.org

            • Post a new news item

          • Clean Up.�Clean up after yourself.

            cd /var/tmp
            -rm -rf tarball dotlrn-tarball dotlrn-packages openacs-5.0.0a1

          +rm -rf tarball dotlrn-tarball dotlrn-packages openacs-5.0.0a1 +rm -rf /var/tmp/openacs-4

        • Here is a shell script that automates packaging the tarball (it's a bit out of date with the new steps - I've been doing everything manually or with little throwaway scripts as detailed above until the process is stabilized).

          #!/bin/bash
           
          @@ -149,4 +153,4 @@
           
           # Clean up after ourselves...
           cd $BASE && rm -rf dotlrn-tarball tarball openacs-4 dotlrn-packages
          -
          ($Id$)
          View comments on this page at openacs.org
          +
          ($Id$)
          View comments on this page at openacs.org
          Index: openacs-4/packages/acs-core-docs/www/releasing-openacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs.html,v diff -u -r1.16.2.2 -r1.16.2.3 --- openacs-4/packages/acs-core-docs/www/releasing-openacs.html 1 Nov 2004 23:40:10 -0000 1.16.2.2 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs.html 8 Nov 2004 19:59:34 -0000 1.16.2.3 @@ -1 +1 @@ -Chapter�16.�Releasing OpenACS
          View comments on this page at openacs.org
          +Chapter�17.�Releasing OpenACS
          View comments on this page at openacs.org
          Index: openacs-4/packages/acs-core-docs/www/releasing-package.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-package.html,v diff -u -r1.2.2.2 -r1.2.2.3 --- openacs-4/packages/acs-core-docs/www/releasing-package.html 1 Nov 2004 23:40:11 -0000 1.2.2.2 +++ openacs-4/packages/acs-core-docs/www/releasing-package.html 8 Nov 2004 19:59:34 -0000 1.2.2.3 @@ -1,4 +1,4 @@ -How to package and release an OpenACS Package

          How to package and release an OpenACS Package

          In this example, we are packaging and releasing myfirstpackage as version 1.0.0, which is compatible with OpenACS 5.0.x.

          1. Update the version number of your package in the APM.

          2. Make sure all changes are committed.

          3. Tag the updated work.:

            cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage
            +How to package and release an OpenACS Package

            How to package and release an OpenACS Package

            In this example, we are packaging and releasing myfirstpackage as version 1.0.0, which is compatible with OpenACS 5.0.x.

            1. Update the version number of your package in the APM.

            2. Make sure all changes are committed.

            3. Tag the updated work.:

              cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage
               cvs tag myfirstpackages-1-0-0-final
               cvs tag -F openacs-5-0-compat
               

            Done. The package will be added to the repository automatically. If the correct version does not show up within 24 hours, ask for help on the OpenACS.org development forum.

            View comments on this page at openacs.org
            Index: openacs-4/packages/acs-core-docs/www/requirements-template.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/requirements-template.html,v diff -u -r1.31.2.5 -r1.31.2.6 --- openacs-4/packages/acs-core-docs/www/requirements-template.html 1 Nov 2004 23:40:11 -0000 1.31.2.5 +++ openacs-4/packages/acs-core-docs/www/requirements-template.html 8 Nov 2004 19:59:35 -0000 1.31.2.6 @@ -1,4 +1,4 @@ -System/Application Requirements Template

            System/Application Requirements Template

            By You

            +System/Application Requirements Template

            System/Application Requirements Template

            By You

            OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

            Introduction

            @@ -80,4 +80,4 @@ pre-existing system or prototype first, and thus you may want to write some thoughts on implementation, for aiding and guiding yourself or other programmers. -

            Revision History

            Document Revision #Action Taken, NotesWhen?By Whom?
            0.3Edited further, incorporated feedback from Michael Yoon9/05/2000Kai Wu
            0.2Edited8/22/2000Kai Wu
            0.1Created8/21/2000Josh Finkler, Audrey McLoghlin
            ($Id$)
            View comments on this page at openacs.org
            +

            Revision History

            Document Revision #Action Taken, NotesWhen?By Whom?
            0.3Edited further, incorporated feedback from Michael Yoon9/05/2000Kai Wu
            0.2Edited8/22/2000Kai Wu
            0.1Created8/21/2000Josh Finkler, Audrey McLoghlin
            ($Id$)
            View comments on this page at openacs.org
            Index: openacs-4/packages/acs-core-docs/www/rp-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-design.html,v diff -u -r1.23.2.3 -r1.23.2.4 --- openacs-4/packages/acs-core-docs/www/rp-design.html 1 Nov 2004 23:40:11 -0000 1.23.2.3 +++ openacs-4/packages/acs-core-docs/www/rp-design.html 8 Nov 2004 19:59:35 -0000 1.23.2.4 @@ -1,4 +1,4 @@ -Request Processor Design

            Request Processor Design

            By Rafael H. Schloming

            +Request Processor Design

            Request Processor Design

            By Rafael H. Schloming

            OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

            Essentials

            • OpenACS 4 Request Processor Requirements

            • Index: openacs-4/packages/acs-core-docs/www/rp-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-requirements.html,v diff -u -r1.20.2.2 -r1.20.2.3 --- openacs-4/packages/acs-core-docs/www/rp-requirements.html 1 Nov 2004 23:40:12 -0000 1.20.2.2 +++ openacs-4/packages/acs-core-docs/www/rp-requirements.html 8 Nov 2004 19:59:35 -0000 1.20.2.3 @@ -1,4 +1,4 @@ -Request Processor Requirements

              Request Processor Requirements

              By Rafael H. Schloming

              +Request Processor Requirements

              Request Processor Requirements

              By Rafael H. Schloming

              OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

              Introduction

              The following is a requirements document for the OpenACS 4.0 request Index: openacs-4/packages/acs-core-docs/www/security-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-design.html,v diff -u -r1.22.2.2 -r1.22.2.3 --- openacs-4/packages/acs-core-docs/www/security-design.html 1 Nov 2004 23:40:12 -0000 1.22.2.2 +++ openacs-4/packages/acs-core-docs/www/security-design.html 8 Nov 2004 19:59:35 -0000 1.22.2.3 @@ -1,4 +1,4 @@ -Security Design

              Security Design

              By Richard Li and Archit Shah

              +Security Design

              Security Design

              By Richard Li and Archit Shah

              OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

              Introduction

              Index: openacs-4/packages/acs-core-docs/www/security-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-notes.html,v diff -u -r1.31.2.5 -r1.31.2.6 --- openacs-4/packages/acs-core-docs/www/security-notes.html 1 Nov 2004 23:40:12 -0000 1.31.2.5 +++ openacs-4/packages/acs-core-docs/www/security-notes.html 8 Nov 2004 19:59:36 -0000 1.31.2.6 @@ -1,4 +1,4 @@ -Security Notes

              Security Notes

              By Richard Li

              +Security Notes

              Security Notes

              By Richard Li

              OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

              Index: openacs-4/packages/acs-core-docs/www/security-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-requirements.html,v diff -u -r1.22.2.2 -r1.22.2.3 --- openacs-4/packages/acs-core-docs/www/security-requirements.html 1 Nov 2004 23:40:12 -0000 1.22.2.2 +++ openacs-4/packages/acs-core-docs/www/security-requirements.html 8 Nov 2004 19:59:36 -0000 1.22.2.3 @@ -1,4 +1,4 @@ -Security Requirements

              Security Requirements

              By Richard Li

              +Security Requirements

              Security Requirements

              By Richard Li

              OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

              Introduction

              Index: openacs-4/packages/acs-core-docs/www/style-guide.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/style-guide.html,v diff -u -r1.10.2.5 -r1.10.2.6 --- openacs-4/packages/acs-core-docs/www/style-guide.html 1 Nov 2004 23:40:12 -0000 1.10.2.5 +++ openacs-4/packages/acs-core-docs/www/style-guide.html 8 Nov 2004 19:59:36 -0000 1.10.2.6 @@ -1,6 +1,4 @@ -OpenACS Style Guide

              OpenACS Style Guide

              +OpenACS Style Guide

              OpenACS Style Guide

              By Jeff Davis

              Motivation

              Why have coding standards for OpenACS? And if the code works why change it to @@ -89,6 +87,4 @@

            • Solicit code reviews.� Ask others to look over your code and provide feedback and do the same for others. -

          Revision History

          Document Revision #Action Taken, NotesWhen?By Whom?
          0.1Creation12/2003Jeff Davis
          ($Id$)
          View comments on this page at openacs.org
          +

          Revision History

          Document Revision #Action Taken, NotesWhen?By Whom?
          0.1Creation12/2003Jeff Davis
          ($Id$)
          View comments on this page at openacs.org
          Index: openacs-4/packages/acs-core-docs/www/subsites-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-design.html,v diff -u -r1.22.2.2 -r1.22.2.3 --- openacs-4/packages/acs-core-docs/www/subsites-design.html 1 Nov 2004 23:40:12 -0000 1.22.2.2 +++ openacs-4/packages/acs-core-docs/www/subsites-design.html 8 Nov 2004 19:59:36 -0000 1.22.2.3 @@ -1,4 +1,4 @@ -Subsites Design Document

          Subsites Design Document

          By Rafael H. Schloming

          +Subsites Design Document

          Subsites Design Document

          By Rafael H. Schloming

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

          *Note* This document has not gone through the any of the Index: openacs-4/packages/acs-core-docs/www/subsites-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-requirements.html,v diff -u -r1.21.2.2 -r1.21.2.3 --- openacs-4/packages/acs-core-docs/www/subsites-requirements.html 1 Nov 2004 23:40:13 -0000 1.21.2.2 +++ openacs-4/packages/acs-core-docs/www/subsites-requirements.html 8 Nov 2004 19:59:36 -0000 1.21.2.3 @@ -1,4 +1,4 @@ -Subsites Requirements

          Subsites Requirements

          By Rafael H. Schloming and Dennis Gregorovic

          +Subsites Requirements

          Subsites Requirements

          By Rafael H. Schloming and Dennis Gregorovic

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

          Introduction

          The following is a requirements document for OpenACS 4 Subsites, part of the Index: openacs-4/packages/acs-core-docs/www/tcl-doc.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tcl-doc.html,v diff -u -r1.32.2.5 -r1.32.2.6 --- openacs-4/packages/acs-core-docs/www/tcl-doc.html 1 Nov 2004 23:40:14 -0000 1.32.2.5 +++ openacs-4/packages/acs-core-docs/www/tcl-doc.html 8 Nov 2004 19:59:36 -0000 1.32.2.6 @@ -1,4 +1,4 @@ -Documenting Tcl Files: Page Contracts and Libraries

          Documenting Tcl Files: Page Contracts and Libraries

          By Jon Salz on 3 July 2000

          +Documenting Tcl Files: Page Contracts and Libraries

          Documenting Tcl Files: Page Contracts and Libraries

          By Jon Salz on 3 July 2000

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
          • Tcl procedures: /packages/acs-kernel/tcl-documentation-procs.tcl

          The Big Picture

          In versions of the OpenACS prior to 3.4, the standard Index: openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html,v diff -u -r1.3.2.3 -r1.3.2.4 --- openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html 1 Nov 2004 23:40:16 -0000 1.3.2.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html 8 Nov 2004 19:59:37 -0000 1.3.2.4 @@ -1,4 +1,4 @@ -Laying out a page with CSS instead of tables

          Laying out a page with CSS instead of tables

          .LRN home page with table-based layout

          A sample of the HTML code (full source)

          <table border="0" width="100%">
          +Laying out a page with CSS instead of tables

          Laying out a page with CSS instead of tables

          .LRN home page with table-based layout

          A sample of the HTML code (full source)

          <table border="0" width="100%">
             <tr>
               <td valign="top" width="50%">
                 <table class="element" border=0 cellpadding="0" cellspacing="0" width="100%">
          @@ -20,7 +20,7 @@
                             <table border="0" bgcolor="white" cellpadding="0" cellspacing="0" width="100%">
                               <tr>
                                 <td class=element-text>
          -                        MBA 101

          .LRN Home with CSS-based layout

          A sample of the HTML code (full source)

          <div class="left">
          +                        MBA 101

          .LRN Home with CSS-based layout

          A sample of the HTML code (full source)

          <div class="left">
             <div class="portlet-wrap-shadow">
               <div class="portlet-wrap-bl">
                 <div class="portlet-wrap-tr">
          Index: openacs-4/packages/acs-core-docs/www/tutorial-cvs.html
          ===================================================================
          RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-cvs.html,v
          diff -u -r1.6.2.5 -r1.6.2.6
          --- openacs-4/packages/acs-core-docs/www/tutorial-cvs.html	1 Nov 2004 23:40:16 -0000	1.6.2.5
          +++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.html	8 Nov 2004 19:59:37 -0000	1.6.2.6
          @@ -58,4 +58,4 @@
           initial revision: 1.1
           done
           (many lines omitted)
          -[$OPENACS_SERVICE_NAME myfirstpackage]$

          Figure�10.1.�Upgrading a local CVS repository

          Upgrading a local CVS repository
          View comments on this page at openacs.org
          +[$OPENACS_SERVICE_NAME myfirstpackage]$

          Figure�10.1.�Upgrading a local CVS repository

          Upgrading a local CVS repository
          View comments on this page at openacs.org
          Index: openacs-4/packages/acs-core-docs/www/tutorial-database.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-database.html,v diff -u -r1.23.2.5 -r1.23.2.6 --- openacs-4/packages/acs-core-docs/www/tutorial-database.html 1 Nov 2004 23:40:16 -0000 1.23.2.5 +++ openacs-4/packages/acs-core-docs/www/tutorial-database.html 8 Nov 2004 19:59:37 -0000 1.23.2.6 @@ -1,7 +1,7 @@ Setting Up Database Objects

          Setting Up Database Objects

          by Joel Aufrecht

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          Code the data model

          We create all database objects with scripts in the +

          Code the data model

          We create all database objects with scripts in the myfirstpackage/sql/ directory. All database scripts are database-specific and are thus in either the myfirstpackage/sql/oracle or @@ -31,13 +31,13 @@ repository functions to simplify our database creation. (More information about ACS Objects. More information about the Content Repository.) -

          Figure�9.2.�Tutorial Data Model

          Tutorial Data Model

          The top of each sql file has some +

          Figure�9.2.�Tutorial Data Model

          Tutorial Data Model

          The top of each sql file has some standard comments, including doc tags such as @author which will be picked up by the API browser. The string $Id$ will automatically be expanded when the file is checked in to cvs.

          [$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/sql/postgresql
          -[$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-create.sql

          Paste the text below into the file, save, and close.

          Figure�9.3.�The Database Creation Script

          -- creation script
          +[$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-create.sql

          Paste the text below into the file, save, and close.

          Figure�9.3.�The Database Creation Script

          -- creation script
           --
           -- @author joel@aufrecht.org
           -- @cvs-id &Id:$
          @@ -61,7 +61,7 @@
               object.  Notice the use of "mfp."  This is derived from "My
               First Package" and ensures that our object is unlikely to conflict
               with objects from other packages.

          Create a database file to drop everything if the package is uninstalled.

          -[$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-drop.sql

          Figure�9.4.�Database Deletion Script

          -- drop script
          +[$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-drop.sql

          Figure�9.4.�Database Deletion Script

          -- drop script
           --
           -- @author joel@aufrecht.org
           -- @cvs-id &Id:$
          Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.html
          ===================================================================
          RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.html,v
          diff -u -r1.23.2.5 -r1.23.2.6
          --- openacs-4/packages/acs-core-docs/www/tutorial-debug.html	1 Nov 2004 23:40:16 -0000	1.23.2.5
          +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html	8 Nov 2004 19:59:37 -0000	1.23.2.6
          @@ -1,7 +1,7 @@
           Debugging and Automated Testing

          Debugging and Automated Testing

          by Joel Aufrecht

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          Debugging

          Developer Support.�The Developer Support package adds several goodies: debug +

          Debugging

          Developer Support.�The Developer Support package adds several goodies: debug information for every page; the ability to log comments to the page instead of the error log, and fast user switching so that you can test pages as anonymous and as dummy users without logging @@ -22,16 +22,16 @@ ?�searches�backward�
          /�searches�forward.�
          ����������

          -

          Manual testing

          Make a list of basic tests to make sure it works

          Test NumActionExpected Result
          001Browse to the index page while not logged in and +

          Manual testing

          Make a list of basic tests to make sure it works

          Test NumActionExpected Result
          001Browse to the index page while not logged in and while one or more notes exist.No edit or delete or add links should appear.
          002Browse to the index page while logged in. An Edit link should appear. Click on it. Fill out the form and click Submit.The text added in the form should be visible on the index page.
          API-001Invoke mfp::note::create with a specific word as the title.Proc should return an object id.
          API-002Given an object id from API-001, invoke mfp::note::get.Proc should return the specific word in the title.
          API-003Given the object id from API-001, invoke mfp::note::delete.Proc should return 0 for success.

          Other things to test: try to delete someone else's note. Try to delete your own note. Edit your own note. - Search for a note.

          Write automated tests

          by Simon Carstensen and Joel Aufrecht

          + Search for a note.

          Write automated tests

          by Simon Carstensen and Joel Aufrecht

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          +

          It seems to me that a lot of people have been asking for some guidelines on how to write automated tests. I've done several tests by now and have found the process to be extremely easy and useful. It's a joy to work with automated testing once you get the hang of it.

          Create the directory that will contain the test script and edit the script file. The directory location and file name are standards which are recognized by the automated testing package:

          [$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
           [$OPENACS_SERVICE_NAME www]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
          @@ -67,7 +67,7 @@
           goes inside -test_code {}.  We want to implement test case API-001, "Given an object id from API-001, invoke mfp::note::get.  Proc should return the specific word in the title."

                 set name [ad_generate_random_string]
                 set new_id [mfp::note::add -title $name]
          -      aa_true "Note add succeeded" [exists_and_not_null new_id]

          To test our simple case, we must load the test file into the system (just as with the /tcl file in the basic tutorial, since the file didn't exist when the system started, the system doesn't know about it.) To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage". Since we'll be changing it frequently, select "watch this file" on the next page. This will cause the system to check this file every time any page is requested, which is bad for production systems but convenient for developing. We can also add some aa_register_case flags to make it easier to run the test. The -procs flag, which indicates which procs are tested by this test case, makes it easier to find procs in your package that aren't tested at all. The -cats flag, setting categories, makes it easier to control which tests to run. The smoke test setting means that this is a basic test case that can and should be run any time you are doing any test. (a definition of "smoke test")

          Once the file is loaded, go to ACS Automated Testing and click on myfirstpackage. You should see your test case. Run it and examine the results.

          TCLWebtest tests

          API testing can only test part of our package - it doesn't test the code in our adp/tcl pairs. For this, we can use TCLwebtest. TCLwebtest must be installed for this test to work. This provides a library of functions that make it easy to call a page through HTTP, examine the results, and drive forms. TCLwebtest's functions overlap slightly with acs-automated-testing; see the example provided for one approach on integrating them.

          Example

          Now we can add the rest of the API tests, including a test with deliberately bad data. The complete test looks like:

          ad_library {
          +      aa_true "Note add succeeded" [exists_and_not_null new_id]

          To test our simple case, we must load the test file into the system (just as with the /tcl file in the basic tutorial, since the file didn't exist when the system started, the system doesn't know about it.) To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage". Since we'll be changing it frequently, select "watch this file" on the next page. This will cause the system to check this file every time any page is requested, which is bad for production systems but convenient for developing. We can also add some aa_register_case flags to make it easier to run the test. The -procs flag, which indicates which procs are tested by this test case, makes it easier to find procs in your package that aren't tested at all. The -cats flag, setting categories, makes it easier to control which tests to run. The smoke test setting means that this is a basic test case that can and should be run any time you are doing any test. (a definition of "smoke test")

          Once the file is loaded, go to ACS Automated Testing and click on myfirstpackage. You should see your test case. Run it and examine the results.

          TCLWebtest tests

          API testing can only test part of our package - it doesn't test the code in our adp/tcl pairs. For this, we can use TCLwebtest. TCLwebtest must be installed for this test to work. This provides a library of functions that make it easy to call a page through HTTP, examine the results, and drive forms. TCLwebtest's functions overlap slightly with acs-automated-testing; see the example provided for one approach on integrating them.

          Example

          Now we can add the rest of the API tests, including a test with deliberately bad data. The complete test looks like:

          ad_library {
               Test cases for my first package.
           }
           
          Index: openacs-4/packages/acs-core-docs/www/tutorial-distribute.html
          ===================================================================
          RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-distribute.html,v
          diff -u -r1.6.2.5 -r1.6.2.6
          --- openacs-4/packages/acs-core-docs/www/tutorial-distribute.html	1 Nov 2004 23:40:17 -0000	1.6.2.5
          +++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.html	8 Nov 2004 19:59:37 -0000	1.6.2.6
          @@ -6,5 +6,5 @@
                   (37.1KB)
                   after the label Distribution
                   File: and save the file to
          -        /tmp.

          + /tmp.

          View comments on this page at openacs.org
          Index: openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html,v diff -u -r1.24.2.5 -r1.24.2.6 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 1 Nov 2004 23:40:17 -0000 1.24.2.5 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 8 Nov 2004 19:59:37 -0000 1.24.2.6 @@ -1,7 +1,7 @@ Creating an Application Package

          Creating an Application Package

          by Joel Aufrecht

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          The intended page map

          Overview

          To start developing new code in OpenACS, we build a new package. A package +

          The intended page map

          Overview

          To start developing new code in OpenACS, we build a new package. A package is a a discrete collection of web pages, tcl code, and database tables and procedures. A package with user interface is called an application; a package which provides functions to other packages and has no direct interface, a @@ -17,11 +17,11 @@ right now. Code that is temporary hackage is clearly marked.

          In this tutorial, we will make an application package for displaying a list of text notes. -

          Before you begin

          You will need:

          • A computer with a working installation of +

          Before you begin

          You will need:

          • A computer with a working installation of OpenACS. If you don't have this, see Chapter�2, Installation Overview.

          • Example files, which are included in the standard OpenACS 5.1.2 distribution. -

          Figure�9.1.�Assumptions in this section

          Fully qualified domain name of your serveryourserver.test
          URL of your serverhttp://yourserver.test:8000
          Name of development account$OPENACS_SERVICE_NAME
          New Package keymyfirstpackage

          Use the APM to initialize a new package

          We use the ACS Package Manager (APM) to add, remove, and +

          Figure�9.1.�Assumptions in this section

          Fully qualified domain name of your serveryourserver.test
          URL of your serverhttp://yourserver.test:8000
          Name of development account$OPENACS_SERVICE_NAME
          New Package keymyfirstpackage

          Use the APM to initialize a new package

          We use the ACS Package Manager (APM) to add, remove, and upgrade packages. It handles package meta-data, such as lists of files that belong in the package. Each package is uniquely identified by a package key. To start developing a new @@ -53,7 +53,7 @@

          This creates a package rooted at /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage. This is the "home directory" of our new package, and all - files in the package will be within this directory.

          Add an Application Instance to the Server

          In order to see your work in progress, you must create a + files in the package will be within this directory.

          Add an Application Instance to the Server

          In order to see your work in progress, you must create a map between the URL space of incoming requests and the package application instance. You do this by adding the application in the main site administration). This creates a link between the incoming URL requests and an @@ -64,7 +64,7 @@ in this tutorial.

          1. Browse to http://yourserver.test:8000/admin/applications/application-add/.

          2. Choose "My First Package" from the list and click OK (the other fields are optional).

          By mounting the package, we've caused all requests to http://yourserver.test:8000/my-first-package - to be satisfied from the files at /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www.

          Quick start

          The remainder of the tutorial walks you through each file one at a time as you create the package. You can skip all this, and get a working package, by doing the following:

          cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial
          +      to be satisfied from the files at /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www.

          Quick start

          The remainder of the tutorial walks you through each file one at a time as you create the package. You can skip all this, and get a working package, by doing the following:

          cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial
           psql $OPENACS_SERVICE_NAME -f myfirstpackage-create.sql
           cp note-edit.* note-delete.tcl index.* ../../../../myfirstpackage/www/
           mkdir ../../../../myfirstpackage/lib
          Index: openacs-4/packages/acs-core-docs/www/tutorial-pages.html
          ===================================================================
          RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.html,v
          diff -u -r1.23.2.5 -r1.23.2.6
          --- openacs-4/packages/acs-core-docs/www/tutorial-pages.html	1 Nov 2004 23:40:17 -0000	1.23.2.5
          +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html	8 Nov 2004 19:59:37 -0000	1.23.2.6
          @@ -1,8 +1,8 @@
           Creating Web Pages

          Creating Web Pages

          by Joel Aufrecht

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          Install some API

          As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:

          -    cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/

          To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".

          Page Map

          Our package will have two visible pages. The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object. The index page will display the list, but since we might reuse the list later, we'll put it in a seperate file and include it on the index page.

          Figure�9.5.�Page Map

          Page Map

          Build the "Index" page

          Each user-visible page in your package has, typically, +

          Install some API

          As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:

          +    cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/

          To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".

          Page Map

          Our package will have two visible pages. The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object. The index page will display the list, but since we might reuse the list later, we'll put it in a seperate file and include it on the index page.

          Figure�9.5.�Page Map

          Page Map

          Build the "Index" page

          Each user-visible page in your package has, typically, three parts. The tcl file holds the procedural logic for the page, including TCL and database-independent SQL code, and does things like Index: openacs-4/packages/acs-core-docs/www/update-repository.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-repository.html,v diff -u -r1.5.2.3 -r1.5.2.4 --- openacs-4/packages/acs-core-docs/www/update-repository.html 1 Nov 2004 23:40:18 -0000 1.5.2.3 +++ openacs-4/packages/acs-core-docs/www/update-repository.html 8 Nov 2004 19:59:37 -0000 1.5.2.4 @@ -1,4 +1,4 @@ -How to Update the OpenACS.org repository

          How to Update the OpenACS.org repository

          1. +How to Update the OpenACS.org repository

            How to Update the OpenACS.org repository

            1. Setup a local OpenACS server running 5.0 or better.

            2. Edit packages/acs-admin/www/apm/build-repository.tcl and adjust the Configuration Settings.

            3. Index: openacs-4/packages/acs-core-docs/www/update-translations.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-translations.html,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-core-docs/www/update-translations.html 1 Nov 2004 23:40:18 -0000 1.4.2.3 +++ openacs-4/packages/acs-core-docs/www/update-translations.html 8 Nov 2004 19:59:37 -0000 1.4.2.4 @@ -1,4 +1,4 @@ -How to Update the translations

              How to Update the translations

              1. Identify any new locales that have been created. +How to Update the translations

                How to Update the translations

                1. Identify any new locales that have been created. For each new locale, check the parameters, especially that the locale is in the format [two-letter code for language, lower-case]_[TWO-LETTER CODE FOR COUNTRY, Index: openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html,v diff -u -r1.8.2.5 -r1.8.2.6 --- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html 1 Nov 2004 23:40:18 -0000 1.8.2.5 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html 8 Nov 2004 19:59:37 -0000 1.8.2.6 @@ -1,4 +1,4 @@ -Upgrading 4.5 or higher to 4.6.3

                  Upgrading 4.5 or higher to 4.6.3

                  The required platform for OpenACS 4.6 is the same as +Upgrading 4.5 or higher to 4.6.3

                  Upgrading 4.5 or higher to 4.6.3

                  The required platform for OpenACS 4.6 is the same as 4.5, with the exception of OpenFTS. OpenACS 4.6 and later require OpenFTS 0.3.2 for full text search on PostGreSQL. If you have OpenFTS 0.2, you'll need to upgrade.

                  If upgrading from 4.2, you need to manually run acs-kernel/sql/postgres/upgrade-4.2-4.5.sql. See Bug #632

                  1. Make a Backup.�Back up the database and file system (see the section called “Manual backup and recovery”).

                  2. OPTIONAL: Upgrade OpenFTS.�the section called “Upgrading OpenFTS from 0.2 to 0.3.2”

                  3. Stop the server

                    [root root]# svc -d /service/$OPENACS_SERVICE_NAME
                  4. Upgrade the file system.�the section called “Upgrading the OpenACS files”

                  5. Index: openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html,v diff -u -r1.8.2.5 -r1.8.2.6 --- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html 1 Nov 2004 23:40:18 -0000 1.8.2.5 +++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html 8 Nov 2004 19:59:37 -0000 1.8.2.6 @@ -10,7 +10,7 @@ cp -r openacs-5-1/* openacs-4 exit

        • Upgrading files for a site in a private CVS repository -

          Figure�5.2.�Upgrading a local CVS repository

          Upgrading a local CVS repository
          • Step 1: Import new CVS code.�There are two common ways to get new OpenACS code into your local CVS repository - via tarball or with a working CVS checkout of OpenACS. Both methods work well for starting your local repository; the second method is better for incremental additions or upgrades.

            • (a): via tarball.�Download a current tarball and unpack the new files into a working directory.

              [root root]# su - $OPENACS_SERVICE_NAME
              +        

              Figure�5.2.�Upgrading a local CVS repository

              Upgrading a local CVS repository
              • Step 1: Import new CVS code.�There are two common ways to get new OpenACS code into your local CVS repository - via tarball or with a working CVS checkout of OpenACS. Both methods work well for starting your local repository; the second method is better for incremental additions or upgrades.

                • (a): via tarball.�Download a current tarball and unpack the new files into a working directory.

                  [root root]# su - $OPENACS_SERVICE_NAME
                   [$OPENACS_SERVICE_NAME aolserver]$ cd /tmp
                   [$OPENACS_SERVICE_NAME tmp]$ tar xzf openacs-5-1.tar.gz
                   [$OPENACS_SERVICE_NAME tmp]$ cd openacs-5-1
                • (b): via cvs working checkout.�Create a CVS checkout from OpenACS. The first time you do this, you will need to create the checkout directory. We use one dedicated directory for each branch of OpenACS - if you are using OpenACS 5.0,x, you only need an OpenACS 5.0 branch. The openacs-5-1-compat tag identifies the latest released version of OpenACS 5.1 (ie, 5.1.3 or 5.1.4) and the latest compatible version of each package, including .LRN. Each minor release of OpenACS since 5.0 has this tagging structure. For example, OpenACS 5.1.x has openacs-5-1-compat. @@ -44,7 +44,7 @@

                  1. [$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
                     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs up -Pd
                     (CVS feedback)
                    -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$

                  Upgrading a Production Site Safely

                  If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:

                  1. Declare a freeze on new cvs updates - ie, you cannot run cvs update +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$

            Upgrading a Production Site Safely

            If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:

            1. Declare a freeze on new cvs updates - ie, you cannot run cvs update on the production site

            2. Make a manual backup of the production site in addition to the automated backups

            3. Import the new code (for example, OpenACS 5.0.4, openacs-5-0-compat versions of Index: openacs-4/packages/acs-core-docs/www/upgrade-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-overview.html,v diff -u -r1.8.2.5 -r1.8.2.6 --- openacs-4/packages/acs-core-docs/www/upgrade-overview.html 1 Nov 2004 23:40:18 -0000 1.8.2.5 +++ openacs-4/packages/acs-core-docs/www/upgrade-overview.html 8 Nov 2004 19:59:37 -0000 1.8.2.6 @@ -3,4 +3,4 @@ or better, you should always be able to upgrade all of your core packages automatically. If you haven't changed anything, no manual intervention should be required. If you are running - OpenACS prior to 4.5, upgrading will require manual effort.

              If all of these conditions are true:

              • Your OpenACS Core is 5.0.0 or later

              • You do not keep your OpenACS site in a local CVS repository

              • You do not have any custom code

              then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter. To upgrade directly from the OpenACS repository using the APM:

              1. Browse to the Installer.

              2. Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.

              3. The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.

              Figure�5.1.�Upgrading with the APM

              Upgrading with the APM

              It's always a good idea to precede an upgrade attempt with a snapshot backup.

              Table�5.1.�Assumptions in this section

              name of OpenACS user$OPENACS_SERVICE_NAME
              OpenACS server name$OPENACS_SERVICE_NAME
              Root of OpenACS file tree/var/lib/aolserver/$OPENACS_SERVICE_NAME
              Database backup directory/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup
            View comments on this page at openacs.org
            + OpenACS prior to 4.5, upgrading will require manual effort.

            If all of these conditions are true:

            • Your OpenACS Core is 5.0.0 or later

            • You do not keep your OpenACS site in a local CVS repository

            • You do not have any custom code

            then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter. To upgrade directly from the OpenACS repository using the APM:

            1. Browse to the Installer.

            2. Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.

            3. The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.

            Figure�5.1.�Upgrading with the APM

            Upgrading with the APM

            It's always a good idea to precede an upgrade attempt with a snapshot backup.

            Table�5.1.�Assumptions in this section

            name of OpenACS user$OPENACS_SERVICE_NAME
            OpenACS server name$OPENACS_SERVICE_NAME
            Root of OpenACS file tree/var/lib/aolserver/$OPENACS_SERVICE_NAME
            Database backup directory/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup
            View comments on this page at openacs.org
            Index: openacs-4/packages/acs-core-docs/www/using-cvs-with-openacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/using-cvs-with-openacs.html,v diff -u -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/acs-core-docs/www/using-cvs-with-openacs.html 3 Nov 2004 16:37:48 -0000 1.1.2.1 +++ openacs-4/packages/acs-core-docs/www/using-cvs-with-openacs.html 8 Nov 2004 19:59:37 -0000 1.1.2.2 @@ -4,7 +4,7 @@ CVS Guidelines ">

            Using CVS with OpenACS

            Getting Started

            +

        • Next

          Using CVS with OpenACS

          Getting Started

          All OpenACS code is available anonymously. To get code anonymously, use the parameter -d:pserver:anonymous@openacs.org:/cvsroot immediately after cvs in a cvs command to check out or export code. @@ -40,47 +40,47 @@ You may want to set some more default actions for CVS usage. To do so, create the file ~/.cvsrc with the contents: -

          cvs -z6
          -cvs -q

          -z6 speeds up cvs access over the network quite a bit by enabling compressed - connection by default. -q suppresses some verbose output from commands. For example, it makes the output of cvs up much easier to read.

          Checkout for Package Development

          If you are actively developing a non-core package, you + User yournamehere

          into your ~/.ssh/config file, then you can use -d :ext:cvs-server:/cvsroot instead of -d :ext:openacs.org:/cvsroot. You can then change the definition of cvs-server by changing one file instead of editing hundreds of CVSROOT/Repository files.

          Checkout for Package Development

          If you are actively developing a non-core package, you should work from the latest core release branch. Currently this is oacs-5-1. This ensures that you are working on top of a stable OpenACS core, but still allows you to commit feature - changes to non-core packages. To check out all packages,

          cvs -d :ext:openacs.org:/cvsroot co -r oacs-5-1 openacs-4

          If you work in the directories created with this command, all of your + changes to non-core packages. To check out all packages,

          cvs -d :ext:openacs.org:/cvsroot co -r oacs-5-1 openacs-4

          If you work in the directories created with this command, all of your cvs updates and commits will be confined to the oacs-5-1 branch. Your work will be merged back to HEAD for you with each release.

          Because the entire openacs-4 directory is large, you may want to use only acs-core plus some specific modules. To do - this, check out core first:

          cvs -d:ext:openacs.org:/cvsroot -r oacs-5-1 checkout acs-core

          Then add modules as needed:

          cd /var/lib/aolserver/service0/packages
          -cvs up -d packagename

          ... where packagename is the name of the + this, check out core first:

          cvs -d:ext:openacs.org:/cvsroot -r oacs-5-1 checkout acs-core

          Then add modules as needed:

          cd /var/lib/aolserver/service0/packages
          +cvs up -d packagename

          ... where packagename is the name of the package you want. Visit the Package Inventory for a list of available packages and their current state. -

          Checkout for Core Development

          If you are actively developing packages in the OpenACS +

          Checkout for Core Development

          If you are actively developing packages in the OpenACS Core, work from the HEAD branch. HEAD is used for active development of the next version of core OpenACS. It may be very buggy; it may not even install correctly. Do not use this branch for development of non-core features unless your work depends on some of the HEAD core work. To check out HEAD, omit the - -r tag.

          To check out HEAD for development, which requires an OpenACS developer account:

          cvs -d:ext:openacs.org:/cvsroot checkout acs-core

          To check out HEAD anonymously:

          cvs -d:pserver:anonymous@openacs.org:/cvsroot checkout acs-core

          Checkout .LRN

          + -r tag.

          To check out HEAD for development, which requires an OpenACS developer account:

          cvs -d:ext:openacs.org:/cvsroot checkout acs-core

          To check out HEAD anonymously:

          cvs -d:pserver:anonymous@openacs.org:/cvsroot checkout acs-core

          Checkout .LRN

          .LRN consists of a given version openacs core, plus a set of packages. These are collectively packages together to form a distrubution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0. .LRN also uses an OpenACS install.xml file during installation; this file is distributed within the dotlrn package and must be moved. To get a development checkout of .LRN in the subdirectory dotlrn: -

          cvs -d :pserver:anonymous@openacs.org:/cvsroot checkout -r oacs-5-1 acs-core
          +      

          cvs -d :pserver:anonymous@openacs.org:/cvsroot checkout -r oacs-5-1 acs-core
           mv openacs-4 dotlrn
           cd dotlrn/packages
           cvs -d :pserver:anonymous@openacs.org:/cvsroot checkout -r oacs-5-1 dotlrn-all
          -mv dotlrn/install.xml ..

          Working with CVS

          +mv dotlrn/install.xml ..

          Working with CVS

          Once you have a checkout you can use some commands to track what has changed since you checked out your copy. cvs -n update does not change any files, but reports which changes have been updated or locally modified, or are not present in CVS.

          To update your files, use cvs update. This will merge changes from the repository with your local files. It has no effect on the openacs.org repository.