SlideShare a Scribd company logo
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

More Related Content

Similar to Deme Presentation at Stanford Open Source (un)conference '08

Software Series ]5
Software Series  ]5Software Series  ]5
Software Series ]5
Mohamed Yaser
 
Domain Analysis & Data Modeling
Domain Analysis & Data ModelingDomain Analysis & Data Modeling
Domain Analysis & Data Modeling
Eelco Visser
 
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
Ruben Gonzalez Blanco
 
The Three Core Topic Types
The Three Core Topic TypesThe Three Core Topic Types
The Three Core Topic Types
Marcia Riefer Johnston
 
Development with TYPO3 5.0
Development with TYPO3 5.0Development with TYPO3 5.0
Development with TYPO3 5.0
Robert Lemke
 
[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
 
oops
oopsoops
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...
recsysfr
 
Affordances analysis prezi 3
Affordances analysis prezi 3Affordances analysis prezi 3
Affordances analysis prezi 3
MaryCog
 
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
GarethKnight
 
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
Joe Gollner
 
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
Dmitry Geyzersky
 
[Webinar] Nuxeo Platform 5.6 Overview
[Webinar] Nuxeo Platform 5.6 Overview[Webinar] Nuxeo Platform 5.6 Overview
[Webinar] Nuxeo Platform 5.6 Overview
Nuxeo
 
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
National Information Standards Organization (NISO)
 
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
Leonardo Proietti
 

Similar to 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
 

Recently uploaded

Azure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHatAzure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHat
Scholarhat
 
How to Make a Field Mandatory in Odoo 17
How to Make a Field Mandatory in Odoo 17How to Make a Field Mandatory in Odoo 17
How to Make a Field Mandatory in Odoo 17
Celine George
 
Smart-Money for SMC traders good time and ICT
Smart-Money for SMC traders good time and ICTSmart-Money for SMC traders good time and ICT
Smart-Money for SMC traders good time and ICT
simonomuemu
 
World environment day ppt For 5 June 2024
World environment day ppt For 5 June 2024World environment day ppt For 5 June 2024
World environment day ppt For 5 June 2024
ak6969907
 
How to Manage Your Lost Opportunities in Odoo 17 CRM
How to Manage Your Lost Opportunities in Odoo 17 CRMHow to Manage Your Lost Opportunities in Odoo 17 CRM
How to Manage Your Lost Opportunities in Odoo 17 CRM
Celine George
 
Life upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for studentLife upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for student
NgcHiNguyn25
 
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdfANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
Priyankaranawat4
 
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
National Information Standards Organization (NISO)
 
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdfবাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
eBook.com.bd (প্রয়োজনীয় বাংলা বই)
 
BBR 2024 Summer Sessions Interview Training
BBR  2024 Summer Sessions Interview TrainingBBR  2024 Summer Sessions Interview Training
BBR 2024 Summer Sessions Interview Training
Katrina Pritchard
 
Executive Directors Chat Leveraging AI for Diversity, Equity, and Inclusion
Executive Directors Chat  Leveraging AI for Diversity, Equity, and InclusionExecutive Directors Chat  Leveraging AI for Diversity, Equity, and Inclusion
Executive Directors Chat Leveraging AI for Diversity, Equity, and Inclusion
TechSoup
 
How to Build a Module in Odoo 17 Using the Scaffold Method
How to Build a Module in Odoo 17 Using the Scaffold MethodHow to Build a Module in Odoo 17 Using the Scaffold Method
How to Build a Module in Odoo 17 Using the Scaffold Method
Celine George
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
Nguyen Thanh Tu Collection
 
The basics of sentences session 6pptx.pptx
The basics of sentences session 6pptx.pptxThe basics of sentences session 6pptx.pptx
The basics of sentences session 6pptx.pptx
heathfieldcps1
 
DRUGS AND ITS classification slide share
DRUGS AND ITS classification slide shareDRUGS AND ITS classification slide share
DRUGS AND ITS classification slide share
taiba qazi
 
Film vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movieFilm vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movie
Nicholas Montgomery
 
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptxChapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Advanced Java[Extra Concepts, Not Difficult].docx
Advanced Java[Extra Concepts, Not Difficult].docxAdvanced Java[Extra Concepts, Not Difficult].docx
Advanced Java[Extra Concepts, Not Difficult].docx
adhitya5119
 
MARY JANE WILSON, A “BOA MÃE” .
MARY JANE WILSON, A “BOA MÃE”           .MARY JANE WILSON, A “BOA MÃE”           .
MARY JANE WILSON, A “BOA MÃE” .
Colégio Santa Teresinha
 
Your Skill Boost Masterclass: Strategies for Effective Upskilling
Your Skill Boost Masterclass: Strategies for Effective UpskillingYour Skill Boost Masterclass: Strategies for Effective Upskilling
Your Skill Boost Masterclass: Strategies for Effective Upskilling
Excellence Foundation for South Sudan
 

Recently uploaded (20)

Azure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHatAzure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHat
 
How to Make a Field Mandatory in Odoo 17
How to Make a Field Mandatory in Odoo 17How to Make a Field Mandatory in Odoo 17
How to Make a Field Mandatory in Odoo 17
 
Smart-Money for SMC traders good time and ICT
Smart-Money for SMC traders good time and ICTSmart-Money for SMC traders good time and ICT
Smart-Money for SMC traders good time and ICT
 
World environment day ppt For 5 June 2024
World environment day ppt For 5 June 2024World environment day ppt For 5 June 2024
World environment day ppt For 5 June 2024
 
How to Manage Your Lost Opportunities in Odoo 17 CRM
How to Manage Your Lost Opportunities in Odoo 17 CRMHow to Manage Your Lost Opportunities in Odoo 17 CRM
How to Manage Your Lost Opportunities in Odoo 17 CRM
 
Life upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for studentLife upper-Intermediate B2 Workbook for student
Life upper-Intermediate B2 Workbook for student
 
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdfANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
 
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
Pollock and Snow "DEIA in the Scholarly Landscape, Session One: Setting Expec...
 
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdfবাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
 
BBR 2024 Summer Sessions Interview Training
BBR  2024 Summer Sessions Interview TrainingBBR  2024 Summer Sessions Interview Training
BBR 2024 Summer Sessions Interview Training
 
Executive Directors Chat Leveraging AI for Diversity, Equity, and Inclusion
Executive Directors Chat  Leveraging AI for Diversity, Equity, and InclusionExecutive Directors Chat  Leveraging AI for Diversity, Equity, and Inclusion
Executive Directors Chat Leveraging AI for Diversity, Equity, and Inclusion
 
How to Build a Module in Odoo 17 Using the Scaffold Method
How to Build a Module in Odoo 17 Using the Scaffold MethodHow to Build a Module in Odoo 17 Using the Scaffold Method
How to Build a Module in Odoo 17 Using the Scaffold Method
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
 
The basics of sentences session 6pptx.pptx
The basics of sentences session 6pptx.pptxThe basics of sentences session 6pptx.pptx
The basics of sentences session 6pptx.pptx
 
DRUGS AND ITS classification slide share
DRUGS AND ITS classification slide shareDRUGS AND ITS classification slide share
DRUGS AND ITS classification slide share
 
Film vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movieFilm vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movie
 
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptxChapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
 
Advanced Java[Extra Concepts, Not Difficult].docx
Advanced Java[Extra Concepts, Not Difficult].docxAdvanced Java[Extra Concepts, Not Difficult].docx
Advanced Java[Extra Concepts, Not Difficult].docx
 
MARY JANE WILSON, A “BOA MÃE” .
MARY JANE WILSON, A “BOA MÃE”           .MARY JANE WILSON, A “BOA MÃE”           .
MARY JANE WILSON, A “BOA MÃE” .
 
Your Skill Boost Masterclass: Strategies for Effective Upskilling
Your Skill Boost Masterclass: Strategies for Effective UpskillingYour Skill Boost Masterclass: Strategies for Effective Upskilling
Your Skill Boost Masterclass: Strategies for Effective Upskilling
 

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