SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
Motivation
            Architecture
         Implementation
                  Demo




        Deme Architecture

       Todd Davies         Mike Mintz

               Stanford University


Stanford Open Source (un)conference ’08




          Davies, Mintz    Deme Architecture
Motivation
                            Architecture
                         Implementation
                                  Demo


Outline


  1   Motivation

  2   Architecture
        Item Structure
        Item Ontology
        Viewers

  3   Implementation

  4   Demo



                          Davies, Mintz    Deme Architecture
Motivation
                            Architecture
                         Implementation
                                  Demo


Outline


  1   Motivation

  2   Architecture
        Item Structure
        Item Ontology
        Viewers

  3   Implementation

  4   Demo



                          Davies, Mintz    Deme Architecture
Motivation
                            Architecture
                         Implementation
                                  Demo


Outline


  1   Motivation

  2   Architecture
        Item Structure
        Item Ontology
        Viewers

  3   Implementation

  4   Demo



                          Davies, Mintz    Deme Architecture
Motivation
                            Architecture
                         Implementation
                                  Demo


Outline


  1   Motivation

  2   Architecture
        Item Structure
        Item Ontology
        Viewers

  3   Implementation

  4   Demo



                          Davies, Mintz    Deme Architecture
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
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
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
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
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
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
Motivation
                                           Item Structure
                            Architecture
                                           Item Ontology
                         Implementation
                                           Viewers
                                  Demo


Outline


  1   Motivation

  2   Architecture
        Item Structure
        Item Ontology
        Viewers

  3   Implementation

  4   Demo



                          Davies, Mintz    Deme Architecture
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
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
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
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
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
Motivation
                                           Item Structure
                            Architecture
                                           Item Ontology
                         Implementation
                                           Viewers
                                  Demo


Outline


  1   Motivation

  2   Architecture
        Item Structure
        Item Ontology
        Viewers

  3   Implementation

  4   Demo



                          Davies, Mintz    Deme Architecture
Motivation
                                       Item Structure
                        Architecture
                                       Item Ontology
                     Implementation
                                       Viewers
                              Demo


Overview

     Agents
     Collections
     Documents
     Relationships
     Permissions
     URLs




                      Davies, Mintz    Deme Architecture
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
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
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
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
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
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
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
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
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
Motivation
                                        Item Structure
                         Architecture
                                        Item Ontology
                      Implementation
                                        Viewers
                               Demo


Relationships




     Explicit items for relationships between items
     Subclasses: GroupMembership, ItemsetMembership




                       Davies, Mintz    Deme Architecture
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
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
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
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
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
Motivation
                                           Item Structure
                            Architecture
                                           Item Ontology
                         Implementation
                                           Viewers
                                  Demo


Outline


  1   Motivation

  2   Architecture
        Item Structure
        Item Ontology
        Viewers

  3   Implementation

  4   Demo



                          Davies, Mintz    Deme Architecture
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
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
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
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
Motivation
                                         Item Structure
                        Architecture
                                         Item Ontology
                     Implementation
                                         Viewers
                              Demo


RESTful URLs


    Entry actions
        /resource/<viewer>/<id>/<action>
        E.g., /resource/person/5/edit
        E.g., /resource/person/5
    Collection actions
        /resource/<viewer>/<action>
        E.g., /resource/person/new
        E.g., /resource/person
        E.g., /resource/person.json




                         Davies, Mintz   Deme Architecture
Motivation
                                         Item Structure
                        Architecture
                                         Item Ontology
                     Implementation
                                         Viewers
                              Demo


RESTful URLs


    Entry actions
        /resource/<viewer>/<id>/<action>
        E.g., /resource/person/5/edit
        E.g., /resource/person/5
    Collection actions
        /resource/<viewer>/<action>
        E.g., /resource/person/new
        E.g., /resource/person
        E.g., /resource/person.json




                         Davies, Mintz   Deme Architecture
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
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
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
Motivation
                       Architecture
                    Implementation
                             Demo


Why Django?




    Big developer community
    Now supports multi-table inheritance




                     Davies, Mintz    Deme Architecture
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
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
Motivation
                     Architecture
                  Implementation
                           Demo


Database Visual




                   Davies, Mintz    Deme Architecture
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
Motivation
                Architecture
             Implementation
                      Demo


Demo time!




              Davies, Mintz    Deme Architecture

Weitere ähnliche Inhalte

Ähnlich wie Deme Presentation at Stanford Open Source (un)conference '08

[Webinar] Introduction to the Nuxeo Platform
[Webinar] Introduction to the Nuxeo Platform[Webinar] Introduction to the Nuxeo Platform
[Webinar] Introduction to the Nuxeo Platform
Nuxeo
 
Affordances analysis prezi 3
Affordances analysis prezi 3Affordances analysis prezi 3
Affordances analysis prezi 3
MaryCog
 

Ähnlich wie Deme Presentation at Stanford Open Source (un)conference '08 (15)

Software Series ]5
Software Series  ]5Software Series  ]5
Software Series ]5
 
Domain Analysis & Data Modeling
Domain Analysis & Data ModelingDomain Analysis & Data Modeling
Domain Analysis & Data Modeling
 
Software Architecture is written with lowercase a
Software Architecture is written with lowercase aSoftware Architecture is written with lowercase a
Software Architecture is written with lowercase a
 
The Three Core Topic Types
The Three Core Topic TypesThe Three Core Topic Types
The Three Core Topic Types
 
Development with TYPO3 5.0
Development with TYPO3 5.0Development with TYPO3 5.0
Development with TYPO3 5.0
 
[Webinar] Introduction to the Nuxeo Platform
[Webinar] Introduction to the Nuxeo Platform[Webinar] Introduction to the Nuxeo Platform
[Webinar] Introduction to the Nuxeo Platform
 
oops
oopsoops
oops
 
Highlights on most interesting RecSys papers - Elena Smirnova, Lowik Chanusso...
Highlights on most interesting RecSys papers - Elena Smirnova, Lowik Chanusso...Highlights on most interesting RecSys papers - Elena Smirnova, Lowik Chanusso...
Highlights on most interesting RecSys papers - Elena Smirnova, Lowik Chanusso...
 
Affordances analysis prezi 3
Affordances analysis prezi 3Affordances analysis prezi 3
Affordances analysis prezi 3
 
Preservation Planning: Choosing a suitable digital preservation strategy
Preservation Planning: Choosing a suitable digital preservation strategyPreservation Planning: Choosing a suitable digital preservation strategy
Preservation Planning: Choosing a suitable digital preservation strategy
 
Web 2.0 And The End Of DITA
Web 2.0 And The End Of DITAWeb 2.0 And The End Of DITA
Web 2.0 And The End Of DITA
 
Domain driven design and model driven development
Domain driven design and model driven developmentDomain driven design and model driven development
Domain driven design and model driven development
 
[Webinar] Nuxeo Platform 5.6 Overview
[Webinar] Nuxeo Platform 5.6 Overview[Webinar] Nuxeo Platform 5.6 Overview
[Webinar] Nuxeo Platform 5.6 Overview
 
NISO Webinar: Metadata for Preservation: A Digital Object's Best Friend
NISO Webinar: Metadata for Preservation: A Digital Object's Best Friend NISO Webinar: Metadata for Preservation: A Digital Object's Best Friend
NISO Webinar: Metadata for Preservation: A Digital Object's Best Friend
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in php
 

Kürzlich hochgeladen

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 

Kürzlich hochgeladen (20)

2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Plant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxPlant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptx
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 

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
  • 2. Motivation Architecture Implementation Demo Outline 1 Motivation 2 Architecture Item Structure Item Ontology Viewers 3 Implementation 4 Demo Davies, Mintz Deme Architecture
  • 3. Motivation Architecture Implementation Demo Outline 1 Motivation 2 Architecture Item Structure Item Ontology Viewers 3 Implementation 4 Demo Davies, Mintz Deme Architecture
  • 4. Motivation Architecture Implementation Demo Outline 1 Motivation 2 Architecture Item Structure Item Ontology Viewers 3 Implementation 4 Demo Davies, Mintz Deme Architecture
  • 5. Motivation Architecture Implementation Demo Outline 1 Motivation 2 Architecture Item Structure Item Ontology Viewers 3 Implementation 4 Demo 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
  • 12. Motivation Item Structure Architecture Item Ontology Implementation Viewers Demo Outline 1 Motivation 2 Architecture Item Structure Item Ontology Viewers 3 Implementation 4 Demo 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
  • 18. Motivation Item Structure Architecture Item Ontology Implementation Viewers Demo Outline 1 Motivation 2 Architecture Item Structure Item Ontology Viewers 3 Implementation 4 Demo Davies, Mintz Deme Architecture
  • 19. Motivation Item Structure Architecture Item Ontology Implementation Viewers Demo Overview Agents Collections Documents Relationships Permissions URLs 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
  • 35. Motivation Item Structure Architecture Item Ontology Implementation Viewers Demo Outline 1 Motivation 2 Architecture Item Structure Item Ontology Viewers 3 Implementation 4 Demo 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
  • 40. Motivation Item Structure Architecture Item Ontology Implementation Viewers Demo RESTful URLs Entry actions /resource/<viewer>/<id>/<action> E.g., /resource/person/5/edit E.g., /resource/person/5 Collection actions /resource/<viewer>/<action> E.g., /resource/person/new E.g., /resource/person E.g., /resource/person.json Davies, Mintz Deme Architecture
  • 41. Motivation Item Structure Architecture Item Ontology Implementation Viewers Demo RESTful URLs Entry actions /resource/<viewer>/<id>/<action> E.g., /resource/person/5/edit E.g., /resource/person/5 Collection actions /resource/<viewer>/<action> E.g., /resource/person/new E.g., /resource/person E.g., /resource/person.json 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
  • 48. Motivation Architecture Implementation Demo Database Visual 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
  • 50. Motivation Architecture Implementation Demo Demo time! Davies, Mintz Deme Architecture