SlideShare a Scribd company logo
1 of 8
Download to read offline
Supporting Stateful and 
Stateless Clients 
Joyce Stack 
! 
@MendeleyStack 
Maintaining application state on multiple clients using a stateless protocol is difficult.
Our Vision 
• Our mission is to transform the world of academic 
research…. 
• by delivering social collaboration tools 
• forming virtual communities and 
• driving innovation via our open platform 
We wish to support industry and accelerate the progress of science with: 
• Reference management tools 
• Social network - thousands of professional research groups 
• Provides access to our extensive catalogue & document statistics. 
• These article level metrics can help researchers understand their scientific impact better of papers and how their papers are cited e.g. leads to 
funding or coveted positions in faculties
What do we mean by state? 
• Application state 
• client-side state e.g. iOS and Android clients 
• Resource state 
• server-side state e.g. online web library 
Application state: 
• Unrealistic to have some clients be able to round trip to the server all the time. 
! 
Resource state: 
• We have other online clients that change state frequently.
Offline is hard 
Supporting offline is a major requirement from our users (discuss researchers) 
! 
We have cases of long offline periods (day, weeks, months and even seen years) 
Application state drifts from server state due to multiple mutating clients so this leads to distributed state.
PATCH over PUT 
{ 
"title": "Mutate iOS" 
} 
If-Unmodified-Since: Thu, 04 Sep 2014 13:43:01 GMT 
{ 
"title": "Mutate JS" 
} 
• Resources have large representations 
• Using a PUT is cumbersome and uses bandwidth 
• Seldom going to change ALL metadata about a document. 
• Prevent clients from making changes that has been changed by someone else since retrieving it by using preconditions 
• Minimize race conditions
Sync only differences 
• modified_since & deleted_since filtering 
! 
GET /documents?modified_since=2014-04-24T16:38:02Z 
GET /documents?deleted_since=2014-04-24T16:38:02Z 
! 
200 OK 
[ 
.. documents 
] 
We have a large collection of resources which don’t change all too frequently. 
Clients shouldn’t have to send full JSON bodies over the wire just to stay up to date with latest changes, especially mobile. 
Google’s Neil Fraser published a paper in 2009 about Differential Synchronisation. 
Implementing real-time multi-user synchronisation systems is difficult and even harder to explain. 
We know, we tried. So we needed something simpler.
Arbitrary client data 
Folders: 
! 
{ 
"client_data": "{"sync_files":"notset"}", 
} 
! 
! 
Profiles: 
{ 
"client_data": "{"sync_files": true, 
"sync_publications": false}” 
} 
Allow clients to set an arbitrary blob of data in a field associated with a resource. 
Tactical approach - settings associated with a particular resource, required by one client. 
Avoiding clients having two back ends. 
May roll it out to all other clients in the future. 
!
Questions? 
! 
@MendeleyStack

More Related Content

What's hot (6)

SQL vs NoSQL
SQL vs NoSQLSQL vs NoSQL
SQL vs NoSQL
 
Database basics
Database basicsDatabase basics
Database basics
 
Rest vs Soap
Rest vs SoapRest vs Soap
Rest vs Soap
 
smashdocs - simplifying document reviews compared to WORD or GoogleDocs
smashdocs - simplifying document reviews compared to WORD or GoogleDocssmashdocs - simplifying document reviews compared to WORD or GoogleDocs
smashdocs - simplifying document reviews compared to WORD or GoogleDocs
 
Soap Vs Rest
Soap Vs RestSoap Vs Rest
Soap Vs Rest
 
Nodejs - ITVoyagers
Nodejs - ITVoyagersNodejs - ITVoyagers
Nodejs - ITVoyagers
 

Viewers also liked

FBIC Global Deborah Weinswig New Tech Presentation Dec. 3 2014
FBIC Global Deborah Weinswig New Tech Presentation Dec. 3 2014FBIC Global Deborah Weinswig New Tech Presentation Dec. 3 2014
FBIC Global Deborah Weinswig New Tech Presentation Dec. 3 2014Deborah Weinswig
 
Stream Based Architecture
Stream Based ArchitectureStream Based Architecture
Stream Based ArchitectureTom Michiels
 
Big Data Open Source Security LLC: Realtime log analysis with Mesos, Docker, ...
Big Data Open Source Security LLC: Realtime log analysis with Mesos, Docker, ...Big Data Open Source Security LLC: Realtime log analysis with Mesos, Docker, ...
Big Data Open Source Security LLC: Realtime log analysis with Mesos, Docker, ...DataStax Academy
 
Fast dataarchitecture
Fast dataarchitectureFast dataarchitecture
Fast dataarchitectureKnoldus Inc.
 
Kafka spark cassandra webinar feb 16 2016
Kafka spark cassandra   webinar feb 16 2016 Kafka spark cassandra   webinar feb 16 2016
Kafka spark cassandra webinar feb 16 2016 Hiromitsu Komatsu
 
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, ScalaLambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, ScalaHelena Edelson
 
Building Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Building Reactive Fast Data & the Data Lake with Akka, Kafka, SparkBuilding Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Building Reactive Fast Data & the Data Lake with Akka, Kafka, SparkTodd Fritz
 

Viewers also liked (7)

FBIC Global Deborah Weinswig New Tech Presentation Dec. 3 2014
FBIC Global Deborah Weinswig New Tech Presentation Dec. 3 2014FBIC Global Deborah Weinswig New Tech Presentation Dec. 3 2014
FBIC Global Deborah Weinswig New Tech Presentation Dec. 3 2014
 
Stream Based Architecture
Stream Based ArchitectureStream Based Architecture
Stream Based Architecture
 
Big Data Open Source Security LLC: Realtime log analysis with Mesos, Docker, ...
Big Data Open Source Security LLC: Realtime log analysis with Mesos, Docker, ...Big Data Open Source Security LLC: Realtime log analysis with Mesos, Docker, ...
Big Data Open Source Security LLC: Realtime log analysis with Mesos, Docker, ...
 
Fast dataarchitecture
Fast dataarchitectureFast dataarchitecture
Fast dataarchitecture
 
Kafka spark cassandra webinar feb 16 2016
Kafka spark cassandra   webinar feb 16 2016 Kafka spark cassandra   webinar feb 16 2016
Kafka spark cassandra webinar feb 16 2016
 
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, ScalaLambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
 
Building Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Building Reactive Fast Data & the Data Lake with Akka, Kafka, SparkBuilding Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Building Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
 

Similar to Supporting Stateful and Stateless Clients

Why Bad Data May Be Your Best Opportunity
Why Bad Data May Be Your Best OpportunityWhy Bad Data May Be Your Best Opportunity
Why Bad Data May Be Your Best OpportunityZach Gardner
 
Jayashree-4.5 Years Exp on JAVA-J2EE
Jayashree-4.5 Years Exp on JAVA-J2EEJayashree-4.5 Years Exp on JAVA-J2EE
Jayashree-4.5 Years Exp on JAVA-J2EEJayashree Panda
 
ASTQB washington-sept-2015
ASTQB washington-sept-2015ASTQB washington-sept-2015
ASTQB washington-sept-2015Dan Boutin
 
Postgres Foreign Data Wrappers
Postgres Foreign Data Wrappers  Postgres Foreign Data Wrappers
Postgres Foreign Data Wrappers EDB
 
USG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysUSG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysEric Sembrat
 
Delivering Changes for Applications and Databases
Delivering Changes for Applications and DatabasesDelivering Changes for Applications and Databases
Delivering Changes for Applications and DatabasesMiguel Alho
 
Service Architectures at Scale
Service Architectures at ScaleService Architectures at Scale
Service Architectures at ScaleRandy Shoup
 
Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014Kallex
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYCChristian Posta
 
Resume_Harikrishna_Tekkam (1)
Resume_Harikrishna_Tekkam (1)Resume_Harikrishna_Tekkam (1)
Resume_Harikrishna_Tekkam (1)Harikrishna Snr
 
Migrate a successful transactional database to azure
Migrate a successful transactional database to azureMigrate a successful transactional database to azure
Migrate a successful transactional database to azureIke Ellis
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sangerChris Dwan
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Woodruff Solutions LLC
 
Resume - Deepak v.s
Resume -  Deepak v.sResume -  Deepak v.s
Resume - Deepak v.sDeepak V S
 

Similar to Supporting Stateful and Stateless Clients (20)

Why Bad Data May Be Your Best Opportunity
Why Bad Data May Be Your Best OpportunityWhy Bad Data May Be Your Best Opportunity
Why Bad Data May Be Your Best Opportunity
 
Jayashree-4.5 Years Exp on JAVA-J2EE
Jayashree-4.5 Years Exp on JAVA-J2EEJayashree-4.5 Years Exp on JAVA-J2EE
Jayashree-4.5 Years Exp on JAVA-J2EE
 
ASTQB washington-sept-2015
ASTQB washington-sept-2015ASTQB washington-sept-2015
ASTQB washington-sept-2015
 
Postgres Foreign Data Wrappers
Postgres Foreign Data Wrappers  Postgres Foreign Data Wrappers
Postgres Foreign Data Wrappers
 
USG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysUSG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 Days
 
Oracle_Plsql_ShellScripting
Oracle_Plsql_ShellScriptingOracle_Plsql_ShellScripting
Oracle_Plsql_ShellScripting
 
Delivering Changes for Applications and Databases
Delivering Changes for Applications and DatabasesDelivering Changes for Applications and Databases
Delivering Changes for Applications and Databases
 
Service Architectures at Scale
Service Architectures at ScaleService Architectures at Scale
Service Architectures at Scale
 
Rajesh Paleru
Rajesh PaleruRajesh Paleru
Rajesh Paleru
 
Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014
 
Hari Babu-DBA Resume
Hari Babu-DBA ResumeHari Babu-DBA Resume
Hari Babu-DBA Resume
 
TR.Bhavani_Inf
TR.Bhavani_InfTR.Bhavani_Inf
TR.Bhavani_Inf
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
 
Resume_Harikrishna_Tekkam (1)
Resume_Harikrishna_Tekkam (1)Resume_Harikrishna_Tekkam (1)
Resume_Harikrishna_Tekkam (1)
 
Migrate a successful transactional database to azure
Migrate a successful transactional database to azureMigrate a successful transactional database to azure
Migrate a successful transactional database to azure
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sanger
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8
 
Puneet Verma CV
Puneet Verma CVPuneet Verma CV
Puneet Verma CV
 
Resume - Deepak v.s
Resume -  Deepak v.sResume -  Deepak v.s
Resume - Deepak v.s
 

Recently uploaded

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Supporting Stateful and Stateless Clients

  • 1. Supporting Stateful and Stateless Clients Joyce Stack ! @MendeleyStack Maintaining application state on multiple clients using a stateless protocol is difficult.
  • 2. Our Vision • Our mission is to transform the world of academic research…. • by delivering social collaboration tools • forming virtual communities and • driving innovation via our open platform We wish to support industry and accelerate the progress of science with: • Reference management tools • Social network - thousands of professional research groups • Provides access to our extensive catalogue & document statistics. • These article level metrics can help researchers understand their scientific impact better of papers and how their papers are cited e.g. leads to funding or coveted positions in faculties
  • 3. What do we mean by state? • Application state • client-side state e.g. iOS and Android clients • Resource state • server-side state e.g. online web library Application state: • Unrealistic to have some clients be able to round trip to the server all the time. ! Resource state: • We have other online clients that change state frequently.
  • 4. Offline is hard Supporting offline is a major requirement from our users (discuss researchers) ! We have cases of long offline periods (day, weeks, months and even seen years) Application state drifts from server state due to multiple mutating clients so this leads to distributed state.
  • 5. PATCH over PUT { "title": "Mutate iOS" } If-Unmodified-Since: Thu, 04 Sep 2014 13:43:01 GMT { "title": "Mutate JS" } • Resources have large representations • Using a PUT is cumbersome and uses bandwidth • Seldom going to change ALL metadata about a document. • Prevent clients from making changes that has been changed by someone else since retrieving it by using preconditions • Minimize race conditions
  • 6. Sync only differences • modified_since & deleted_since filtering ! GET /documents?modified_since=2014-04-24T16:38:02Z GET /documents?deleted_since=2014-04-24T16:38:02Z ! 200 OK [ .. documents ] We have a large collection of resources which don’t change all too frequently. Clients shouldn’t have to send full JSON bodies over the wire just to stay up to date with latest changes, especially mobile. Google’s Neil Fraser published a paper in 2009 about Differential Synchronisation. Implementing real-time multi-user synchronisation systems is difficult and even harder to explain. We know, we tried. So we needed something simpler.
  • 7. Arbitrary client data Folders: ! { "client_data": "{"sync_files":"notset"}", } ! ! Profiles: { "client_data": "{"sync_files": true, "sync_publications": false}” } Allow clients to set an arbitrary blob of data in a field associated with a resource. Tactical approach - settings associated with a particular resource, required by one client. Avoiding clients having two back ends. May roll it out to all other clients in the future. !