Search · Index


Filtered by date 2017-04-20, 1 - 10 of 27 Postings (all, summary)

OpenACS/.LRN for Debian

Created by Héctor Romojaro, Stefan Sobernig, last modified by Gustaf Neumann 20 Apr 2017, at 10:33 PM




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 derivates. 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.


  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
    # dotLRN
  2. (optional) To control the instance using daemontools, please install the daemontools debian packages and follow the instructions on the file:

    # OpenACS
    # dotLRN


Next Steps, After Basic Installation (above)



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 





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

OpenACS/.LRN for Ubuntu

Created by Héctor Romojaro, last modified by Gustaf Neumann 20 Apr 2017, at 10:32 PM

Packages of OpenACS  and .LRN  are now available for Ubuntu Linux . We hope to facilitate the adoption by novices and the infrastructure deployment by professional users, both running Debian GNU/Linux  and its derivates. This is an on-going effort. Beware, our packaging activity explicitly targets Ubuntu Linux  10.04 LTS (Lucid Lynx) and further versions. Important dependencies are co-maintained with the Debian Tcl/Tk Maintainers .

See also OpenACS for Debian.

Getting started

Please, review the section on supported distributions first. Currently, the core packages (openacs, dotlrn) are included into the Universe Ubuntu repository.

Release packages for Ubuntu 10.04 and Further

  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.


    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 the 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
    # dotLRN
  2. (optional) To control the instance using daemontools, please install the daemontools ubuntu packages and follow the instructions on the file:

    # OpenACS
    # dotLRN



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 




Community packages maintained by OCT


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

for developers

Created by OpenACS community, last modified by Gustaf Neumann 20 Apr 2017, at 06:44 PM

OpenACS for developers


Besides the quality components of Openacs (See: en:openacs-system), OpenACS has these enterprise-quality features for developers:

will be pulling in docs from here: and

Integrated Development Environments (IDE)

These text editors are commonly used when coding on OpenACS:

Bibliography and Credits

See en:doc-credits.

Permissions explored, a practical way exists

Created by openacs irc community, last modified by Gustaf Neumann 20 Apr 2017, at 06:43 PM

This is from a discussion about permissions on OpenACS' irc (names changed) that took place sometime circa 2005.

ryan: How do I create a group containing other groups? 
dave: composition_rel 
ryan: For instance, I have 30 admin groups, and instead of adding user A to each one manually, I want to add her to one group, and thus all 30. 
dave: what are you trying to accomplish? 
dave: you can't do that 
ryan: crap. 
dave: it it totally non-intuitive 
dave: here is why :) 
dave: we have the Super Admin group 
dave: wait. dave: no it doesn't work 
ryan: So what is a composition_rel? I thought parties were supposed to be a super-set of groups. 
dave: let me explain :) 
dave: no 
ryan: ok, thanks :) 
dave: here is how it works. 
dave: Super Admin 
dave: then we have admins_a which is a component of super admins 
dave: maybe it can work. 
dave: question is dave: can a group dave: have a composition_rel to more than one other group 
ryan: So what is the definition of a component? 
dave: lets find out. 
dave: a component 
dave: so if Admin A is a component of Super Admin 
dave: then every member of A is a member of Super 
dave: which is NOT what you want. 
dave: you want ever member of super to have permission over all the groups "inside" it right? 
dave: but in this case every member of A would have permission over all the other components etc. 
dave: group are NOT for permissions. 
dave: that is the design weirdness 
ryan: huh? 
ryan: Now I am completely confused. 
dave: you can't use groups the way you want 
ryan: isn't the whole point of groups to avoid permissioning on individual users? 
jim: but you should be able to build a page that asks for a user and puts the user into the 30 groups 
dave: ryan, yes. 
dave: you they don't inherit the way you think 
ryan: so you set permissions on a group with a set of objects, then just add/remove users from the group, right? 
dave: its backwards to what you are thinking. 
dave: yes dave: that works 
dave: perfectly 
jim: so you can get what you want (convenience, non-tedium) but have to do it another way 
dave: but composition_rels dave: behave backwards 
dave: they are not useful for org chart models 
ryan: ah ok. 
dave: but I think it can work 
ryan: What is an application of composition_rels? 
dave: here is what you would do 
dave: if it works 
dave: create all your groups 
dave: Admin A, Admin B etc 
ryan: done. 
dave: then make one group 
dave: and give it a composition rel to all of those groups. 
dave: its upside down. 
dave: then if I am in the one group, i am in all of those other groups 
jim: so you're putting the one group into all the groups 
jim: that should work :) 
dave: yes d
ave: b/c its not _in_ 
dave: its a component. d
ave: i think that will trigger the correct permissions. 
ryan: how do components work in the data model - I want to understand this better. 
dave: well jim: it' dave: then I recommend you 1) read the acs-kenrel sql files 
jim: s a special kind of acs_rel 
dave: 2) run alot fo experiments in psql 
dave: 3) find a bug in the triggers 
dave: :) 
dave: that is how I figured it out. 
dave: sucks huh. 
dave: seriously the comments in the SQL files in acs-kernel are very illuminating. 
dave: also have you read permissions tediously explained? 
ryan: but you're it'll work? ryan: Yes. d
ave: i am not sure it'll work 
dave: but jim: we think it will work r
yan: but I could re-read it a fourth time 
dave: i don't see any rule 
dave: that disallows a group being a component of more than one group 
dave: if there is such a rule, it won't work. 
ryan: but compositions typically extend 'up' the chain of groups? 
dave: yes dave: that is what its for 
dave: so for example 
ryan: what is a practical example? 
dave: I have Main Subsite 
dave: and several other subsites 
dave: wait 
dave: actually this is an example of why it doesn't work :) 
dave: hmmm actually I have to check 
dave: not sure if susbsite groups are components of main subsite or not. 
dave: .... 
ryan: You see, I want to create this super group and then let the client admin the members... 
dave: ok there are no rel_constraints on a default install. so that should be safe. 
dave: yes d
ave: but its really a sub-group 
jim: try it with two groups and another group be a component of both groups... give each of the first two groups two different permissions... put a user into the component group... 
dave: a super group would not work the way you want. 
dave: here i what you do 
jim: see if the user has both perms 
dave: 1) create two groups 
dave: 2) create another group 
dave: 3) make the third group a component of the first two 
dave: 4) add someone to the third group 
dave: 5) check if they are a member of 1 and 2 
dave: for extra credit 
dave: apply a permission to 1 and 2 
dave: check if the members of 3 have permission on those things 
dave: if this works 
jim: 1-4 and the extra credit are what I just sed :) 
dave: i just solved the oldest OpenACS 4 riddle 
joe: As a topical aside, we changed the way we use groups in our subsites for dotcommunity. One for admins and one for members (so we don't use admin_rels). Then we use a composition rel to make admins of top level sites also admins of lower level sites, and to compositions in the opposite direction to make members of lower level sites members of the higher level ones too. 
dave: jim, yes :) 
jim: 5 is a good idea too 
ryan: ok, sounds good. Will test and get back to you. That would be very cool if it could work both ways. Obviously it is important to be able to have groups of groups... 
dave: joie: you could still use admin_rels to do that 
dave: it would work the same way. 
dave: ryan, yes if that works the way I expect it would be cool. 
dave: joie, so is the lower level admin group a component of the higher level admin group? 
joe: The problem with admin rels was that an admin of a subsite became an admin of the supersite, which isnt what we wanted. 
dave: or the other way around? 
dave: joie: yes dave: that is what I just said 
dave: the component rels go the wrong way 
dave: than what you would think intuitively 
dave: although mathematically they work correctly as specified. 
dave: damn PhDs 
dave: basically we need to write high-level functional wrappers over all this crap 
joe: So we have a composition rel going "down" for admins, and "up" for members. So the supersite admin group is a component of the subsite's admin group, and the subsite's members group is a component of the supersites members group. 
dave: so you can just call a tcl proc that tells you what happens (instead of what is does in the database) dave: joie: ah so it _does_ work. that is just what I told ryan-g to do 
dave: we need to write a tcl api to do that that is clear what is happening. 
jim: so members of the subsite become also members of the supersite 
dave: yes dave: which makes sense 
joe: Indeed. Then we frigged the acs-subsite members pages to do the "right thing". 
dave: but then admins of the subsite become admins of the supersite (if you use admin_rels) 
dave: which is why you don't want to do that. 
dave: joie: but you are right 
dave: and openacs is wrong 
dave: except I doubt there is an upgrade script that would work 
dave: damn PhDs 
dave: joie: 
why the hell didn't you tell us this before? :) 
dave: i have been trying to figure that out for 4 years 
joe: We have an upgrade script that does it somewhere. Rob wrote it. 
dave: you rock. 
joe: We weren't sure the new way was "right". 
dave: yeah dave: it is dave: b/c it makes sense dave: well 
dave: except dave: no its right. 
joe: We then got rid of admin_rels completely. 
joe: and only use membership_rels 
dave: b/c everyone expects it to work that way 
dave: yeah see 
dave: the problems is 
dave: all this stuff was experimental 
dave: and no one every finished it jim: you would need to be careful when deleting certain objects 
dave: except you did. 
dave: so now we can say "this is the way its supposed to work' We can say that because that is the way every one has expected it to work, but it never did 
dave: wow 
jim: make sure to remove all rels first then delete 
dave: i am so surprised. 
joe: The code is in the dotCommiunity download on The upgrade scripts aren't there though. 
dave: this is so cool. 
dave: get them! 
dave: :) 
joe: Heh. I'll talk to Rob about it tomorrow, as not sure what he implemented.

Marketing Team

Created by Caroline Meeks, last modified by Gustaf Neumann 20 Apr 2017, at 06:31 PM

OpenACS/.LRN Marketing Team 


The Marketing Team works to improve adoption and recognition of OpenACS including .LRN and other OpenACS projects.

Team Members

Team members are those people who are want  to be on the team or are proposed to be on the team, and willing to contribute to it, those members will be selected and ratified.  Terms and roles and responsibilities will be determined by the Marketing Team.  This process will be reviewed in a year to see if a more formal process is needed.


The Decision Making Process


  • Make it easy for motivated people to make decisions and implement them with minimal overhead.
  • Give the elected OCT and .LRN Board oversight over decisions without requiring too much time. 


  1. All members of the  OCT, .LRN Board and Marketing Team subscribe to a designated Forum, email list or Wiki page.
  2. Members of the Marketing Team are responsible for reaching out to the appropriate people while making major decisions. Depending on the decision this includes the greater OpenACS community, the OpenACS, .LRN Board and/or membership, and the .LRN Leadership committee.
  3. When an individual believes he has done an appropriate level of communication and consensus building on a decision he posts it in the designated place.
  4. If no one objects or calls for a vote the decision is confirmed in 2 weeks.
  5. If people agree they need take no action; however if there is disagreement or concern, any member of the Board, OCT or Marketing Team may “Call for a Vote” on any decision posted to the decision forum within 2 weeks of the post.
    • The .LRN Board should only call for a vote on things that relate to .LRN brand or and only the .LRN Board members vote.
    • The OCT should only call for a vote on things that relate to the OpenACS brand or or have a technical component that relates to the core (training materials might be an example). In an OpenACS related issue only OCT members vote. The role of the OCT maybe temporary as its charter was to deal with technical issues. However it is currently the only elected body of OpenACS. We will revisit this issue in a year.
    • In the rather unlikely situation where the distinction between OpenACS and .LRN is not clear and its controversial issue then either should call for a vote and both organizations should try to come to agreement. 
  6. A decision is upheld with 2 Yes and 0 No’s or a 2/3 majority of all members of the appropriate organization (either the OCT or .LRN Board).  This is usually 5 people.

Informal description of the process

If you have an idea you'd like to implement, discuss it with people who care, post in OpenACS and/or talk about it in an online or meeting or conference. . After you have listened, post your decision Then implement it.  Mostly we all want the same things and we need action.  The OCT and .LRN Board vote is available as an oversight and in those hopefully infrequent times when there is significant dissent.

This is an interim  process 

This process is based on a discussion at the Vienna Conference. There were many different ideas about whether the Marketing Team should be directly elected or report to the current elected boards. There was also discussion about two teams (OpenACS and .LRN) versus 1 team.  This process is the simplest we think could work and our intent is to revisit these questions in a year (or less) and refine the process as needed.

The Marketing Team will be formed when both the OCT and the .LRN Board approve its formation.


November 2nd 2006 (General Web Applications Focus - OpenACS)

Created by Dave Bauer, last modified by Gustaf Neumann 20 Apr 2017, at 06:30 PM

Keynotes and Schedule

Here is a list of topics people have expressed an interest in discussing at the LRN/OpenACS Fall Conference 2006

  • Future of OpenACS platform
    • XOTcl's role in OpenACS
    • More focused platform/products to give you a head start (dotLRN, dotCommunity)
    • What is the potential of a kernel rewrite?
    • Timeline for a lickable
    • Building an easy and complete installer
    • Supporting theming (better CSS/HTML local customizations)
    • Supporting accessibility requirements
    • Package Inheritance, better re-usability of code without forking
  • OpenACS Best Practices
    • Automated Testing: How and Why (Dave Bauer)
    • Package Design

For those interested in participating in the 'what is the potential of a kernel rewrite?' discussion, here is a set of questions to think about.  They are aimed at establishing the general point of view of those taking part in the discussion; ie. you don't need to answer them now or post a long article justifying your perspective.  Simply knowing your answers and being able to compare them directly to other people in the discussion will help us get something useful out of it.  You may also find it useful to consider these questions first from an optimistic perspective and separately with your own assessment of what is realistic (as people will have wildly different opinions of what is practical which may in turn hide the fact that people agree in principle).

First some questions to establish the context of your thinking:

What state is OpenACS in now?

  • Almost there or needs a lot of work?
  • In need of radical, non-backwards compatible improvements or more conservative, backwards comparable improvements?
  • In need of cross package architectural improvements or localized incremental improvements?
  • In need of documentation/idealogical changes or practical code changes?

Would you like to see all effort focused on incremental improvement? radical change? both in parallel (if so how should it be organized)?

What is OpenACS?

  • A toolkit (ie. complete components which can be brought together with glue code to make a complete system)?
  • A template (ie. a system with blanks that need to be filled in to complete it)?
  • A complete system (ie. only required configuration to get a finished system)?
  • A content management system (ie. mainly for publishing)?
  • A community / social networking system (ie. focused on delivering functionality to groups of non-admin users and enhancing the relationships between them)?
  • A collection of highly interactive apps (ie. a forum, survey tool, etc and some navigation to get between them)?

If your not sure what it is now, what do you think it should be?

Should OpenACS require local customization or be entirely configurable?

Second some high level questions to establish your priorities:

What are your aims for an improved OpenACS?

  • Easier exchange of code between developers? (ie consistent context)
  • More people using OpenACS in total?
  • Improve QA in releases?

How should the OpenACS architecture be decided? 

  • By TIPs (if so how will the work be funded)? 
  • By anyone how has the resources to write the supporting code (if so how will long term consistency be achieved)?

Thirdly some low level questions to get the basics of your practical proposals:

What do you like about OpenACS now?

What are the biggest problems with OpenACS now?

What is your OpenACS wishlist?

What are your OpenACS implementation plans in practice? 

2006 Fall Conference Submissions and Program

Created by Carl Robert Blesius, last modified by Gustaf Neumann 20 Apr 2017, at 06:29 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,, 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: and ACS

Philip Greenspun will talk about: 

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

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 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 and, 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

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)


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)


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


PostgreSQL Administration

Created by OpenACS community, last modified by Gustaf Neumann 20 Apr 2017, at 06:24 PM

Administrating PostgreSQL

Finding and fixing expensive queries

Probably the most important thing you can do to improve performance is rewriting queries to run quickly. Explain analyze is your friend. OpenACS also includes tools to track down slow queries, and you can ask PostgreSQL to give you information about queries as well.

First you should install the acs-developer-support package on a development or staging server. In general its not a good idea to keep the develop support tracking features running constantly on a production system, but you can turn it on temporarily to diagnose a problem on a production system. Once Developer Support is installed you can visit /ds/ on your site and turn on the developer support toolbar and database statistics. This will give you a total of the time for all queries for a page in the toolbar at the top of the page. If you click on the timing information you can see a page that lists every query run for that page. It should be easy to spot the slow running query in the list.

Once you find the slow running query you can copy it to your clipboard. Next you want to open a psql session on the database server, or use M-x sql-postgres most in emacs. Type "explain analyze" and paste the query after that. This will tell postgresql to run the query and show the query plan it will use.  The first thing to look for is a "Sequential Scan" on a large table. If the table is small (hundreds instead of thousands of rows, for example)  it is probably cheaper to scan the table than to load an index, but on large tables like "acs_objects". "users", "cr_items", a sequential scan is a sign of trouble.

PostgreSQL does not seem to generate good plans if you do a join with a view. In this case you should try to recreate the query using the tables in the view explicitly. This can speed up many queries. A common example is the cc_users view, or the cr_revisionsx view or the (x) view automatically created for subtypes of cr_revisions.

If you can't figure out why the query plan is slow, post it somewhere on the OpenACS forums or ask for advice in the #openacs irc channel. ( 

This will help you is you know which page is slow. If you don't know which is slow, but notice a high load on PostgreSQL on your server. You'll need to turn on the stats collector and command string collector in PostgreSQL. In the postgresql.conf file set

stats_start_collector true


stats_command_string true

and then do /etc/init.d/postgreql reload or pg_ctl reload to turn it on.


Once this is on you can execute "select * from pg_stat_activity" to see if there are any long running queries. Most queries will finish too quickly to notice in this table. The table includes the start time of the query and the process id of the backend executing the query. Sometimes you'll find a particularly bad query has been running for a very long time. Sometimes hours. If this happens you can stop the query by issuing a SIGINT signal to the process of the backend that is running that query. This will execute a cancel request to the backend and is the only safe way to stop a long running query. Do not kill the process or try to stop AOLserver. If you stop AOLserver the query will continue to run in the PostgreSQL backend process.


Tuning PostgreSQL

Tune postgres. (OPTIONAL). The default values for PostgreSQL are very conservative; we can safely change some of them and improve performance.

  1. Change the kernel parameter for maximum shared memory segment size to 128Mb: DAVEB: How current is this? Do modern 2.4 or 2.6 kernels have such low settings? This is highly dependent also on the amount of RAM on your server, most servers have gigabytes of RAM so adjust accordingly.

    [root root]# echo 134217728 >/proc/sys/kernel/shmmax
    [root root]#

    Make that change permanent by editing /etc/sysctl.conf to add these lines at the end:

    # increase shared memory limit for postgres
    kernel.shmmax = 134217728
  2. Edit the PostgreSQL config file, /usr/local/pgsql/data/postgresql.conf, to use more memory. These values should improve performance in most cases. (more information

    #       Shared Memory Size
    shared_buffers = 15200      # 2*max_connections, min 16
    #       Non-shared Memory Sizes
    sort_mem = 32168            # min 32
    #       Write-ahead log (WAL)
    checkpoint_segments = 3     # in logfile segments (16MB each), min 1

    Restart postgres (service postgresql restart) or (/etc/init.d/postgres restart) so that the changes take effect.

Performance tuning resources:

more information about PostgreSQL

Vacuuming multiple databases

If you are frequently creating and dropping various databases, using this in your crontab can help simplify setup:

vacuumdb --all --verbose

 Debugging queries

You can work directly with the database to do debugging steps like looking directly at tables and testing stored procedures. Start emacs. Type M-x sql-postgres. Press enter for server name and use $OPENACS_SERVICE_NAME for database name. You can use C-(up arrow) and C-(down arrow) for command history.

Hint: "Parse error near *" usually means that an xql file wasn't recognized, because the tcl file is choking on the *SQL* placeholder that it falls back on.



Source control

Created by OpenACS community, last modified by Gustaf Neumann 20 Apr 2017, at 06:22 PM

A Source Control system keeps track of all of the old versions of your files. It lets you recover old files, compare versions of file, and identify specific versions and groupings of files such as for controlled deployment.

the OpenACS reference platform and the repository (where you can get patched and development code in between releases) use cvs.

This is a place to add notes about other source controls and services used by the community..



First READ the official cvs rules 

These rules apply whichever source control tool OpenACS is using at the time. As of this writing, we are still using CVS.


  1. Don't mix bug fixes and new work
  2. Don't commit code before it is tested in a clean environment (new working copy)
  3. If possible, have someone else test your fix
  4. Branch when necessary, don't be afraid of it (but ask OCT first)

1. Don't mix bug fixes and

  • Be liberal with working copies. If you need to merge custom code into OpenACS, checkout a new working copy. Don't be stingy. Disk space is cheap. This prevents many problems by reducing accidental commits.
    • bottom line: don't mix bug fixes and new work! If you have a checkout of OpenACS you are developing some new package or feature for an existing package, and you run into a bug, fix the bug in a clean checkout of OpenACS. This is the only sane way to make sure you 1) actually fix the bug and 2) don't commit other changes that don't pertain to the bug fix.

2. Don't commit code before it is tested in clean environment

  • Review your changes before committing. If possible ask someone else to look. Do a cvs -qn update to see if the commit is not changing any files you did not expect. Use cvs diff to compare your changes to the respository.
  • So for committing code back to OpenACS from your local repository you should have 2 copies
    • 1) your local code
    • 2) a working copy of OpenACS HEAD
  • You should make all changes in the working copy and fully test it, running automated tests and checking to make sure you did not accidentally change something or add in client specific  code that is not reusable by OpenACS.

3. If possible, have someone else test your fix

  • this should be self-evident, a second pair of eyes always helps to find something you missed.
  • if another person is not possible, write an automated test, in fact, write one anyway! 

4. Branch when necessary, don't be afraid of it (but ask OCT first)

  • Large projects should be done on a branch. This is a pain with CVS, but it is the only sensible way to do this. Examples include any project that will span a major release cycle. It is the responsibility of the person doing the branch to keep up to date with HEAD and to merge and have the code tested. It is sensible to test in a working copy BEFORE committing the code.


Here is my heretical idea. I think we must have another branch. Here is how it would work.

1) developer has a working copy.

2) develop commits code to HEAD

3) code is merged to testing branch

4) code is tested

5) code is moved to release branch

Yes, this is extra work. I believe it is worth it. It is a serious pain with CVS. We started using for Subversion on our private repository and I saw immediate improvements in process. In this case I think having a well defined process AND tools that facilitate the process are key. OpenACS lacks a well defined process, discipline, and tools to facilitate the process. I believe we need to work harder to define this process and I would like to collaborate with the community on this.



Created by OpenACS community, last modified by Gustaf Neumann 20 Apr 2017, at 06:21 PM

Tcl is a Turing Complete, open-source, embeddable interpreted language. OpenACS additionally, uses these modules:

What others say about Tcl

  • Tcl (
  • testimonials on
  • Tcl the misunderstood
  • Tcl/Tk is perhaps the most mature of the dynamic languages, dating back to 1988. The evolution of the language over the last 20 years has been marked by passionate preservation of the balance between maintaining simplicity and utility with the adoption of new ideas and new techniques based on accumulated experience.

    Tcl/Tk is used in a number of prominent software systems including DejaGnu (e.g. used for testing the gcc compiler), Expect and AOLserver. The language is used by many scientific organizations including NASA as well as being used extensively in the commercial and financial sectors. ( )

Using Tcl

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

Popular tags

17 , 5.9.0 , 5.9.1 , ad_form , ADP , ajax , aolserver , asynchronous , bgdelivery , bootstrap , bugtracker , CentOS , COMET , CSP , CSRF , cvs , debian , emacs , fedora , FreeBSD , hstore , includelets , install , installation , installers , install-ns , javascript , libthread , linux , monitoring
No registered users in community xowiki
in last 30 minutes