View · Search · Index

Weblog

Showing 1 - 10 of 665 Postings (summary)

OpenACS TODO List

Created by Dave Bauer, last modified by Gustaf Neumann 04 Apr 2019, at 02:50 PM

Release Status

See openacs-release-status

Development is taking place in the oacs-5-10 branch.

OpenACS Version 5.10.0 Agenda/wish list

  • postponed for later releases:
    • implement subsite-singleton (in addition to the classical singleton)
    • say farewell to CVS
       
  • Functional improvements
    • additional page_contract filter: oneof(red|green|blue)
       
    • add text/markdown to the accepted text formats or rich-text widget
       
    • new API call  category::get obtain as well category description for a category_id and locale
       
    • visualize code dependencies and test-coverage in API browser
       
    • new feature to warn site administrators about expiring certificates
       
    • dynamic reloading reform:
      • When reloading  apm packages, watched files, etc. the NaviServer blueprint is now updated correctly. This solves the long-standing problem that changes for scheduled procedures required a restart of the server. Furthermore the old-style reloading was based on a ever-growing list of reload operations each time a new reload was requested, causing slow-downs in long running server instances, especially, when new threads are started.
      • Now changes are applied to all NaviServer threads, including threads for
        schedules procedures, ns_jobs and the like. Note that the current job has to be finished before the changes can be applied.
      • For the transition, it is possible to switch between the classical reloading style and blueprint reloading by changing a variable in acs-tcl/tcl/apm-procs.tcl
         
    • new packages:
      • cookie-consent: alerting users about the use of cookies on a website
      • boomerang: performance of your website from your end user’s point of view
         
    • Forums reform:
      • remove hard-coded dependency with registered_users group when checking forum permissions
      • don't rely so heavily on acs_permissions to model forum configuration, as this can have unexpected consequences in convoluted multi-group/multi-subsite scenarios. Prefer simpler table attributes instead
         
    • Registry for .js and .css libraries: allow besides classical URLs symbolic names for loading external resources (e.g. jquery), this makes it easier to upgrade  libraries in multiple packages (without running into problems with duplicate versions) and supports  switching between CDN and local pathsURN.
      The existing implementation is based on URNs and extends the existing template-head API to
      support registration for URNs. A URN provides an abstraction and a single place for e.g updating references to external resources when switching between a CDN and a locally stored resource, or when a resource should be updated. Instead of adding e.g. a CDN URL via template::head::add_script, one can add an URN and control its content from a single place. Use common namespaces for OpenACS such as urn:ad:css:* and urn:ad:js:*.
      • Register URNs:

        Example provider (e.g. in some theme):
           template::register_urn \ 
               -urn urn:ad:js:jquery \ 
               -resource /resources/xowiki/jquery/jquery.min.js
        
      • The registered URN can be used like classical URL after registration.
        Example consumer:

           template::head::add_javascript -src urn:ad:js:jquery
      • Declare composite files: Provide an interface to define that  a .js file or a .css file contains multiple other .js/.css files in order to reduce the number of requests.
           template::head::includes -container urn:js::style.js -parts {urn:ad:js:jquery ...}
  • non-functional changes
    • Improved regression testing
      • Goal is that all packages in oacs-5-10 pass regression test
      • Include web testing in standard regression testing
         
    • Improved scalability:
      • Data bloat hygiene:
        • rethink package parameter and portlet parameter data models
        • parameters: include "subsite-parameters" in parameter resolution (package->subsite->global)
      • provide lock-free implementation of ad_page_contract_filters and ad_page_contract_filter_rules. This change improves parallel processing of requests and is primarily interesting for sites with a few mio page views per days. These locks were among the most frequent nsv locks

      • Reduced locks on util_memoize_cache my more invariants values into per-thread caching (acs_lookup_magic_object, ad_acs_version, .... ) and by avoiding specialized calls, which can be realized by already optimized ones ("apm_package_installed_p_not_cached ref-timezones" was most frequently used util_memoize_cache entry). These changes are necessary to avoid full still-stand on the unfortunate long-time locks on util_memoize_cache stemming from permission and user management with wild-card flush operations, which require to iterate over all cache entries (which might be a server hundred thousands)

      • Added new interface for cache partitioning to reduce lock latencies on high load websites

    • Code smell reduction: fix typos, white-space etc.
       
    • Security improvements:
      • strengthen page contracts
      • CSP fine tuning
         
    • Better exception handling based on Tcl 8.6 exception handlers ("try" and "throw", also available in Tcl 8.5)
      • a new "ad_try" implementation based on Tcl's "try" replaces now the old "ad_try", "with_catch" and "with_finally", which are marked as deprecated
      • the new "ad_try" is in essence Tcl's "try" but with predefined handling of "ad_script_abort" and should be also used instead of "catch", when the OpenACS API is used (which might use script aborts)
      • all core packages use the new "ad_try" instead of the deprecated versions
         
    • Connection close reform:
      • NaviServer/AOLserver continue after connection closing commands to execute a script. This is in many situation not desired, especially, when for the page as well a .adp file exists, which will try to deliver this on the already closed connection. This can lead to errors in the error.log file, which are sometimes hard to analyze
      • therefore, developers should use in most such cases cases "ad_script_abort"
      • connection closing commands are e.g. ad_returnredirect, ad_redirect_for_registration, cr_write_content, ad_page_contract_handle_datasource_error, ad_return_string_as_file, ad_return_complaint,  ad_return_error,
        ad_return_forbidden, ad_return_warning, ad_return_exception_page, ns_returnredirect, ns_return, ns_returnerror
      • The new version has made on most occasions explicit, when the script should abort.
         
    • SQL cleanup:
      • cleanup of obsolete non-portable SQL constructs in a way Oracle and PostgreSQL code base divergency is reduced:
        • "nvl" -> "coalesce"
        • "sysdate" / "now()" -> standard "current_date" or "current_timestamp"
        • use standard-compliant "dual" table where appropriate (required by Oracle, supported by Postgres)
        • use non-dialectal cast idioms when appropriate
        • ... (reference Oracle version will be 11.2 as is oldest version officially supported by Oracle)
      • reduce superfluous .xql queries
        • acs-subsite: delete 21 files with un-referenced .xql queries
        • acs-tcl: delete 4 files
        • news: 3 files
        • file-storage: 1 file
        • dotlrn: 9 files
           
    • Deprecated commands:
      • move deprecated code into separate files
      • make loading of deprecated code optional (can be controlled via parameter  "WithDeprecatedCode" in section "ns_section ns/server/${server}/acs" of the config file. By default, deprecated procs are still loaded
      • When deprecated code is not loaded, the blueprint of the interpreter is smaller. The following number of lines of code can be omitted when loading without the deprecated procs:
        • acs-tcl: 3178
        • acs-templating: 450
        • xotcl-core http-client-procs: 830
        • acs-content-repository: 1717 (including .xql files)
           
    • Improves handling of server implementation-specific code
      • provide *-procs-aolserver.tcl and *-procs-naviserver.tcl similar to *.postgresql.xql and *.oracle.xql where appropriate
         
  • require Tcl 8.6, XOTcl 2.1, PostgreSQL 9.4 (PostgreSQL 9.4 EOL: November 2018), tdom 0.9
  • Make xotcl-core a first-class citizen of the OpenACS core! (wished by Michael Aram; would probably require a successful TIP?)

OpenACS Version 5.9.1 Agenda

Refactoring of rich-text editor integration

  • Driving force: Debian packaging (e.g. js minified code is not allowed)
  • Moved out code from acs-templating, provided interfaces to add many different rich-text editors as separate packages
  • New OpenACS packages:
    • richtext-xinha
    • richtext-tinymce
    • richtext-ckeditor4 (has ability to choose between CDN and local installation via web interface)

Improving admin interface

  • New theme manager:
    • Goals:
      • Make it easier to keep track of themes with local modifications
      • Make it easier to create local modification a new themes and to update these
      • Show differences between default theme parameter (in DB) and actual settings (in subsite parameters)
      • Allow to delete unused themes
      • Give site admin hints, which theme is used at which subsite
      • Ease theme switching
    • Added a subsite::theme_changed callback to be able to handle theme changes in custom themes (was also necessary for proper integration with DotLRN theming)
    • Added support for these features under subsite admin (/admin/)
    • Improved support for themed templates via [template::themed_template]

       

  • Improved (broken) interface to define/manage groups over web interface
  • Allow to send as well mail, when membership was rejected
  • New functions [membership_rel::get_user_id], [membership_rel::get] and [membership_rel::get_group_id] to avoid code duplication
  • Added support to let user include %forgotten_password_url% in self-registration emails (e.g. in message key acs-subsite.email_body_Registration_password)

     

  • Improved subsite/www/members
    • Make it possible to manage members of arbitrary groups
    • Improved performance for large groups
    • Improved configurability: when ShowMembersListTo is set to "3", show list to members only, when this is not the whole subsite

       

  • Improved user interface for /admin/applications for large number of applications
  • Various fixes for sitewide-admin pages (under /acs-admin)
  • Update blueprint in "install from repository" (currently just working in NaviServer)

SQL

  • Further cleanup of .xql files (like what as done for acs-subsite in OpenACS 5.9.0):
    • 36 files deleted
    • Removed more than 100 obsolete named queries
    • Stripped misleading SQL statements

       

  • Marked redundant / uncalled SQL functions as deprecated
  • Replaced usages of obsolete view "all_object_party_privilege_map" by "acs_object_party_privilege_map"
     
  • Removed type discrepancy introduced in 2002:
    • acs_object_types.object_type has type varchar(1000), while
    • acs_object_types.supertype has type varchar(100)
    • ... several more data types are involved, using acs_object_types.object_type as foreign key

       

  • Simplified core SQL functions by using defaults:
    • Number of functions reduced by a factor of 2 compared to OpenACS 5.9.0 (while providing compatibility for clients using old versions),
    • Reduced code redundancy
    • Affected functions:
      • Reduced content_item__new from 12 versions to 6,
      • Reduce content_revision__new from 7 to 4
      • Similar in image__new, image__new_revision, content_item__copy, content_item__get_title, content_item__move
    • PostgreSQL 9.5 supports named parameter in the same syntax as in Oracle. Further reduction of variants will be possible, once OpenACS requires at least PostgreSQL 9.5

       

  • Reduced usage of deprecated versions of SQL functions (mostly content repository calls)
  • Reduced generation of dead tuples by combining multiple DML statements to one (reduces costs of checkpoint cleanups in PostgreSQL)

     

  • Permission queries:
    • Improved performance
    • Support PACKAGE.FUNCTION notation for PostgreSQL to allow calls permission queries exactly the same way as in Oracle (e.g. "acs_permission.permission_p()"). This helps to reduce the number of PostgreSQL specific .xql files.
  • Modernize SQL:
    • Use real Boolean types instead of character(1)
      (done for new-portal, forums, faq, attachments, categories, dotlrn, dotlrn-forums, evaluation)
    • Use real enumeration types rather than check constraints (done for storage_type text/file/lob)

CR hygienics (reduce cr bloat)

  • Provided means to avoid insert/update/delete operations in the search queue:

    OpenACS adds for every new revision often multiple entries to the search_queue, without providing any means to prevent this. This requires for busy sites very short intervals between queue sweeps (otherwise too many entries pile up). Another consequence is that this behavior keeps the PostgreSQL auto-vacuum daemons permanently active. Many of these operations are useless in cases where the content repository is used for content that should not be provided via search. The changed behavior should honors a publish-date set to the future, since it will not add any content with future publish dates to the search-queue.

     

  • Reduced number of insert cr_child_rels operations, just when needed:

    cr_child_rels provide only little benefit (allow to use roles in a child-rel), but the common operation is a well available in cr_items via the parent_id. cr_child_rels do not help for recursive queries either. One option would be to add an additional argument for content_item__new to omit child-rel creation (default is old behavior) and adapt the other cases.

Security improvements

  • Added support against CSRF (cross site request forgery)
    • OpenACS maintains a per-request CSRF token that ensures that form replies are coming just from sites that received the form
    • CSRF support is optional for packages where CSRF is less dangerous, and such requests are wanted (e.g. search and api-browser)
  • Added Support for W3C "Upgrade-Insecure-Headers" (see https://www.w3.org/TR/upgrade-insecure-requests/):
    For standard compliant upgrade for requests from HTTP to HTTPS

  • Added support for W3C "Subresource Integrity" (SRI; see https://www.w3.org/TR/SRI/)

  • Added support for W3C "Content Security Policy" (CSP; see https://www.w3.org/TR/CSP/)

    • Removed "javascript:*" links (all such urls are removed from the 90 packages in oacs-5-9, excluding js libraries (ajaxhelper) and richtext code)
    • Removed "onclick", "onfocus", "onblur", "onchange" handlers from all .adp and .tcl files in the 90 packages in oacs-5-9 (excluding js libraries (ajaxhelper) and richtext code)
    • Added optional nonces to all <script> elements with literal JavaScript content

       

  • Removed "generic downloader", which allowed to download arbitrary content items, when item_id was known (bug-fix)
  • Improved protection against XSS and SQL-injection (strengthen page contracts, add validators, added page_contract_filter "localurl", improve HTML escaping, and URI encoding)
  • Fixed for potential traversal attack (acs-api-documentation-procs)

Improvements for "host-node mapped" subsites

  • Fixed links from host-node mapped subsite pages to swa-functions (must be always on main subsite)
  • Made "util_current_directory" aware of host-node-mapped subsites
  • Added ability to pass "-cookie_domain" to make it possible to use the same cookie for different domains
  • Fixed result of affected commands "util_current_location", "ad_return_url", "ad_get_login_url" and "ad_get_logout_url" for HTTP and HTTPS, when UseHostnameDomainforReg is 0 or 1.
  • Improved UI for host-node maps when a large number of site nodes exists

Reform of acs-rels

  • Made acs-rels configurable to give the developer the option to specify, whether these are composable or not (default fully backward compatible). This is required to control transitivity in rel-segments
  • The code changes are based on a patch provided by Michael Steigman.
    For details, see:
    • http://openacs.org/forums/message-view?message_id=4031049
    • http://openacs.org/forums/message-view?message_id=5330734

Improved status code handlers for AJAX scenarios

  • Don't report data source errors with status code 200 (use 422 instead)
  • Let "permission::require_permission" return forbidden (403) in AJAX calls (determined via [ad_conn ajaxp])

Improved Internationalization

  • Extended language catalogs for
    • Russian (thanks to v v)
    • Italian (thanks to Antonio Pisano)
    • Spanish (thanks to Hector Romojaro)
    • German (thanks to Markus Moser)

       

  • Added (missing) message keys
  • Improved wording of entries
  • Added message keys for member_state changes, provide API via group::get_member_state_pretty

Improved online documentation (/doc)

  • Fixed many broken links
  • Removed fully obsolete sections
  • Improved markup (modernize HTML)
  • Updated various sections

Misc code improvements:

  • 18 issues from the OpenACS-bug-tracker fixed
  • Made code more robust against invalid/incorrect input (page_contracts, validators, values obtained from header fields such as Accept-Language)
  • Fixed quoting of message keys on many places
  • Improved exception handling (often, a "catch" swallows to much, e.g. script_aborts), introducing "ad_exception".
  • Generalized handling of leading zeros:

    • Fixed cases where leading zeros could lead to unwanted octal interpretations
    • Switch to use of " util::trim_leading_zeros" instead of "template::util::leadingTrim", "dt_trim_leading_zeros" and "template::util::leadingTrim", marked the latter as deprecated
  • URL encoding

    • "ad_urlencode_folder_path": new function to perform an urlencode operation on the segments of the provided folder path
    • "export_vars": encode path always correctly, except -no_base_encode is specified
    • Fixed encoding of the URL path in "ad_returnredirect"
  • Improvements for "ad_conn":

    • Added [ad_conn behind_proxy_p] to check, whether the request is coming from behind a proxy server
    • Added [ad_conn behind_secure_proxy_p] to check, whether the request is coming from behind a secure proxy server
    • Added [ad_conn ajax_p] to check, whether the request is an AJAX requests (assumption: AJAX request sets header-field Requested-With: XMLHttpRequest")
    • Added [ad_conn vhost_url] to obtain the url of host-node-mapped subsites

       

  • Added various missing upgrade scripts (missing since many years) of changes that were implemented for new installs to reduce differences between "new"-and "old" (upgraded) installations
  • Templating

    • Get rid of various pesky "MISSING FORMWIDGET: ...formbutton:ok" messages
    • Improved support for javascript event handlers in template::head
    • New functions "template::add_event_listener" and "template::add_confirm_handler"
    • Fix handling, when "page_size_variable_p" is set (was broken since ages)
  • Improved location and URL handling:

    • Refactored and commented "util_current_location" to address security issues, handle IPv6 addresses, IP literal notation, multiple drivers, "
    • Improved "security::get_secure_location" (align with documentation)

       

    • New functions:
      • "util::configured_location"
      • "util::join_location", "util::split_location"
      for working on HTTP locations to reduce scattered regexps handling URL components
    • Improved IPv6 support
    • Use native "ns_parseurl" when available, provide backward compatible version for AOLserver
  • MIME types:

    • Added more Open XML formats for MS-Office to allowed content types
    • Modernized entries to IANA recommendations
    • New function "cr_check_mime_type" centralizing the retrieval of the mime_type from uploaded content
  • Finalized cleanup of permissions (started in OpenACS 5.9.0):

    • Get rid of "acs_object_context_index " (and therefore on "acs_object_party_privilege_map " as well) on PostgreSQL.
      Reasons:
      • huge table,
      • expensive maintenance, used only in a few places,
  • Misc new functions:

    • "lang::util::message_key_regexp": factor out scattered regexp for detecting message keys
    • "ns_md5" and "ns_parseurl": improve compatibility between AOLserver and NaviServer
    • "ad_dom_sanitize_html": allow to specify different sets of tags, attributes and protocols and "ad_dom_fix_html", which is a light weight tidy variant.

       

  • Improved HTML rendering (acs-api-browser), provide width and height to speed up rendering
  • Improved ADP files (e.g. missing doc(title))
  • Added usage of "ad_include_contract" on more occasions
  • Modernize Tcl and HTML coding
  • Reduced dependency on external programs (use Tcl functions instead)
  • Improved robustness of "file delete" operations all over the code
  • Improved documentation, fix demo pages
  • Aligned usages of log notification levels (distinction between "error", "warning" and "notice") with coding-standards

     

  • Cleaned up deprecated calls:
    • Removed usage of deprecated API functions (e.g. "cc_lookup_email_user", "cc_email_from_party", "util_unlist", ...)
    • Moved more deprecated procs to acs-outdated
    • Marked remaining (and unused) "cc_*" functions as well as deprecated.

       

  • Improved Oracle and windows support
  • Fixed common spelling errors and standardize spelling of product names all over the code (comments, documentation, ...)
  • Many more small bug fixes

Version numbers:

  • require PG 9.2 (End Of Life of PostgreSQL 9.0 was Oct 2015)
  • require XOTcl 2.0 (presented at the Tcl conference in 2011).

 

Packages:

 

  • New Package Parameters

    • acs-kernel:

      • MaxUrlLength: remove hard-coded constant in request processor for max accepted url paths
      • SecureSessionCookie: Let site admin determine, whether or not to use secured session cookies (useful, when not all requests are over HTTPS)
      • CSPEnabledP: activate/deactivate CSP
    • acs-kernel (recommended to be set via config file in section "ns/server/${server}/>acs"

      • NsShutdownWithNonZeroExitCode: tell NaviServer to return with a non-zero return code to cause restart (important under windows)
      • LogIncludeUserId: include user_id in access log
    • acs-api-browser:

      • ValidateCSRFP: make checking of CSRF optional (default 1)
    • acs-content-repository:

      • AllowMimeTypeCreationP: Decides whether we allow unknown mime types to be automatically registered (default: 0}
    • news-portlet:

      • display_item_lead_p: Should we display news leads in the portlet? (default 0)
    • search:

      • ValidateCSRFP: make checking of CSRF optional (default 1)
    • xotcl-request-monitor:

      • do_track_activity: turn activity monitoring on or off (default 0)
         
  • New OpenACS packages:

    • richtext-xinha
    • richtext-tinymce
    • richtext-ckeditor4 (has ability to choose between CDN and local installation via GUI)
    • openacs-bootstrap3-theme (as used on openacs.org)
    • dotlrn-bootstrap3-theme
  • xotcl-core:

    • Improved XOTcl 2.0 and NX support (e.g. api-browser)
    • Added "-debug", "-deprecated" to ad_* defined methods (such as e.g. "ad_instproc")
    • Make use of explicit "create" statements when creating XOTcl/NX objects (makes it easier to grab intentions and to detect typos)
    • Added parameter to "get_instance_from_db" to specify, whether the loaded objects should be initialized
    • Added support for PostgreSQL prepared statements of SQL interface in ::xo::dc (nsdb driver)
  • xowiki:

    • Named all web-callable methods www-NAME (to make it clear, what is called, what has to be checked especially carefully)
    • Moved templates from www into xowiki/resources to avoid naming conflicts
    • Improved ckeditor support
    • Added usage of prepared statements for common queries
    • Improved error handling
    • Better value checking for query parameter, error reporting via ad_return_complaint
    • Added option "-path_encode" to methods "pretty_link" and "folder_path" to allow to control, whether the result should be encoded or not (default true)

       

    • Form fields:
      • Improved repeatable form fields (esp. composite cases), don't require preallocation (can be costly in composite cases)
      • Added signing of form-fields
      • Added HTML5 attributes such as "multiple" (for "file") or "autocomplete"
      • Fixed generation of "orderby" attribute based on form-field names
      • richtext: allow to specify "extraAllowedContent" via options
      • Improved layout of horizontal check boxes

         

    • Menu bar:
      • Added dropzone (requires bootstrap): drag and drop file upload
      • Added mode toggle (requires bootstrap)
      • Extended default policies for handling e.g. dropzone (file-upload method)
      • Distinguish between "startpage" (menu.Package.Startpage) and "table of contents" (menu.Package.Toc)

         

    • Notifications:
      • Added support for better tailorable notifications: introduced method "notification_render" (similar to "search_render")
      • Added support for tailorable subject lines (method "notification_subject")

         

    • Improved bootstrap support, use "bootstrap" as PreferredCSSToolkit
    • Switched to ckeditor4 as PreferredRichtextEditor
    • Improved handling of script-abort from within the payload of ::xowiki::Object payloads
    • Added parameter to "get_all_children" to specify, whether the child objects should be initialized
  • xowf:

    • Added property "payload" to "WorkflowConstruct" in order to simplify customized workflow "allocate" actions
    • Internationalized more menu buttons
  • xotcl-request-monitor

    • Added class "BanUser" (use. e.g. ip address to disallow requests from a user via request monitor)
    • Added support for optional user tracking in database
    • Added support for monitoring response-time for certain urls via munin
    • Increased usage of XOTcl 2.0 variable resolver (potentially speed improvement 4x)
    • Performed some refactoring of response-time handling to allow site-admin to make e.g. use of NaviServer's dynamic connection pool management (not included in CVS)
    • Added support for partial times in long-calls.tcl to ease interpretation of unexpected slow calls
    • last100.tcl: Don't report hrefs to URLs, except to SWAs
  • chat:

    • Introduced new options to set chat rooms so login and/or logout message are not issued every time a user enters/exits a chat-room (important for chats with huge number of participants)
    • Parameterized viewing of chat-logs
    • Fixed cases of over-/under-quoting
    • Fixed JavaScript for IE, where innerHTML can cause problems
  • file-storage:

    • Don't show action keys, when user has no permissions
    • Added support for copying of same-named files into a folder (adding suffix)
    • Fixed old bugs in connection with "views" package

OpenACS Version 5.9.0 Agenda

  • Slimming pg SQL core:
     
    • Part 1: improve performance of object deletion
      • remove manual delete operations from acs_object__delete()
         
    • Part 2: content-repository - manual referential integrity management
      • handle referential integrity via pg's integrity constraints rather by functions cr_revision_del_ri_tr, cr_revision_ins_ri_tr, cr_revision_up_ri_tr, cr_revision_del_rev_ri_tr, and cr_revision_del_rev_ri_tr
      • fix broken/missing upgrade scripts from earlier updates
         
    • Part 3: content-repository - manual deletions and nulling
      • Removed manual nulling of live_revision and latest_revision
      • Removed manual deletion of old_revision and new_revision in cr_item_publish_audit
      • Removed manual deletion of item_id in cr_item_publish_audit, cr_release_periods, cr_item_template_map, and cr_item_keyword_map
      • Removed manual deletion of direct permissions
      • Added missing index for child_id to cr_child_rels.
         
    • Part 4: get rid of tree_sortkey in acs-objects
      • Check/fix dependencies in oacs-5-8 packages
      • Get rid of broken/uncalled functions using the column
      • Check/fix dependencies in other packages
      • Remove tree_sortkey and max_child_sortkey
  • Web interface:
    • Improve client performance
      • moving core.js from head to body
      • provide kernel parameter to control expiration date for /resources/
    • Protect against more XSS attacks
    • Improved HTML validity (see oacs-5-9-html-validity for the checklist)
    • Add lightweight support for ckeditor4 for templating::richtext widget (configurable via package parameter "RichTextEditor" of acs-templating. ckeditor4 supports mobile devices (such as iPad, ...).
    • New kernel parameter ResourcesExpireInterval to control expiration dates of resources
       
  • Templating:
    • Improve theme-ability
      • Move more information into theme packages in order to create responsive designs
      • Reduce hard-coding of paths, HTML etc.
    • Dimensional slider reform (ad_dimensional):
      • Remove hard-coded table layout from dimensional slider
      • Add backwards compatible templates
      • Move hard-coded styles into theme styling
      • Remove obsolete comments from ad_dimensional
    • Complete template variable controls (adding noi18n, addressing bug #2692):
      • @foo@: perform html quoting and internationalization
      • @foo;noquote@: perform internationalization
      • @foo;noi18n@: perform html quoting
      • @foo;literal@: perform neither html quoting nor internationalization
    • Improved Russian nationalization
    • Support of expiration dates and passwords for signed variables
       
  • Documentation:
    • Use ACS templating for the (static) OpenACS documentation to provide a more consistent layout and user experience.
    • Make pretty-naming of acs-core packages more consistent.
       
  • Misc improvements:
    • Mark unused functions of acs-tcl/tcl/table-display-procs.tcl as deprecated
    • Reduce number of muxtex locks by pre-request and per-thread caching
    • Improved development und debugging aids:
      • use "ad_log error|warning  .... " instead of "ns_log" to include information of request and callstack in error.log
      • ability to display ns_log entries caused by a request in ds-footer
      • ability to save delivered web pages in file-system for testing HTML validity (especially for admin pages, which are unaccessible for external validity testers)
    • More bug fixes
       
  • Version numbers:
    * require PG 9.0 (End Of Life of PostgreSQL 8.4 was July 2014)
    * require XOTcl 2.0 (presented at the Tcl conference in 2011).
     

OpenACS Version 5.8 Agenda

  • PostgreSQL 9.2+:
    • Get rid of nonstandard backslash escapes in function definitions
    • Change quote syntax in sql files (single quotes around the functions) to recommended PostgreSQL quoting using (recommended since pg8.0, jan 2005). li>Drop aliases in favor of named function arguments (recommended since pg8.0)
    • Fix wrong function_args, add missing function_args, align default semantics with the defaults in pg (providing "null" as default means the argument is optional)
    • Make OpenACS loadable without any tweaks in the pg config files
  • Use recursive queries for e.g. permission lookup to avoid performance problems in pg 8.4 and newer)
  • ADP: Use byte-compiled function wherever possible in compiled adp-code, support "@var;literal@" when neither quotes nor localization is needed in compiled adp-code
  • Improve support of NaviServer
  • Switch to Tcl 8.5 (TIP #143)
  • Improve scalability: Reduce mutex-stress on util-memoize cache and for cache maintenance in general
  • Code cleanup:
    • Get rid of calls to deprecated code (e.g. ad_tables, ad_parameter, ... in acs-core and main packages)
    • Improve awareness of usage of deprecated code (complain to error.log)
    • Use Tcl 8.5 idioms
    • cleanup of various http-client approaches and introduce a common implementation util::http::get and util::http::post; get rid of other usages, mark these as deprecated
    • page-contracts: Perform checking of all ids in acs-core and main packages to improve error messages and to improve security
  • OpenACS 5.8.1 should be released with main packages

OpenACS Version 5.7 Agenda

  • Support for object management in core 
  • Postgresql 9.0
  • TinyMCE update (fix for random JS injection issue, affecting Safari)
  • Fix for "remember me" issue
  • WCAG2-AA

OpenACS Version 5.6 Agenda

  • global parameters
  • package "embeds" 
  • fix search by package_id
  • core works on Postgresql 8.4

OpenACS Version 5.5 Agenda

  • DONE: Postgresql 8.3 support: especially regarding tsearch2
  • DONE: acs-authentication:
    • fix upgrade, add conditional logic into site wide tcl library so that you can login to perform the rest of the upgrade
  • DONE: tinymce:
    • upgrade to 3.1.1 + language packs
    • HTML Strict cleanup
    • create appropriate parameters for its config in acs-templating
  • acs-mail-lite:
    • DONE: cleanup duplicated procs (bounce)
    • review the parsing of bouncing messages (case user_id 0)
    • DONE: rollout support
  • Documentation improvements as discussed at the Guatemala conference:
    • Make current openacs.org/test-doc source for static files included in the release and provide ease means to achieve this for the release manager
      • DONE (CVS HEAD): Provide in XoWiki an alternative table of contents by nested UL/LI (without JavaScript) for static output
      • DONE (CVS HEAD): Provide in XoWiki a prototype page similar to "book" without edit-buttons etc., using the new table of contents
    • Update openacs.org/test-doc where necessary (incomplete list):
      • DONE: Fix the page ordering for the higher chapters (the original document  had no 3rd. level numbering)
      • update pages in /test-doc which are more recent in openacs/xowiki
      • bump version numbers of OpenACS, where appropriate (some places talk about openacs-5-0, others about openacs-5-1, oacs-5-2-3rc1 or 5-3) 
      • some version numbers of the required components are quite a mess. e.g. some parts say that Postgres 7.3 is required,  some examples talks about postgres 7.4.7 and 8.2.4 in the same listing.
      • also the dotlrn version numbers are old dotrln-2.0
      • Tcl version numbers should be 8.4.19
      • The install section for XOTcl is missing in II.3.4
      • remove ChangeLog from documentation
      • find some other prominent place for the ChangeLog
      • Fix indenting in examples  (e.g. in Rocael's robust web    development framework)
      • overthink Win2000 guidelines.  There are the native compiled packages from Maurizio, including everything from postgres, xotcl ....
    • It is desired to find a single person responsible for overworking the documentation, however, funding is unclear.

OpenACS Version 5.4 Agenda

  • DONE: HTML Strict (openacs core)
  • DONE: finish template::head (daveb)
  • DONE: test acs-mail-lite (complex send)
  • DONE: test notifications (complex send)
  • DONE: new XinHA release, get rid of RTE & HTMLarea, test on Safari
  • DONE: Form builder: add the ID attribute  to the form tag
  • DONE: acs-lang - keepLocalTranslationP to be removed
  • DONE search and intermedia-driver: move intermedia specific stuff to its package
  • DONE: acs-mail-lite - patch for mime::qp_encode bug

Future

  • Split Xinha and TinyMCE into separate packages see: http://openacs.org/forums/message-view?message_id=2750958
  • Usability ("my account" page)
  • XHTML ?
  • Testing and documentation for recording automated tests using the firefox plugin and the upload feature for it new in automated testing. Probably needs some polishing and should be talked to with Quest who are getting into this.
  • Parameter Scope Patch http://openacs.org/bugtracker/openacs/patch?patch%5fnumber=845 
  • Remove obsolete master template stuff (default and site master template in openacs-4/www, acs-subsite's group-master, and related CSS and images).  Probably in the version which follows 5.5 (probably 5.6).  Also remove the compat master stuff at the same time.

Things to merge into this page

Old 5.0 Roadmap  discussion 

Roadmap discussion 1 

 [Ideas for Boston 2006 Future of OpenACS discussion]

My previous attempt at collaborative roadmap 

A .LRN Roadmap 

Another .LRN Roadmap discussion 

 

What's on this page?

This page should include work that is planned on and has someone committed to working on it.

Installing OpenACS on Windows

Created by Maurizio Martignano, last modified by Maurizio Martignano 04 Apr 2019, at 08:33 AM

Windows-OpenACS (vers. 4.4.5 - April 2019) is a  Windows 64 port of OpenACS 5.9.1 and the latest snapshot of NaviServer and is available at Spazio IT .

This port installs and runs on the following systems:

  • Windows 10,
  • Windows Server 2012 R2,
  • Windows Server 2016 and
  • Windows Server 2019.

 

Upgrade to OpenACS 5.9

Created by Gustaf Neumann, last modified by Gustaf Neumann 02 Apr 2019, at 11:06 AM

Upgrades from earlier version than OpenACS 5.8 should read upgrade-oacs-5-8.

OpenACS 5.9 requires PostgreSQL 9.0 or newer and XOTcl 2.0 or newer (part of the nsf package). XOTcl 2.0 can be installed e.g. via install-ns, or from Debian sid https://packages.debian.org/sid/ , or from sources https://next-scripting.org/ . In order to check the versions of these packages already installed in your OpenACS installation, check the output of /xotcl/version-numbers in your installation.

Before upgrading to OpenACS 5.9, upgrade all packages in your current installation to recent versions in your OpenACS 5.8 installation (i.e. in the oacs-5-8 channel, especially if you are using edit-this-page, which has bugs in its data model that can complicate the oacs-5-9 installation).

In general it is always recommended to backup your current installation before overwriting it. Make e.g. a tar archive of all files of the OpenACS tree and a database dump.

After upgrading the packages in the oacs-5-8 channel,  the following steps are recommended:

  • Restart the server with OpenACS 5.8
  • Install newest version of the source files (e.g. from the OpenACS 5.9 tar distributions, or install/upgrade from the oacs-5-9 branch from cvs),
  • Upgrade the acs-core packages via package manager, restart server
  • Upgrade/install application packages via package manager as needed (from file-system or from repository)

To upgrade from OpenACS 5.9.0 to OpenACS 5.9.1 it is recommended to upgrade via tar ball or via CVS. Upgrade from repository works for NaviServer, but leads to an error after the install steps with AOLserver (the installation is OK, after a restart, everything is OK).

 

Step by step upgrade from OpenACS 5.8 directly to OpenACS 5.9.1

The following steps assume, you have a plain, not modified version of OpenACS running.

  1. Upgrade to the latest version of OpenACS 5.8, e.g. via
       cvs -r oacs-5-8 openacs-4
    Restart the server and make sure, you have upgrade all packages;
    under /acs-admin/apm/ you should see a Kernel like 5.8.3d2 running.
     
  2. Get release tar file
    Get the tar file of openacs-5.9.1, unpack it (e.g. under /usr/local), copy content over your current installation
       cd openacs-4
       cp -r /usr/local/openacs-5.9.1/* .
    and restart server.
     
  3. Upgrade packages:
    Browse to /acs-admin/install click on "upgrade from local", select all packages, restart server - done.

In case, you have a locally modified version of OpenACS, but you have not modified the kernel packages, then make sure to get the tar file of the core packages in step (2), proceed as described, upgrade the acs-core packages first and then the application packages of your installation.

In case you have in your installation as well changes in the acs-core packages (which is not recommended, but it happens), then get the diffs (you local changes) between the acs-core packages of oacs-5-8 and your installation, proceed as with the unmodified acs-core packages (paragraph above) and apply/merge your local changes after upgrading.

These steps are working also with recent versions of PostgreSQL such as 11.1.

Installing OpenACS on FreeBSD (quick)

Created by Martin Matuska, last modified by Gustaf Neumann 25 Mar 2019, at 07:29 AM

This quick-and-dirty guide is intended for more experienced (or very impatient) users.
More detailed instructions can be found here.

1. Installation requirements

FreeBSD (7.x, or 6.x) with updated ports tree
and NOT yet installed ports databases/postgresql82-server, www/openacs or www/openacs-dotlrn
 

2. Installing OpenACS

 Enter the following shell commands:

# cd /usr/ports/databases/postgresql82-server
# make install clean
# cd /usr/ports/databases/p5-postgresql-plperl
# make install clean
# echo 'postgresql_enable="YES"' >> /etc/rc.conf
# cd /usr/ports/www/openacs
# make install clean
# echo 'openacs_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/postgresql initdb
# /usr/local/share/doc/openacs/adjust_pgsql_conf.sh
# /usr/local/etc/rc.d/postgresql start
# /usr/local/share/doc/openacs/create_sampledb.sh
# /usr/local/etc/rc.d/openacs start

 

Now open  in your browser http://localhost:8000 and fill in all necessary data, finalize installation. The OpenACS server goes down afterwards.

 

# /usr/local/etc/rc.d/openacs start

That's all! You local OpenACS installation is accessible under http://localhost:8000

3. Installing .LRN 

 Enter the following shell commands:

# cd /usr/ports/databases/postgresql82-server 
# make install clean
# cd /usr/ports/databases/p5-postgresql-plperl
# make install clean
# echo 'postgresql_enable="YES"' >> /etc/rc.conf.local
# cd /usr/ports/www/openacs-dotlrn
# make install clean
# echo 'dotlrn_enable="YES"' >> /etc/rc.conf.local
# /usr/local/etc/rc.d/postgresql initdb
# /usr/local/share/doc/dotlrn/adjust_pgsql_conf.sh
# /usr/local/etc/rc.d/postgresql start
# /usr/local/share/doc/dotlrn/create_sampledb.sh
# /usr/local/etc/rc.d/dotlrn start

Now open  in your browser http://localhost:8000 and fill in all necessary data, finalize installation. The .LRN server goes down afterwards.

# /usr/local/etc/rc.d/dotlrn start

That's all! You local .LRN installation is accessible under http://localhost:8000

 

A. Contact information and bug reporting

Please send bug reports and feature suggestions to the port maintainer of OpenACS/.LRN FreeBSD ports:
Martin Matuska <mm_at_FreeBSD_dot_org>

 

 


 

Web Forms

Created by Rocael Hernández Rizzardini, last modified by Gustaf Neumann 22 Mar 2019, at 11:21 PM

Use ad_form to create HTML forms. If you work on a page that does not, convert it to use ad_form.

You can grep the toolkit under /packages and see many examples. 

Ad_form can handle many of your possible interactions with the system, such as normal tasks as add and edit data, validate entry form data, etc.

Additional information here:

Rubick on ad_form

Use the following in the tcl part of a page to limit access to page requests via post.. to reduce vulnerability to url hack and insertion attacks from web:

if { [ad_conn method] ne "POST" } {
  ad_script_abort
 }

Grouping elements into sections using ad_form

 

The {-section} list allows to group the subsequent elements (until the next section declaration) into a section. {-section} accepts 4 properties:

 

{-section
	section_id
	{legendtext $legendstring}
	{legend {name value name value ... name value}}
	{fieldset {name value name value ... name value}}
}

where:

  • section_id: a string to identify the section (mandatory)
  • legendtext (optional) a string for the legend of the fieldset (section)
  • legend (optional) a list of name value pairs attributes for the LEGEND tag
  • fieldset (optional) a list of name value pairs attributes for the FIELDSET tag

Example

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ad_form \
	-name "your_zen_level" \
	-method post -html {enctype multipart/form-data class margin-form} \
	-fieldset {{title "T1" class "C1"} "This really works!!"} \ 	-form {      # Start section 1     {-section "sec1" {legendtext "Section Title I"} {legend {class myClass id myId}}}
    {zen_comment:text(comment)\
                 {label "template::widget::comment"}\
                 {value "Please enter your comments."}\
                 {html {rows 7 cols 50}}}
    {zen_file:text(file),optional\
                 {label "template::widget::file"}}

    # Start section2
    {-section "sec2" {legendtext "Section Title II"} {fieldset {class myclass}}}
    {zen_multiselect:text(multiselect)\
                 {label "template::widget::multiselect"}\
                 {options {"mark" "emma" "avni" "carl" "don"}}}

    # Unset the section. subsequent elements will not be in any section.
    {-section ""}
    {zen_text:text(text),optional,nospell\
                 {label "template::widget::text"}\
                 {help_text {"Your identification tag number"}}}
    {zen_textarea:text(textarea),optional,nospell\
                 {label "template::widget::textarea"}\
                 {help_text {"Please describe your desired state of being"}}\
                 {html {rows 7 cols 50}}}
}

 

2006 Fall Conference Submissions and Program

Created by Carl Robert Blesius, last modified by Gustaf Neumann 22 Mar 2019, at 11:17 PM

OpenACS/.LRN Fall Conference 2006

 

Day 1 (Nov. 1) - International Workshop on Community Based E-Learning Systems

Location: Harvard Conference Center Rotunda  

07:30-08:30 Continental Breakfast and onsite registration

08:30 Opening Remarks and Orientation

08:40 Keynote: Creating Passionate Users

What do game designers, neuroscientist, and filmmakers know about creating passionate users? How can we exploit the way the brain works to reach our users/learners at a deeper level that inspires their attention, enthusiasm, long-term loyalty, and evangelism? New research points to a different way to craft interactive experiences that get the user's attention and--most importantly--KEEP it. For today's learners, sound instructional design is no longer enough.

In this session, we'll explore ways to work around the brain's natural filters that keep our message from getting in. We'll cover how to give interactive experiences an almost addictive quality--to keep our users engaged and wanting more. There's a place where science and entertainment meet that knows what turns the brain on, and we'll look at simple, powerful, easy-to-implement ways to make that happen. Whether you're building e-learning or plain old paper documentation, you'll learn techniques for creating passionate users/learners that you can put to work immediately.

Kathy Sierra

Kathy Sierra spent the last decade as a game developer, master trainer for Sun Microsystems, and creator of the first New Media Interaction Design courses for UCLA Extension's Entertainment Studies Department at the IBM New Media Lab. Together with her partner Bert Bates, Kathy created the bestselling and award-winning "brain-friendly" Head First book series. She's the original founder of the largest non-commercial software development community, Javaranch.com, and author/creator of a Technorati Top 100 Blog. When she's not working on ways to help humans learn more quickly, she's playing with her three super-smart Icelandic horses.

09:40 Keynote: Photo.net and ACS

Philip Greenspun will talk about: 

  • How is it possible that ACS is still viable?
  • The history of photo.net and ACS
  • stuff he and others are working on at photo.net

Philip Greenspun has been in and around the Massachusetts Institute of Technology since 1979. He alternates between teaching traditional electrical engineering classes and teaching "Software Engineering for Web Applications" (6.171), a course that he co-developed with Hal Abelson. This has been a successful course at MIT and is being used by computer science departments at 20 other universities around the world. Greenspun is the author of two textbooks used at MIT, including Internet Application Workbook (available at http://philip.greenspun.com/internet-application-workbook/). Greenspun is an instrument-rated private pilot and has flown his Diamond Star across most of the North American continent and two-thirds of the Caribbean islands.

In the mid-1990s, Greenspun founded the Scalable Systems for Online Communities research group at MIT and spun it out into ArsDigita, which he grew into a profitable $20 million (revenue) open-source enterprise software company. The software is best known for its support of public online communities, such as www.scorecard.org and photo.net, which started as Philip Greenspun's home page and grew to serve 500,000 users educating each other to become better photographers.

The learn@wu project

Gustaf Neumann - Chair of Information Systems and New Media at the University of Economics and Business Administration (WU) in Vienna, Austria

How do you create one of the most intensively used e-learning platforms worldwide? Gustaf explains.

Communities of users to support an open LMS: the Moodle perspective

Martyn Cooper - Head of Accessible Educational Media group at the Open University of UK

Martyn gives us a little peek into an alternate universe.

10:45-11:00 Coffee Break  

User-centred approach in LMS: Adaptiveness and Accessibility

Jesús G. Boticario - Head of aDeNu Research Group at The Universidad Nacional de Educación a Distancia (Spain)

Jesús introduces a new (.LRN related) European funded project focused on making sure that the technology that mediates lifelong learning does so accommodating the diversity of ways people interact with technology and the content and services it delivers.

E-Lane: European and Latin American New Education

Carlos Delgado-Kloos - Head of the Department of Engineering and Telematics at Universidad Carlos III de Madrid

Carlos gives us a quick overview, summary, and results of the E-Lane project that is coming to a close, but will live on in our software.

E-Learning in a Disconnected and Low Bandwidth Environment

Álvaro Rendón - University of Cauca Columbia

Álvaro will give an example of the E-Lane project in action that is based on .LRN and used in rural Colombia. It addresses network environments with low bandwidth connectivity and low cost access infrastructures.

01:00 PM Lunch

02:00 Afternoon sessions

2:00 PM Track 1: Accessibility and Technical Track

Towards Full Accessibility in LMS

2:00 PM Track 2: Case Studies and Theory

Education Talks and Demos

2:00 to 2:30 pm

Keynote: Accessibility in Community and Open Source Software Developments: the Moodle perspective

Martyn Cooper - Head of Accessible Educational Media group at the Open University of UK

Among diverse research and internal consultancy roles, Martyn Cooper has overall responsibility for accessibility in the Open University's Virtual Learning Environment which is based on Moodle.  The Open University has nearly 10,000 disabled students and takes its legal and moral responsibility to give them equal access to its teaching and learning very seriously.  It has been making substantial investments within the Moodle community to address the current deficits in accessibility of the software.  This paper reflects on this process and the more general issues of accessibility in community based and open source software developments.

2:00 to 2:30 pm

The Educator’s Guide to the Flat World: Flatteners and Convergences That Change Everything in Education

Steve Wilmarth

This workshop will focus on Thomas Friedman’s book, The World is Flat, and the theses that are driving globalization and multi-cultural educational issues.  Participants will develop ideas on how to think creatively and innovatively about changes that impact the purpose and value of education in the 21st century.  Participants will be challenged to see how the themes and concepts articulated in The World is Flat can or should be applied in classroom practices.

 

 

2:35pm to 3:05pm

Innovation and Research Accessibility Issues on eLearning: a user modelling approach

Jesús G. Boticario - Head of aDeNu Research Group at UNED (Spain)

 

 

 


 

2:35pm to 3:05pm

E-campus implementation: experiences at Galileo University

Rocael Hernandez 

Integration is a key factor for creating an e-campus initiative comprised of various systems. While there are multiple technical options for e-campus dynamic web services, we have chosen to use OpenACS for most of our web services.OpenACS has been an extremely powerful development framework to create new modules and achieve simple integration. Services provided in the e-campus initiative include .LRN, a Learning Management System (LMS), public news and institutional small Content Management System (CMS), tuition payment, course assignments, professor profiles, work opportunities and single account creation.

3:10pm to 3:40pm

Accessibility Requirements in dotLRN

 Olga C. Santos - R&D Technical Manager of aDeNu Research Group at UNED (Spain)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Coffee Break 3:40-4:00 pm

3:10pm to 3:40pm

The DGSOM Personnel System, Weekly Message Digest, Room Reservation System, and Calendar Application

 Avni Khatri, UCLA - CTRL

Many universities, like the David Geffen School of Medicine at UCLA (DGSOM), are busy, heterogeneous organizations of people and resources alive with meetings, presentations, and cross collaborations. Perhaps because of our size, DGSOM is more like a federation of city-states than a well-structured hierarchically administered organization. Consequently, common problems are often encountered and addressed in isolation of one another, and this has led, in our case, to a morass of incompatible partial solutions to similar problems. A few of examples if this include Web-presentation of faculty member profiles, shared management of resources like conference rooms, and the dissemination of events and other timely information.

The Computing Technologies Research Lab (CTRL) at UCLA is a software development group within DGSOM that provides open source solutions to research and clinical data collection, management and reporting problems. Members of CTRL have used the AOLserver (p.k.a NaviServer) to build web-based applications at UCLA since 1994.

Using the OpenACS framework (and Oracle RDBMS), CTRL has developed several applications that address a set of problems that all universities face in one form or another: centrally managing faculty information and integrating the information with heterogeneous departmental web sites (using ACS subsites), and centrally managing shared resources, like conference rooms, in a fashion that protects departmental control over the resources.

The presentation will include requirements, design, and technical details of how we have tailored the OpenACS to address the faculty database, room reservations, and the weekly message digests.

Coffee Break 3:40-4:00 pm 

4:00pm to 4:30pm

Federated Search for Locating Learning Resources from Heterogeneous Learning Repositories

Stefan Sobernig

Stefan will talk about using OpenACS/DotLRN in a federated search environment for locating learning resources from heterogenous learning repositories (usage of OpenACS in the EU research projects iCAMP and Prolix, learning networks, SQI).

4:00pm to 4:30pm

ePortfolios: Using Personal Learning Landscapes, Student Performance Evaluation and Life-Long Learning Opportunities

Steve Wilmarth

This workshop will explore the use and application of ePortfolios as an alternative and/or supplemental assessment practice.  Participants will develop ideas on how to use ePortfolios as an essential component of a personal learning landscape.

4:30pm to 5:00pm

Implementation of IMS-LD in .LRN

Luis de la Fuente Valentin - Universidad Carlos III de Madrid

Applying pedagogical models to e-learning courses is the aim of the IMS Learning Design Specification, which can be used to describe educational processes by defining the flow of e-learning activities. Its design is wide enough to manage any methodology, and it provides a way to add services as a support tool for the learning activities. A .LRN player for IMSLD packages has been developed by the University Carlos III of Madrid, and is designed from scratch and fully integrated with the platform.

 

 

 

4:30pm to 5:00pm

Collaborative Curriculum: Using .LRN to Coordinate Data Collection and Analysis Between Classrooms Featuring Microscopic Image Collections

With an NSF SBIR grant (National Science Foundation Small Business Innovative Research), Prime Entertainment has partnered with the Concord Consortium (CC), and Solution Grove (SG), to develop cutting edge collaborative curriculum centered around projects using a digital microscope. Prime Entertainment makes the QX5 hardware, CC is developing the Java application for collecting data, and SG is implementing the .LRN back end and website where teachers and students can share data and work together. Get a preview of how these systems integrate with each other and the structure of the online community.

 

5:00PM to 6:00PM: Informal demos and discussions
 

8:00PM: New England Seafood Dinner at the Summer Shack

Jasper White's Summer Shack

Telephone 617-867-9955
50 Dalton Street in the Back Bay,
across from the Sheraton Hotel entrance and the Hynes Auditorium. Upstairs from Kings Bowling Alley.
Closest Subway T Station: Green Line - Hynes Auditorium.

Day 2 (Nov. 2) - General Web Applications Focus - OpenACS

Free-form and technology focused with opportunities to demo

8:15AM - 8:50AM Breakfast

9:00AM - Start

Location:  Harvard Conference Center Rooms 214/216/217/Lounge

 

The architecture of Phigita.net

Neophytos Demetriou

An XOTcl based architecture of an OpenACS-like system, scalability through database partitioning, providing google like services.

Zip Car

Roy Russell - Founding CTO
Roy advises the company on a broad range of subjects. He has been an integral part of the Zipcar team since inception. Since the early days of Zipcar, Roy has been instrumental in developing and deploying the unique technology that has given the company its leading position in user experience. 

xoTcl for OpenACS Developers (Introduction)

Neophytos Demetriou and Gustaf Neuman

This will be a short introduction of what will be presented in more detail on Day 3 (during the hacking/training sessions at the Museum of Science).

Solution Grove

Demo of AJAX usage - Hamilton Chua remotely with Caroline Meeks and Dave Bauer live.

Porting Sloan from Oracle to Postgres - Please let us know if there is anyone with a oracle installation interested in moving to Postgres, we will only do this if there is interest. Deds Castillo remotely with Caroline Meeks and Dave Bauer live.

Two Approaches to Virtualization and OpenACS/.LRN

Two Approaches to Virtualization and OpenACS/.LRN

The two main approaches to virtualization, "total OS encapsulation" as done by VMWare Server, and the "shared-kernel" approach as taken by Solaris 10 with its Zones technology, will be discussed. A live demonstration of installing a working OS under each approach will be given.

Patrick Giagnocavo

Patrick Giagnocavo is the CEO of Zill.Net. Zill.Net offers hosting and colocation with a focus on OpenACS and .LRN setup and ongoing system administration.

Remote queries with SOAP:
We have designed and created a simple way to run queries on a remote server, using SOAP to send queries and receive results that are similar to those that the db_* API returns. This method may be used by other applications such as the <multiple> tag and list-builder.

xoORB: An XOTcl based Object Request Broker for OpenACS (SOAP-based web-services, client, and server framework)

Stefan Sobernig

 

Conformance Testing of the .LRN platform

 

Gerardo Morales - Groupe des Ecoles des Télécommunications/ Institut National des Télécommunications (GET/INT) France

For big and complex applications such as .LRN, it is mandatory to execute in a scheduled way a set of test cases to assure its stability and the conformance to its original model, along with the continuous development of such application. This presentation highlights the importance of conformance testing and the types of tests needed for the .LRN platform. It also presents a new method to automatically generate test cases from a .LRN model described in UML.

Selenium Unit Tests in OpenACS

Tracy Adams (ACSPropel) 

1. Creating Selenium Unit Tests
2. Hosted Selenium Unit Test management

1:00 PM to 1:50 PM: Lunch 

 

Marketspace Advisory

Sam Stearns

Marketspace Advisory is a strategy consulting firm focused on improving its clients' customer-facing interface systems and associated channel migration challenges. Clients include large organizations in the media, financial services, and consumer products sectors. We use an OpenACS /.LRN - based extranet during our engagements to share knowledge with our clients (especially via social bookmarking) and help raise their digital literacy.

Load balancing using a cluster with .LRN

This talk describes a widely-distributed and integrated functionality to increase performance and service. The installation includes multiple servers specialized for both static and dynamic information. Also some specific synchronization scripts will be described that replicate high traffic pages that do not change often and are the same for most users. The following will also be discussed:
- cache sharing
- node sharing
- reload of procs
- Content Repository (CR) file system sharing

.LRN Windows installer

We present an easy way to run and test .LRN and OpenACS in your windows installation. This method is based on the original design by Rocael Hernandex, initial development by Vlassis and then ProjectOpen in Barcelona, and has been fully-refactored and now maintained by Byron Linares.

OpenACS OCT/.LRN Leadership Team/EU4ALL Meeting 

The European project "EU4ALL" just started (EU4ALL stands for "European Unified Approach for Accessible Lifelong Learning") and the Scientific Coordinators of the project (aDeNu Research Group at UNED represented by Emma, Olga, and Jesús) want to meet with OpenACS/.LRN leadership to align common objectives and define a framework to reach them Audio  OpenACS_Meeting_Nov_2006.ogg (OGG)  OpenACS_Meeting_Nov_2006.mp3 (MP3)

Demos

Caroline Meeks and Dave Bauer 

1. AJAX UI examples
2. Extending List Builder with filters and graphs
3. Moving SloanSpace from Oracle to Postgres
4. Dynamic Types (Dave and Lee together we hope)

UG-Surveys

A package that administers multiple surveys that are being sent to users. It administers the assessment package. At Galileo has been used widely to used to pass out surveys to students across the different programs. So far more than 65,000 surveys has been answered.
- Create survey templates
- Deploy templates
- Close surveys and results

 

Day 3 and 4 - Training and Hacking Days at the Boston Museum of Science

November_3rd_and_November_4th_Training_and_Hacking_Days

OpenACS/.LRN for Debian

Created by Héctor Romojaro, Stefan Sobernig, last modified by Gustaf Neumann 22 Mar 2019, at 11:14 PM

 

Logo

 

Packages of OpenACS  and .LRN  are now available for Debian GNU/Linux . We hope to facilitate the adoption by novices and the infrastructure deployment by professional users, both running Debian GNU/Linux  and its derivatives. Our packaging activity explicitly targets Debian GNU/Linux  stable , testing and unstable . Important dependencies are co-maintained with the Debian Tcl/Tk Maintainers .

See also OpenACS for Ubuntu.

Getting started

Please, review the section on supported distributions first.  Currently, the core packages (openacs, dotlrn) and their dependencies are included into the official Debian GNU/Linux  repositories.

Install


  1. Run:

    apt-get update

     

  2. (optional) Provide for a PostgreSQL environment: If you don't have a PostgreSQL installation at hand, provide one. You do not need to care about setting up a concrete data base. This is automatically done by the OpenACS and dotlrn post-install instructions. For further PostgreSQL-related set-up issue, see ...
     
    apt-get install postgresql
    
    If you run a remote PostgreSQL instance, remember to allow for access of the PostgreSQL Administrator (postgres) and the openacs/dotlrn user from machine hosting your OpenACS/.LRN installation.
     
  3. Install the core packages and follow the on-screen instructions:
     
    # OpenACS
    apt-get install openacs
    ... or ...
     
    # .LRN
    apt-get install dotlrn   

After Install

  1. (optional) To change IP address and port of the instance, please edit the file:
     
    # OpenACS
    /etc/openacs/openacs.sh
    
    # dotLRN
    /etc/dotlrn/dotlrn.sh
    
    
    
  2. (optional) To control the instance using daemontools, please install the daemontools debian packages and follow the instructions on the file:

     
    # OpenACS
    /usr/share/doc/openacs/README.daemontools
    
    # dotLRN
    /usr/share/doc/dotlrn/README.daemontools
     

To-dos

Next Steps, After Basic Installation (above)

 

People

Active contributors

  • Héctor Romojaro 
  • Stefan Sobernig
  • Avni M. Khatri
  • Carl R. Blesius


Packages status


Packages maintained by Debian Tcl/Tk Maintainers 

 

Packages co-maintained by OCT & Debian Tcl/Tk Maintainers 

 

 

 

Prodding

Please, for getting in contact and reporting issues, consider ...

tDOM

Created by OpenACS community, last modified by Gustaf Neumann 22 Mar 2019, at 11:11 PM

A Tcl-based package, tDOM combines high performance XML data processing with easy and powerful Tcl scripting functionality. tDOM is one of the fastest ways to manipulate XML with a scripting language and uses very little memory. Newer versions of tDOM support JSON.

More info at http://tdom.org (mailing list )

What others say about tDOM

Using tDOM with OpenACS

tdom-programming

Introduction to OpenACS

Created by Rocael Hernández Rizzardini, last modified by Gustaf Neumann 22 Mar 2019, at 11:04 PM

Start Playing With Openacs. 

Before you know it, you will Become an Expert in the basics!

This is a quick guide of the things that you have to know in order to become productive in OpenACS. You have to master certain things before you can advance. A developer has to become an expert in handling and knowing the tools that he uses.

MAYBE, the very first thing to become aware of, is that your installed OpenACS server is self-documenting. Take a look at http://your.server/doc/ and spend some time here; I'd suggest an hour or so just to view the structure and get familiar with what is said where, and how it is said. WHENEVER you ask a question and get an answer, try to seek out the solution you get in the docs and piece it together. This WILL help you to gradually become an expert.

You have to become expert in:
- Emacs
- Tcl
- Linux (for OpenACS installation)
- Searching on OpenACS
- Functions that provides NaviServer
- Use of OpenACS
- Basic API OpenACS

Emacs:
You have to become expert in the text editor that you use for development since is a fundamental piece in your development environment. Not knowing the text editor in used makes it very limited and your work will be very unproductive.


Emacs is an extendable editor (but you can use any editor you want).  Check out the oacs emacs module, pretty cool! en:ide-emacs

Minimal knowledge of Emacs:
 - window management
 - copy/paste
 - DB access from emacs
     - It's actually very simple, you run a shell in emacs and then run the text db client in the shell in emacs. Once inside emacs, <code>M-x shell (enter)</code> will put you in a shell. From there, you can do anything the shell can do, and then if you want you can save everything. So, oracle users can use sqlplus, postgres users can use psql. (watch out... by default emacs will NOT offer to save the buffer before you exit!)
 - file management 
 - searching


Required time to know emacs ( 4 hours aprox).

PLEASE DON'T LET THAT SCARE YOU... you don't actually need to know EVERYTHING about emacs or be an expert in emacs itself. Me, I just know how to move the cursor, type, define a macro (no, really, this is easy too) and get into shell mode. Oh, and I can run (doctor) in the *scratch* buffer.

Tcl

Try searching google for "Tcl for Web Nerds" and/or look for some good, basic tutorials. I think you can learn at your own pace, and still have fun with OpenACS.


Minimal knowledge of Tcl:
- lists and manipulation functions
- strings
- proc/namespaces
- switch
- regular expressions (regexp)
- Everything that is basic to Tcl

 (jiml) I'll suggest you find out how to run tclsh (or, say, psql) from inside emacs (see comment about emacs shell mode, above on this same page).


Required time to know and become used to Tcl (6-12 hours approx).

TCL for web nerds: http://openacs.org/test-doc/tcl-wn

Linux (for OpenACS Installation)

Minimal Knowledge
- user management
- group management
- permission
- compilation
- searching
- environment variables

Searching in OpenACS

Do your searching in OpenACS in different areas:
- forums (use google, example: site:opeancs.org postgres 8.1)
- code (use grep and find):  find /path/name -name "*-oracle.xql" -exec grep whatever {} \; -print
- API doc (use to search procs)

Required Time (4 hours approx)

Debugging in OpenACS

This will help us to identify exactly what is producing an error. For that you have to learn::
- To read the log
- To use the Developer Support

To log everything in your log file, go to config.tcl and set "debug true.

Required Time (4 hours)

Functions of NaviServer

Check all of them ( ns_*)

HOWEVER NOTE that it is MUCH more important to see how these calls are used in OpenACS! (aside from which, it will take you less time to understand a single OpenACS interaction if you just look at one... the notes tutorial has a few; I would suggest that you do that tutorial and actually type everything in rather than cut and paste... then you touch every word)

NaviServer Documentation:
https://naviserver.sourceforge.io/n/toc.html

Required Time (4 hours aprox)

Use of OpenACS

Become expert in using OpenACS as a tool, from the user interface point of view.

Important items:
- Developer administration (Site-Wide-Admin) (4 hours)
- Applications: (4 hours or more)
    - User administration:
        - Understand the roles that exist.
            - Will help a lot if you understand more about .LRN
- Basic API of OpenACS

    - The -most- basic part of openacs is its object system.
       Start to get familiar with the object system by reading
       the definition which starts "create table acs_objects"
       and find out everything you can about how to define your
       own object types, how inheritance works, how to drop your types.
       REMEMBER to drop things in -reverse- order from how you create.
       Learn how acs_object inheritance works.
    - Object and User and permission management
    - DB (a detailed document describing the database access api is on your installed server at http://your.server/doc/db-api.html | a search for all tcl db procs: db_*)
    - ad_conn (provides basic information regarding the browser the request is coming from as well as the user (if any logged in) who is doing the browsing; search at http://your.server/api-doc)
    - Permissions: a permission is a statement of the following form:
         PARTY (from table parties) whose party_id is X has
         PRIVILEGE (from table acs_privileges) whose textual name is Y on
         OBJECT (from table acs_objects) whose object_id is Z

         You can:

             - make such a statement (ex. group-of-my-students has "read" on my-student-forums)

             - ask (in various ways) whether such a statement has been made

         I would suggest for further study, that you:

             - MOST IMPORTANT: try things out!!

             - search google for "permissions tediously explained"

             - also see the "notes" tutorial
 

    - acs_rel is good tool for connecting objects. One application: groups of users (so one acs_rel "connects" one user to a common object, representing the group, ex: if andy, betty, carl, dirk and ed are in groups alpha-beta, there will be five acs_rels, all of them tied to alpha-beta on one side of the rel, and for rel, that rel will have one of the users on the other side of the rel)
    - Site-map (instances and site nodes)

    - another VERY important part of OpenACS that was not listed here before, is the templating system. If you have OpenACS installed, you can view the docs at http://your.server/doc/acs-templating/ and you can see dozens of demonstrations at http://your.server/doc/acs-templating/demo AAANNND if that's not enough, every demo has sample code and you can plug it right in to your page! As you can see, you can show values of Tcl variables, make lists and forms, include other templates and show database results and do all of this and more, looking any way you want.

 

Testing with Selenium

Created by Hamilton Chua, last modified by Gustaf Neumann 22 Mar 2019, at 10:13 PM

Testing with Selenium

Selenium is primarily for feature testing, user interface and acceptance testing.

Recently OpenACS got support for Selenium RC   on CVS HEAD to be released in OpenACS 5.6 sometime in the future.

Forum Posts :

http://openacs.org/forums/message-view?message_id=365992

Command Reference :

Selenium Documentation

Interesting Articles :

Tools :

Selenium Recorder Firefox Extension

Quickstart to Writing Tests:

  This quickstart shows you how to start writing selenium tests with selenium and the selenium recorder (aka selenium-ide).

  1. You need to have the Firefox Browser version 1.5 or higher
  2. Proceed to http://www.openqa.org/selenium-ide/ and click on the link (Firefox Extension) to install the Selenium IDE firefox extension
  3. Restart firefox
  4. Click Tools -> Selenium IDE
  5. The selenium ide window will open
  6. It will start recording your actions in the browser.
  7. You can go ahead and go to a url and click on the links to see how the recorder records your actions.
  8. To disable recording while the recorder window is open, click the "red" button.
  9. Selenium verifies that a test or action is successful by checking the title or text in a webpage
  10. You can verify the title of the current page  by right clicking on the webpage you are currently in and click Append Selenium -> verifyTitle
  11. You can verify the presence of text in a page by highlighting some text and then right click -> Append Selenium Command -> verifyTextPresent

Click here for a video of how to use Selenium IDE.

Selenium IDE allows you to create, save, load and run tests right from firefox without having to install Selenium on the server.

Selenium on the Server

Aside from using the Selenium IDE to test webpages, selenium itself can be installed on the server. This provides a central location for testers and developers to view and execute tests. "Server" here refers to the OpenACS instance where your application is running. If your OpenACS instance is in http://your_openacs_instance, then selenium should be installed in http://your_openacs_instance/selenium

WARNING: We do not recommend installing selenium on the server of a production instance. Only install selenium on a staging or test server. This is because

  • When tests fail, they leave a mess of test data that you will not want on production
  • Selenium is mostly javascript that can run on any browser. While there are currently no reports of exploits on servers running selenium, we do not want and (you should not too) take the risk of having it on a production box where it is possible for a clever hacker to utilize a browser vulnerability to break into your server.

To instal selenium on the server :

  1. Download selenium from http://www.openqa.org/selenium-core/download.action
  2. Choose to download the "Full Release"
  3. After downloading, decompress the file.
  4. You will see a folder selenium-x.x where "x.x" is the version of selenium you downloaded.
  5. Go inside this folder and look for the "selenium" folder.
  6. Copy this "selenium" folder to the openacsroot/www/ directory
  7. Launch a browser and go to http://your_openacs_instance/selenium

At this point, selenium is installed. The page that you see when you visit /selenium is the default selenium page. It lists the tests that come with selenium.

To start using selenium on the server :

  1. Customize the landing page /selenium/index.html
  2. Create Test Suites for each package. A test suite is just a file in selenium/tests that lists a number of tests for a particular feature or section of an application. For instance, TestSuite-News.html would be a file that lists the tests for the News Package.
  3. Upload tests to the /selenium/tests folder.

Guidelines for Creating and Running Tests for OpenACS Packages

Coming Soon .....

Some Limitations :

  • Minor Issue with SSL  : Selenium can't switch properly between http and https pages.
  • File Input type not supported : You can't tell selenium to upload a file. But there is a work around with firefox. Read it here
  • WYSIWYG Editors  : Selenium can't write to some WYSIWYG editors like htmlarea but it seems to work with xinha, you just need to get the textearea element name that xinha uses.

Tips :

Use xpath to find specific html elements

I have  scenario where I want to click ona image field with no id or name attribute so there's no easy way to tell selenium to click it. We can either ask the designer to put an id or name attribute or use xpath. Let's say the image button in question looks like this

 <input type="image" src="images/long-login-btn.gif" width=166 height=15 />

the xpath syntax will be

 //input[@src='http://www.openacs.org/images/long-login-btn.gif']

and you can use this in conjunction with clickAndWait

Use javascript to create dummy values

You can use javascript to generate values like so

  javascript{'test' + (new Date()).getTime()}

and use store to store them to a value for use later in the selenium script.

 

Next Page
previous April 2019
Sun Mon Tue Wed Thu Fri Sat
31 1 (1) 2 3 (2) 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4

Popular tags

17 , 5.9.0 , 5.9.1 , ad_form , ADP , ajax , aolserver , asynchronous , bgdelivery , bootstrap , bugtracker , CentOS , COMET , compatibility , CSP , CSRF , cvs , debian , emacs , engineering-standards , fedora , FreeBSD , guidelines , host-node-map , hstore , includelets , install , installation , installers , install-ns
No registered users in community xowiki
in last 30 minutes
Contributors

OpenACS.org