Deme Presentation at Stanford Open Source (un)conference '08
1. Motivation
Architecture
Implementation
Demo
Deme Architecture
Todd Davies Mike Mintz
Stanford University
Stanford Open Source (un)conference ’08
Davies, Mintz Deme Architecture
6. Motivation
Architecture
Implementation
Demo
Objectives
Hierarchy of item types with shared functionality
Versioning for every item type
Not just documents
Highly collaborative
Every item type supports discussion
Very granular permissions
Easily Extensible
Embedded views
Davies, Mintz Deme Architecture
7. Motivation
Architecture
Implementation
Demo
Objectives
Hierarchy of item types with shared functionality
Versioning for every item type
Not just documents
Highly collaborative
Every item type supports discussion
Very granular permissions
Easily Extensible
Embedded views
Davies, Mintz Deme Architecture
8. Motivation
Architecture
Implementation
Demo
Objectives
Hierarchy of item types with shared functionality
Versioning for every item type
Not just documents
Highly collaborative
Every item type supports discussion
Very granular permissions
Easily Extensible
Embedded views
Davies, Mintz Deme Architecture
9. Motivation
Architecture
Implementation
Demo
Objectives
Hierarchy of item types with shared functionality
Versioning for every item type
Not just documents
Highly collaborative
Every item type supports discussion
Very granular permissions
Easily Extensible
Embedded views
Davies, Mintz Deme Architecture
10. Motivation
Architecture
Implementation
Demo
Objectives
Hierarchy of item types with shared functionality
Versioning for every item type
Not just documents
Highly collaborative
Every item type supports discussion
Very granular permissions
Easily Extensible
Embedded views
Davies, Mintz Deme Architecture
11. Motivation
Architecture
Implementation
Demo
Objectives
Hierarchy of item types with shared functionality
Versioning for every item type
Not just documents
Highly collaborative
Every item type supports discussion
Very granular permissions
Easily Extensible
Embedded views
Davies, Mintz Deme Architecture
13. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
What is an item?
All persistent data abstracted as items
E.g., documents, users, settings, etc.
Items are instances of “item types”
Item types specify structure of fields
Items provide values for fields
E.g. “Person” is item type, “Mike” and “Todd” are items of
that type
First Name Last Name
Mike Mintz
Todd Davies
Davies, Mintz Deme Architecture
14. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
What is an item?
All persistent data abstracted as items
E.g., documents, users, settings, etc.
Items are instances of “item types”
Item types specify structure of fields
Items provide values for fields
E.g. “Person” is item type, “Mike” and “Todd” are items of
that type
First Name Last Name
Mike Mintz
Todd Davies
Davies, Mintz Deme Architecture
15. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
What is an item?
All persistent data abstracted as items
E.g., documents, users, settings, etc.
Items are instances of “item types”
Item types specify structure of fields
Items provide values for fields
E.g. “Person” is item type, “Mike” and “Todd” are items of
that type
First Name Last Name
Mike Mintz
Todd Davies
Davies, Mintz Deme Architecture
16. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Item inheritance
Item types can inherit from other item types
“Item” is at top of the hierarchy
E.g., Item -> Document -> Comment
Item types inherit existing fields, add additional fields
Item: name, description
Document: name, description, body
Comment: name, description, body, commented_item
Davies, Mintz Deme Architecture
17. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Item inheritance
Item types can inherit from other item types
“Item” is at top of the hierarchy
E.g., Item -> Document -> Comment
Item types inherit existing fields, add additional fields
Item: name, description
Document: name, description, body
Comment: name, description, body, commented_item
Davies, Mintz Deme Architecture
20. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
All Items
All items share metadata structure:
Unique ID
Name
Description
Creator / Create Time
Updater / Update Time
Versions
Trashed?
Davies, Mintz Deme Architecture
21. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Agents
Agents
Item that can “do” things
(Given permissions, can appear as creator/updater)
Application user is always a specific Agent
Subclasses: Person, AnonymousAgent, Group
Groups
Collection of Agents
Members can share common permissions
Accounts
Channel of authentication
Subclasses: PasswordAccount, OpenId
Davies, Mintz Deme Architecture
22. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Agents
Agents
Item that can “do” things
(Given permissions, can appear as creator/updater)
Application user is always a specific Agent
Subclasses: Person, AnonymousAgent, Group
Groups
Collection of Agents
Members can share common permissions
Accounts
Channel of authentication
Subclasses: PasswordAccount, OpenId
Davies, Mintz Deme Architecture
23. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Agents
Agents
Item that can “do” things
(Given permissions, can appear as creator/updater)
Application user is always a specific Agent
Subclasses: Person, AnonymousAgent, Group
Groups
Collection of Agents
Members can share common permissions
Accounts
Channel of authentication
Subclasses: PasswordAccount, OpenId
Davies, Mintz Deme Architecture
24. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Collections
ItemSets
Arbitrary collection of items
Subclasses: Folio
Folio
Every group has one folio
Contains items shared among all members
Davies, Mintz Deme Architecture
25. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Collections
ItemSets
Arbitrary collection of items
Subclasses: Folio
Folio
Every group has one folio
Contains items shared among all members
Davies, Mintz Deme Architecture
26. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Documents
Main unit of collaborative work
Different item types for different formats
Subclasses
TextDocument
HtmlDocument
DjangoTemplateDocument
Comment
FileDocument
ImageDocument
Comments refer to other Items
Sometimes specific versions and locations
Davies, Mintz Deme Architecture
27. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Documents
Main unit of collaborative work
Different item types for different formats
Subclasses
TextDocument
HtmlDocument
DjangoTemplateDocument
Comment
FileDocument
ImageDocument
Comments refer to other Items
Sometimes specific versions and locations
Davies, Mintz Deme Architecture
28. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Documents
Main unit of collaborative work
Different item types for different formats
Subclasses
TextDocument
HtmlDocument
DjangoTemplateDocument
Comment
FileDocument
ImageDocument
Comments refer to other Items
Sometimes specific versions and locations
Davies, Mintz Deme Architecture
29. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Relationships
Explicit items for relationships between items
Subclasses: GroupMembership, ItemsetMembership
Davies, Mintz Deme Architecture
30. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Permissions
Specifies who can do what to which items
Agent
Ability
Item
Three levels
Direct
Groupwide
Default
Roles
Customizable sets of abilities
Davies, Mintz Deme Architecture
31. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Permissions
Specifies who can do what to which items
Agent
Ability
Item
Three levels
Direct
Groupwide
Default
Roles
Customizable sets of abilities
Davies, Mintz Deme Architecture
32. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Permissions
Specifies who can do what to which items
Agent
Ability
Item
Three levels
Direct
Groupwide
Default
Roles
Customizable sets of abilities
Davies, Mintz Deme Architecture
33. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Custom URLs
Users can create custom URLs to point to items
Each domain can have separate namespace of URLs
Davies, Mintz Deme Architecture
34. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Custom URLs
Users can create custom URLs to point to items
Each domain can have separate namespace of URLs
Davies, Mintz Deme Architecture
36. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
What is a viewer?
A Django class that processes browser or API requests
URLs that begin with /resource/ are routed to viewers
Viewers handle items of specific type
Viewers inherit from other viewers
Everything ultimately inherits from ItemViewer
ItemViewer is about 80% of view code
Davies, Mintz Deme Architecture
37. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
What is a viewer?
A Django class that processes browser or API requests
URLs that begin with /resource/ are routed to viewers
Viewers handle items of specific type
Viewers inherit from other viewers
Everything ultimately inherits from ItemViewer
ItemViewer is about 80% of view code
Davies, Mintz Deme Architecture
38. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
What is a viewer?
A Django class that processes browser or API requests
URLs that begin with /resource/ are routed to viewers
Viewers handle items of specific type
Viewers inherit from other viewers
Everything ultimately inherits from ItemViewer
ItemViewer is about 80% of view code
Davies, Mintz Deme Architecture
39. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
What is a viewer?
A Django class that processes browser or API requests
URLs that begin with /resource/ are routed to viewers
Viewers handle items of specific type
Viewers inherit from other viewers
Everything ultimately inherits from ItemViewer
ItemViewer is about 80% of view code
Davies, Mintz Deme Architecture
42. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Authentication
There is always an authenticated agent in a viewer
(If user does not log in, it is AnonymousAgent.)
Viewer takes care of checking permissions for
authenticated agent
Davies, Mintz Deme Architecture
43. Motivation
Item Structure
Architecture
Item Ontology
Implementation
Viewers
Demo
Authentication
There is always an authenticated agent in a viewer
(If user does not log in, it is AnonymousAgent.)
Viewer takes care of checking permissions for
authenticated agent
Davies, Mintz Deme Architecture
44. Motivation
Architecture
Implementation
Demo
Deme is written in Django
Deme is:
A collection of Django models
A system of hierarchical viewers that use Django templates
Additional components that handle Deme-specific features
Versioning
Permissions
Commenting
Davies, Mintz Deme Architecture
45. Motivation
Architecture
Implementation
Demo
Why Django?
Big developer community
Now supports multi-table inheritance
Davies, Mintz Deme Architecture
46. Motivation
Architecture
Implementation
Demo
Models –> Item types
A Django model corresponds to an item type
An item is:
A Django model instance
A row in a table
Davies, Mintz Deme Architecture
47. Motivation
Architecture
Implementation
Demo
Models –> Item types
A Django model corresponds to an item type
An item is:
A Django model instance
A row in a table
Davies, Mintz Deme Architecture
49. Motivation
Architecture
Implementation
Demo
Versioning
Every table has a dual version-table
Person
ID First Name Last Name
1 Mike Mintz
PersonVersion
ID Version First Name Last Name
1 1 Michael Mintz
1 2 Mike Mintz
Davies, Mintz Deme Architecture