[This is an old draft, flailing describe some of the motive use cases which Characteristics and Invariants will have to satisfy.]
Organization Objects are Namespaces for Managing Item Identity and Containment
Organization objects [would] provide contexts within which the identity (congruence) and containment relationships between constituent items are tracked, in order to provide for situation of items within the same and different spaces, tracking changes of object location for things like forwarding and event-based change notifications.
These ideas evolved from, among other things, my ZWiki structuring provisions and an old Organizing Content suite of proposals for the Zope Content Management Framework (CMF), on which Plone and other Zope-derived content management systems are based.
The "same" items can have different aspects in different contexts.
- An object can have different salient characteristics (elements) in different contexts:
- A person's contact info in work context vs. contact info in personal/home context
- Project resources - staff, documentation, funds, etc in support vs. development vs. marketing contexts
- various aspects of project progress - per subproject, per overall funding and schedule, etc
- Maintaining congruence of separate copies of an item can call for different regimes depending on both in-principle and physical tightness of coupling between the copies:
- Immediately contained within the same or different organization objects
- On the same or different station, and on an intermittently (eg, mobile) vs. always-connected station
- Having the same or different owners - someone who made a copy of someone else's item may not be privileged to get updates
- Providing for tracking development of an object and divergence of variants
- Where the contents of an item varies as the item develops
- As items can have different constituents in different contexts, they also can have different constituents at different times
- Version management could be provided - landmark versions, branching and merging, loose synchronization, etc - for any content
Organization Objects Are Responsible For Their Own Namespace
Organization objects are interfaces for external and internal connections to their contained items. They can maintain forwarding and expiration info about their constituents, or not. They maintain access policies and provide event registrations for updates about changes for, eg, synchronization. They are effectively executives responsible for maintaining the organization between their constituents and conveying that organization to the outside world. The conveyance is via network protocols.
Organization Objects Are, Themselves, Containable Items
The contextual spaces defined by organization objects are, themselves, subject to organization by containment within other organization objects. In this way they can provide for comprehensive organization of the networked world.