+ All Categories
Home > Documents > Open event presentation.3 2

Open event presentation.3 2

Date post: 14-Aug-2015
Category:
Upload: jorge-lopez-lago
View: 132 times
Download: 0 times
Share this document with a friend
Popular Tags:
96
Transcript
Page 1: Open event presentation.3 2
Page 2: Open event presentation.3 2

Open EventEmpowering culture and art organizations everywhere

July 2015 (v3.2)

Page 3: Open event presentation.3 2

Who am I?What have I done so far?

Page 4: Open event presentation.3 2

Engineer

Page 5: Open event presentation.3 2

Drupaleerclass DrupalCore{

public function __construct() { $this->god = new God();

}public function hack() {

$this->god->kill_kitten();}

}

class God {public function kill_kitten() {

$shelter = new Shelter(); $lightning = new Lightning(); $shelter->get_kitten->apply($lightning);

}}

Page 6: Open event presentation.3 2
Page 7: Open event presentation.3 2
Page 8: Open event presentation.3 2

Entrepreneur

Page 9: Open event presentation.3 2
Page 10: Open event presentation.3 2
Page 11: Open event presentation.3 2
Page 12: Open event presentation.3 2
Page 13: Open event presentation.3 2

The problemWhere everything started

Page 14: Open event presentation.3 2
Page 15: Open event presentation.3 2

The glass box

Page 16: Open event presentation.3 2

Open process

Page 17: Open event presentation.3 2

Open designs

Page 18: Open event presentation.3 2

Open data

Page 19: Open event presentation.3 2

Open use

Page 20: Open event presentation.3 2

Open platform

Page 21: Open event presentation.3 2

Open platform

Page 22: Open event presentation.3 2

Open platform

Page 23: Open event presentation.3 2

Ready to share!

Page 24: Open event presentation.3 2

Open Event in one sentence

Page 25: Open event presentation.3 2

Open Event in one sentence

Open Event CMS is a foundation for any cultural organisation wanting to manage and publish their events online.

Page 26: Open event presentation.3 2

Open Event in one sentence

Open Event CMS is a Drupal distribution that directly represents an Event Open Data Model and automatically publishes data through a self-documented API.

Page 27: Open event presentation.3 2

Open Event in one sentence

Open Event CMS is a Drupal distribution that directly represents an Event Open Data Model and automatically publishes data through a self-documented API.

Page 28: Open event presentation.3 2

Open Data Model

Page 29: Open event presentation.3 2

What is the ODM?

Our mandate is to make the arts available to everyone.

To fulfill this we should be actively opening up all our information and data in a way that it can be accessed, joined up, understood and re-used.

Rob Gethen Smith (Southbank Centre CIO)

Page 30: Open event presentation.3 2

CollaborationEvent Model (Ontology)Schema.orgClassification (Taxonomy)Single source (COPE)Future standard?

What is the ODM?

Page 31: Open event presentation.3 2

SC Website Strategy

The SC Website strategy is structured around three areas:

1) Open Data ⇒ ODM2) Open Source Code3) Open Process

Open Event addresses (1) and (2)

3) Open Process

2) Open Source Code

1) Open Data

Southbank Centre

Website

Page 32: Open event presentation.3 2

Logical model: Event

Page 33: Open event presentation.3 2

Distribution

Page 34: Open event presentation.3 2

Contribution

It is released as Open Source software with two levels of contribution possible:

1) A Drupal distribution for final users (it works out of the box).

2) A Github repository for developers, to contribute to the way the distribution is built.

Page 35: Open event presentation.3 2

Concept

As Open Software it has been developed with minimal assumptions about how it may be used or extended and it doesn’t force any custom views of the world or the data it manages.

It is built with flexibility and extensibility in mind.

Page 36: Open event presentation.3 2

Concept

⇒ Custom JSON output (Schema.org structure)⇒ Each content type is automatically mapped as a

Schema.org type⇒ Only fields with Schema.org mapping are outputed⇒ RestWS standard mapping still available (remove?)⇒ Granular/simple events (one date per event)⇒ Decent editorial experience out of the box

Page 37: Open event presentation.3 2

Concept

⇒ Minimize the requirement for entities to model references (eg: images)

⇒ Complex mappings inline with main type (not referenced)

Page 38: Open event presentation.3 2

What is in it? For end users

⇒ Download, install and use: distribution

⇒ Extensible and adaptable as any Drupal 7 site

⇒ Just add water read-only API approach

⇒ Create Once Publish Everywhere

Useful

Page 39: Open event presentation.3 2

What’s in it?

⇒ Drupal 7 (inc. Drupal 8 upgrade path)⇒ ODM & Schema.org⇒ Shared* ontologies (and taxonomy*)⇒ RestWS (API)⇒ Drupal Features⇒ Magic Glue! (custom code)

(*) Work in progress

Page 40: Open event presentation.3 2

Technical stackclosedprivate

closedpublic

openpublic

closedprivate

closedpublic

openpublic

Page 41: Open event presentation.3 2

SC example architecture

Page 42: Open event presentation.3 2

Schema.org types included

⇒ Event⇒ Person⇒ Place⇒ Organization

http://openevent.southbank.local/node/add

Page 43: Open event presentation.3 2

Schema.org (sub)types included

⇒ ImageObject⇒ DateTime⇒ PostalAddress⇒ GeoCoordinates⇒ Map⇒ OpeningHoursSpecification

Page 44: Open event presentation.3 2

Schema.org relations included

⇒ Event to Event⇒ Event to Person⇒ Event to Organization⇒ Event to Place⇒ Place to Place⇒ Person to Organization⇒ Organization to Place

Page 45: Open event presentation.3 2

Entity relationship diagram

Page 46: Open event presentation.3 2

Contrib modules: usual suspects

⇒ ctools⇒ date⇒ entity⇒ features⇒ strongarm⇒ token

Page 47: Open event presentation.3 2

Contrib modules: event

⇒ field_validation⇒ link⇒ relation⇒ relation_add

http://openevent.southbank.local/node/add/event

Page 48: Open event presentation.3 2

Contrib modules: person (and org.)

⇒ auto_entitylabel⇒ email⇒ Standard fields used for name components (given

name, family name, etc)

http://openevent.southbank.local/node/add/person http://openevent.southbank.local/node/add/organization

Page 49: Open event presentation.3 2

Contrib modules: place

⇒ addressfield⇒ geolocation⇒ geolocation_googlemaps⇒ office_hours

http://openevent.southbank.local/node/add/place

Page 50: Open event presentation.3 2

Contrib modules: utility

⇒ better_formats⇒ field_group⇒ filefield_sources⇒ taxonomy_access_fix

Page 51: Open event presentation.3 2

Features⇒ oe_components⇒ oe_event⇒ oe_organization⇒ oe_place⇒ oe_person

⇒ oe_relationship_location⇒ oe_relationship_performer

http://openevent.southbank.local/admin/structure/features

Page 52: Open event presentation.3 2

Editorial experience

Utility modules mainly used to improve the default editorial experience:⇒ Fields in tabs⇒ Field validations⇒ Taxonomy permissions⇒ Text formats⇒ File sources

Page 53: Open event presentation.3 2

API

Page 54: Open event presentation.3 2

Concept

⇒ Automatic read API

⇒ Self documented API

⇒ Self explanatory API paths

⇒ Install and go

⇒ Rest-ish

Page 55: Open event presentation.3 2

Contrib modules: API

⇒ restws⇒ schemaorg

Page 56: Open event presentation.3 2

Custom code: core

⇒ oe_rest_api_doc⇒ oe_schemaorg_rest⇒ oe_schemaorg_relation

Page 57: Open event presentation.3 2

Custom code: special mappings

⇒ oe_schemaorg_rest_address⇒ oe_schemaorg_rest_date⇒ oe_schemaorg_rest_duration⇒ oe_schemaorg_rest_geo⇒ oe_schemaorg_rest_image⇒ oe_schemaorg_rest_link⇒ oe_schemaorg_rest_office_hours⇒ oe_schemaorg_rest_taxonomy

Page 58: Open event presentation.3 2

Image in event

From schema.org/Thing

image: URL or ImageObject An image of the item. This can be a URL or a fully described ImageObject.

Page 59: Open event presentation.3 2

Image in event

If URL is used we lose a lot of information.

Where does the URL point to? An image file or an ImageObject?

Page 61: Open event presentation.3 2

Image in event (restws)

http://openevent.southbank.local/node/24.json field_image: [

{

file: {

uri: "http://openevent.local/file/34",

id: "34",

resource: "file"

},

alt: "alt string here.",

title: "title string here."

},

Page 62: Open event presentation.3 2

Image in event (openevent)

http://openevent.southbank.local/api/person/24.json image: [

{

contentUrl: "http://openevent.local/sites/default/files/imagefield_9aNBjg.gif",

alternateName: "alt string here.",

caption: "title string here."

},

Page 63: Open event presentation.3 2

Image in event

Page 64: Open event presentation.3 2

API documentation

http://openevent.southbank.local/api/doc/json

Fields listFields description

Page 65: Open event presentation.3 2
Page 66: Open event presentation.3 2
Page 67: Open event presentation.3 2
Page 68: Open event presentation.3 2

What is missing?

Page 69: Open event presentation.3 2

What is missing?

⇒ Drupal tests⇒ XML output⇒ RDF output⇒ API Create, Update, Delete (write queries)⇒ More Schema.org types⇒ Drupal 8 version

Page 70: Open event presentation.3 2

What did we learn?

Page 71: Open event presentation.3 2

Motivation

We standardized and abstracted the core functionality and released it as Open Source.

And then we built our CMS on top of it.

Page 72: Open event presentation.3 2

What did we learn?

It is a challenge to think and develop openly.

It is easy to simply share.

It is difficult to share openly.

It is worth the extra effort.

Page 73: Open event presentation.3 2

Implementation and use

Page 74: Open event presentation.3 2

Digital Officer

I could build you a website in a day!

Basic implementation

Page 75: Open event presentation.3 2

Front End Design/Dev

Digital Officer

A separate presentation layer is so cool*!

(*) Powerful and flexible.

Add a presentation layer

Page 76: Open event presentation.3 2

Digital Officer

The API can publish the data in the CMS to any application

Front End Design/Dev

Publish to other apps

Page 77: Open event presentation.3 2

Digital Officer

Front End Design/Dev

The API publishes open data in Schema.org format for other people to use

Publish to the internet

Page 78: Open event presentation.3 2

Database Officer

Digital Officer

Front End Design/Dev

The CMS now gets its content efficiently and accurately

Data can be automatically aggregated from any source

Integrate data sources

Page 79: Open event presentation.3 2

CMS Developer

Front End Design/Dev

I can extend the CMS to hold all the other content my organisation needs to publish

Database Officer

Customise the CMS

Page 80: Open event presentation.3 2

⇒ Search⇒ Caching⇒ E-commerce⇒ Microdata

CMS Developer

Front End Design/Dev

Database Officer

Bells and whistles

Digital Officer

Page 81: Open event presentation.3 2

Give it a go!

Page 82: Open event presentation.3 2

Requirements

⇒ Web server

⇒ PHP 5.6

⇒ Database (supported by Drupal)

⇒ Drush

⇒ Git (optional for developers)

Page 83: Open event presentation.3 2

Download and install

(1) Fetch the code from Drupal.org:

$:> drush dl openevent

Page 84: Open event presentation.3 2

Download and install

(2) Install the distribution:

$:> cd openevent

$:> drush si openevent --account-name=siteuser --account-pass=sitepass --db-url=mysql://dbuser:dbpass@localhost/dbname -y

Page 85: Open event presentation.3 2

Build and install

(1) Fetch the code from Github:

$:> git clone [email protected]:Southbank-Centre/OpenEvent.git www/drupal/profiles/openevent

Page 86: Open event presentation.3 2

Build and install

(2) Fetch the contrib code from Drupal.org and assemble the distribution:

$:> cd www/drupal

$:> cp profiles/openevent/local-openevent.make .

$:> drush make local-openevent.make -y

Page 87: Open event presentation.3 2

Build and install

(3) Install the distribution:

$:> drush si openevent --account-name=siteuser --account-pass=sitepass --db-url=mysql://dbuser:dbpass@localhost/dbname -y

Page 88: Open event presentation.3 2

Now what?

Page 89: Open event presentation.3 2

Now what?

⇒ Use it⇒ Improve it⇒ Expand it⇒ Create critical mass⇒ Drupal 8!

Page 90: Open event presentation.3 2

References

Page 91: Open event presentation.3 2

References

Drupal distribution:https://www.drupal.org/project/openevent

Github repository:https://github.com/Southbank-Centre/OpenEvent

Page 92: Open event presentation.3 2

References

Schema.org:http://schema.org

Protractor:http://angular.github.io/protractor

Page 93: Open event presentation.3 2

Credits

Page 94: Open event presentation.3 2

Credits

Jorge Lopez-Lago (Tech Lead at Onload)

Alex Bridge (Developer at Cogapp)

Dave Vernon (Developer at Southbank Centre)

Sam Murray (Developer at Southbank Centre)

Tassos Koutlas (Developer at Cogapp)

Southbank Centre

Page 95: Open event presentation.3 2

Sources

Some content and images shamelessly copied from Rob Gethen Smith’s “Open Event CMS June 2015” presentation (http://www.slideshare.net/RobGethenSmith/open-event-cms-june-2015)

Avatar images by Freepik.com

Page 96: Open event presentation.3 2

Questions?

Fancy some in depth tinkering after the session?

Thank you!


Recommended