Forum OpenACS Development: Re: Current best practises: Dynamic Attributes, Package Linking, Callbacks

I think my main objection to using subsites functionality for stuff like this is that it represents a form of feature creep in so far as the subsites functionality is conceived (and named) to support literally subordinate sites. In the purest sense therefore this could be as simple as each country within a pan-national organisation, or each branch within a national organisation, or each state within a US organisation.

The subsite itself is an acs-object and inherits permissions. There are groups created automatically (I believe) to help manage the permissioning. The whole thing is geared up to integrating multiple similar, though functionally seperate, sites under one umbrella whilst benefitting from the fully integrated central services of the OpenACS. If not careful we end up with thousands of obscurely named parties in the system, and with thousands of superfluous and confusing site nodes. We become confused as to which hierarchy serves which purpose!

Subsites also follows an object model philosophy and permits limitless layering. Flexible indeed but the arithmetic will always beat us in the end.

With issues such as the one under discussion (of having a file-storage folder connected with a project), It just 'feels' wrong to use the subsites functionality to solve these kinds of problems - hugely flexible though it is. I really believe that the best solution is to keep it simple and have the folder_id as a property of the project.

Project manager could make a request of the File-Storage module that it create a folder at project creation time and set the context_id of the folder to inherit from the project's object_id. Any sub folders created in the File-Storage module would then inherit correctly. Aggregations of projects (multi-layering of projects and sub-projects which is supported in the datamodel and will be implemented fully soon) will then take care automatically of the greater hierarchy without complexity or overhead.

This sceme could also be made to work for creating a project specific forum. We surely wouldn't want a whole new set of subsites - we'll have hierarchy overload!! :-o

Also, who knows what other services might need integrating in the future. Dynamic types potentially provides us with a method of dynamically extending the project manager data model (or that of any other package) to support links with objects created by other modules. This is in line with the core thrust of OpenACS which is for 'scaleable' web applications. That means erring on the side of a sql based philosophy rather than going too far down the object orientated route.

Regards
Richard