Forum OpenACS Development: Response to Gratuitous use of acs_objects?

Posted by Peter Marklund on

First of all I would like to say that I am very glad to see that the OpenACS community has so many great minds who are willing to pick up with the design of the ACS object model where ArsDigita left off more than a year ago!

I agree with Lars that time to learn, time to develop with and performance are objectives that should be given top-priority. I also worked at ArsDigita so I have witnessed just how devastating over-engineering can be.

Here are my conclusions from this thread so far:

  • In the interest of being able to write generic services all user supplied content should be an ACS object. This conclusion rests on the assumption that the performance penalty from using tables with a huge number of rows is negligible or at least acceptable. I think Don Baccus puts it very well:
    "So in short any information in the system that is meant to be used in a general way should be an object. Only items that are tightly controlled within an application and that aren't meant to be exposed to other packages (search being another example) should be non-object tables."
  • The performance problems with the permissions API can somehow be dealt with by excluding ACS Objects that don't need permissioning (i.e. Bboard posts) from the permission tables (by means of a flag or otherwise, see Barry Brooks post above).
  • To be able to easily, scalably and generically write crucial services such as site-wide search and the "what's new" page, the columns name and url should be added to acs_objects. While I am writing about acs_object columns I should mention that I have started a thread on the topic of a logic site hierarchy here.