SlideShare ist ein Scribd-Unternehmen logo
1 von 19
2007: It all started with baby
photos...
Yes I could have just used FTP, but that would be too easy!
A Little About Me
● Freelance software developer
● Commercial vendor for Milton since 2012
● Lives in New Zealand
● No customers in my own country!
● Also have a startup business – FuseLMS.com
About Milton
● Started in 2007 as small webdav servlet
● Now best in the world at what it does – only
library to support webdav,caldav and carddav
● Corporate clients include: Google, HP, Novell
● EU firms: Lukkien, 5Point, QualityOnline,
Careweb, Idiada, SSP Europe
● FOSS projects: ExistDB, BaseX, CouchDB
● github.com/miltonio/milton2
About Webdav
● Network protocol, like FTP and Samba
● But extensible
● Its just HTTP, plus a few extras
● Supports structured data as well as binary
content
● Built in with all major Operating Systems
● Supported by most major apps, like MS Office,
Adobe, etc
Dav Protocols
HTTP 1.1
WebDav
ACL
CarddavCaldav
QuotaSearchSync
The Awesome-ness of Dav
● Scalability! Stateless protocols allow high
performance, high availability clusters
● Network integration: No hassles with firewalls,
its just http
● Security: Simple, well understood protocols
makes it easy for sys admins to secure
● Integration: Just incremental additions to
existing web applications, for close integration
Industry support
● Broad support from industry working groups,
ongoing protocol development
● Early leadership from Microsoft
● Then Apple led charge with MobileMe and
iCloud
● Google sees Dav as strategic to making its
calendar and contact services ubiquitous
Productivity Models
Model Where is my software? Where is my content? Exemplors
1 Local Local Microsoft
2 Remote Remote Google,
Facebook
3 Local Remote Apple
3b Local Local synced to Remote Dropbox
Webdav is useful when local applications need access to remote content
There is a war being waged between local software vendors (Apple,MS) and remote
software vendors (Google,Facebook).
Which model is winning?
How to build webdav apps?
Create annotated methods that work with your domain objects
@Root
public Repository getRoot() {
return findRootRepository();
}
@ChildrenOf
public List<DataNode> getRootFolders(Repository root) {
return root.getFolders();
}
@ChildrenOf
public List<DataNode> getRootFolders(DirectoryNode root) {
return root.getFolders();
}
@Get
public void getFileContent(FileNode fileNode, OutputStream out){
fileNode.writeContent(out);
}
@PutChild
public FileNode createFile(DirectoryNode dir, String newName, InputStream in) {
DataSession.FileNode newFileNode = parent.addFile(newName);
newFileNode.setContent(inputStream);
return newFileNode;
}
How to implement security?
Implement authentication and an access control list:
@Authenticate
public Boolean checkPasswordBasic(Profile user, String password) {
return passwordManager.verifyPassword(user, password);
}
@Authenticate
public Boolean checkPasswordDigest(Profile user, DigestResponse d) {
return passwordManager.verifyDigest(d, user);
}
@AccessControlList
public List<AccessControlledResource.Priviledge> getPrivs(target, Profile user) {
if( currentUser == null ) {
return AccessControlledResource.NONE;
} else {
… // business rules
}
}
Competitors to webdav for files
● Dropbox!! (and other sync apps)
● Most users prefer sync'd files to remote access
● Webdav-sync protocol exists, but not widely
implemented
● Ideally support both webdav and sync
● Milton has components to support sync
Caldav: Webdav for calendars
● Dav is well suited, given the mix of structured
data and unstructured content
● Probably most widely used Dav protocol
● Coming to Windows Phone 8, just announced
this week!
● So probably available on Window desktop in
near future
● Very well supported on Mac and iOS devices
How to build Caldav apps?
Start with a webdav app and add calendar capabilities
@ChildrenOf
public CalendarsHome getCalendarsHome(Profile user) {
return new CalendarsHome(user); // Place holder object
}
@ChildrenOf
@Calendars
public List<Calendar> getCalendars(CalendarsHome cals, @Principal Profile profile) {
return cals.user.getCalendars();
}
@Get
@ICalData
public void getEventIcal(CalEvent event, Calendar calendar, OutputStream out) {
String s = calendarService.getCalendar(event);
out.write(s.getBytes(StringUtils.UTF8));
}
}
@PutChild
public CalEvent createEvent(Calendar calendar, final String newName, InputStream in) {
CalEvent newEvent = calendarService.createEvent(calendar, newName, in);
return newEvent;
}
Carddav: for contacts
● Milton was deployed to Google Contacts end of
2012
● Google has deprecated ActiveSync, forcing iOS
users to move to Carddav – millions of users!
● No built in support for Thunderbird, but SOGO
connector is ok
● Very well supported on Mac and iOS devices
How to build Carddav apps?
You guessed it … easy!
@ChildrenOf
@AddressBooks
public MusicianAddressBook getAddressBook(AddressBooksHome m) {
...
}
@ContactData
@Get
public byte[] getContactData(MyContact c) {
...
}
Milton as a Web Framework
● Annotations support modelled on Spring MVC
● Templating, forms, ajax, data binding and xDav
work seamlessly in a single url namespace
● Automatically has navigable REST API –
includes properties!
● Eg:
@Post(bindData=true)
public Profile saveProfile(Profile profile) {
profile.setModifiedDate(new Date());
return profile;
}
@Get
public ModelAndView showUserPag(Profile p) {
return new ModelAndView("profile", p, "profPage");
}
What next for Webdav
● Expect wider adoption of Oauth2 by client and
server vendors
● Ubiquitous support for Caldav + Carddav for
service vendors and client vendors will be a
game changer
● Increasing support for webdav sync … ? Maybe
What next for Milton?
● Ongoing: co-ordination with client-side
developers to provide server-side capabilities
● Next protocols: webdav-sync + dav search
● File sync
● Server-to-server sync – eg sync OBM
calendars with Google calendars
● Server application development – simple
file,calendars and contacts server for small
business
What next for OBM and Milton?
● An ideal partnership
● First calendars...
● Then contacts...
● Then files … ? Hopefully!

Weitere ähnliche Inhalte

Was ist angesagt?

Training Week: Build APIs with Neo4j GraphQL Library
Training Week: Build APIs with Neo4j GraphQL LibraryTraining Week: Build APIs with Neo4j GraphQL Library
Training Week: Build APIs with Neo4j GraphQL Library
Neo4j
 
NoSQL: Why, When, and How
NoSQL: Why, When, and HowNoSQL: Why, When, and How
NoSQL: Why, When, and How
BigBlueHat
 

Was ist angesagt? (9)

Python and Neo4j
Python and Neo4jPython and Neo4j
Python and Neo4j
 
Getting started with Drupal 8
Getting started with Drupal 8Getting started with Drupal 8
Getting started with Drupal 8
 
CouchDB : More Couch
CouchDB : More CouchCouchDB : More Couch
CouchDB : More Couch
 
FIWARE Wednesday Webinars - Introduction to NGSI-LD
FIWARE Wednesday Webinars - Introduction to NGSI-LDFIWARE Wednesday Webinars - Introduction to NGSI-LD
FIWARE Wednesday Webinars - Introduction to NGSI-LD
 
Training Week: Build APIs with Neo4j GraphQL Library
Training Week: Build APIs with Neo4j GraphQL LibraryTraining Week: Build APIs with Neo4j GraphQL Library
Training Week: Build APIs with Neo4j GraphQL Library
 
[iOS] Networking
[iOS] Networking[iOS] Networking
[iOS] Networking
 
Data persistence using pouchdb and couchdb
Data persistence using pouchdb and couchdbData persistence using pouchdb and couchdb
Data persistence using pouchdb and couchdb
 
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBA
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBADatabase Migration using Oracle SQL Developer: DBA Stuff for the Non-DBA
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBA
 
NoSQL: Why, When, and How
NoSQL: Why, When, and HowNoSQL: Why, When, and How
NoSQL: Why, When, and How
 

Ähnlich wie Milton Webdav Presentation for Linagora

Eat whatever you can with PyBabe
Eat whatever you can with PyBabeEat whatever you can with PyBabe
Eat whatever you can with PyBabe
Dataiku
 

Ähnlich wie Milton Webdav Presentation for Linagora (20)

Serverless Computing with Google Cloud
Serverless Computing with Google CloudServerless Computing with Google Cloud
Serverless Computing with Google Cloud
 
Drupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source AppDrupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source App
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloud
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Run your code serverlessly on Google's open cloud
Run your code serverlessly on Google's open cloudRun your code serverlessly on Google's open cloud
Run your code serverlessly on Google's open cloud
 
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
 
Android architecture components with cloud firestore
Android architecture components with cloud firestoreAndroid architecture components with cloud firestore
Android architecture components with cloud firestore
 
Easing offline web application development with GWT
Easing offline web application development with GWTEasing offline web application development with GWT
Easing offline web application development with GWT
 
Spring.io
Spring.ioSpring.io
Spring.io
 
Android data binding
Android data bindingAndroid data binding
Android data binding
 
Firestore MENA digital days : GDG Abu dhabi
Firestore MENA digital days : GDG Abu dhabiFirestore MENA digital days : GDG Abu dhabi
Firestore MENA digital days : GDG Abu dhabi
 
Midao JDBC presentation
Midao JDBC presentationMidao JDBC presentation
Midao JDBC presentation
 
Powerful Google Cloud tools for your hack
Powerful Google Cloud tools for your hackPowerful Google Cloud tools for your hack
Powerful Google Cloud tools for your hack
 
State of GeoServer 2.10
State of GeoServer 2.10State of GeoServer 2.10
State of GeoServer 2.10
 
Eat whatever you can with PyBabe
Eat whatever you can with PyBabeEat whatever you can with PyBabe
Eat whatever you can with PyBabe
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
 
Mukul-Resume
Mukul-ResumeMukul-Resume
Mukul-Resume
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
RedisConf18 - Writing modular & encapsulated Redis code
RedisConf18 - Writing modular & encapsulated Redis codeRedisConf18 - Writing modular & encapsulated Redis code
RedisConf18 - Writing modular & encapsulated Redis code
 
Javascript as a target language - GWT kickoff - part1/2
Javascript as a target language - GWT kickoff - part1/2Javascript as a target language - GWT kickoff - part1/2
Javascript as a target language - GWT kickoff - part1/2
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

Milton Webdav Presentation for Linagora

  • 1. 2007: It all started with baby photos... Yes I could have just used FTP, but that would be too easy!
  • 2. A Little About Me ● Freelance software developer ● Commercial vendor for Milton since 2012 ● Lives in New Zealand ● No customers in my own country! ● Also have a startup business – FuseLMS.com
  • 3. About Milton ● Started in 2007 as small webdav servlet ● Now best in the world at what it does – only library to support webdav,caldav and carddav ● Corporate clients include: Google, HP, Novell ● EU firms: Lukkien, 5Point, QualityOnline, Careweb, Idiada, SSP Europe ● FOSS projects: ExistDB, BaseX, CouchDB ● github.com/miltonio/milton2
  • 4. About Webdav ● Network protocol, like FTP and Samba ● But extensible ● Its just HTTP, plus a few extras ● Supports structured data as well as binary content ● Built in with all major Operating Systems ● Supported by most major apps, like MS Office, Adobe, etc
  • 6. The Awesome-ness of Dav ● Scalability! Stateless protocols allow high performance, high availability clusters ● Network integration: No hassles with firewalls, its just http ● Security: Simple, well understood protocols makes it easy for sys admins to secure ● Integration: Just incremental additions to existing web applications, for close integration
  • 7. Industry support ● Broad support from industry working groups, ongoing protocol development ● Early leadership from Microsoft ● Then Apple led charge with MobileMe and iCloud ● Google sees Dav as strategic to making its calendar and contact services ubiquitous
  • 8. Productivity Models Model Where is my software? Where is my content? Exemplors 1 Local Local Microsoft 2 Remote Remote Google, Facebook 3 Local Remote Apple 3b Local Local synced to Remote Dropbox Webdav is useful when local applications need access to remote content There is a war being waged between local software vendors (Apple,MS) and remote software vendors (Google,Facebook). Which model is winning?
  • 9. How to build webdav apps? Create annotated methods that work with your domain objects @Root public Repository getRoot() { return findRootRepository(); } @ChildrenOf public List<DataNode> getRootFolders(Repository root) { return root.getFolders(); } @ChildrenOf public List<DataNode> getRootFolders(DirectoryNode root) { return root.getFolders(); } @Get public void getFileContent(FileNode fileNode, OutputStream out){ fileNode.writeContent(out); } @PutChild public FileNode createFile(DirectoryNode dir, String newName, InputStream in) { DataSession.FileNode newFileNode = parent.addFile(newName); newFileNode.setContent(inputStream); return newFileNode; }
  • 10. How to implement security? Implement authentication and an access control list: @Authenticate public Boolean checkPasswordBasic(Profile user, String password) { return passwordManager.verifyPassword(user, password); } @Authenticate public Boolean checkPasswordDigest(Profile user, DigestResponse d) { return passwordManager.verifyDigest(d, user); } @AccessControlList public List<AccessControlledResource.Priviledge> getPrivs(target, Profile user) { if( currentUser == null ) { return AccessControlledResource.NONE; } else { … // business rules } }
  • 11. Competitors to webdav for files ● Dropbox!! (and other sync apps) ● Most users prefer sync'd files to remote access ● Webdav-sync protocol exists, but not widely implemented ● Ideally support both webdav and sync ● Milton has components to support sync
  • 12. Caldav: Webdav for calendars ● Dav is well suited, given the mix of structured data and unstructured content ● Probably most widely used Dav protocol ● Coming to Windows Phone 8, just announced this week! ● So probably available on Window desktop in near future ● Very well supported on Mac and iOS devices
  • 13. How to build Caldav apps? Start with a webdav app and add calendar capabilities @ChildrenOf public CalendarsHome getCalendarsHome(Profile user) { return new CalendarsHome(user); // Place holder object } @ChildrenOf @Calendars public List<Calendar> getCalendars(CalendarsHome cals, @Principal Profile profile) { return cals.user.getCalendars(); } @Get @ICalData public void getEventIcal(CalEvent event, Calendar calendar, OutputStream out) { String s = calendarService.getCalendar(event); out.write(s.getBytes(StringUtils.UTF8)); } } @PutChild public CalEvent createEvent(Calendar calendar, final String newName, InputStream in) { CalEvent newEvent = calendarService.createEvent(calendar, newName, in); return newEvent; }
  • 14. Carddav: for contacts ● Milton was deployed to Google Contacts end of 2012 ● Google has deprecated ActiveSync, forcing iOS users to move to Carddav – millions of users! ● No built in support for Thunderbird, but SOGO connector is ok ● Very well supported on Mac and iOS devices
  • 15. How to build Carddav apps? You guessed it … easy! @ChildrenOf @AddressBooks public MusicianAddressBook getAddressBook(AddressBooksHome m) { ... } @ContactData @Get public byte[] getContactData(MyContact c) { ... }
  • 16. Milton as a Web Framework ● Annotations support modelled on Spring MVC ● Templating, forms, ajax, data binding and xDav work seamlessly in a single url namespace ● Automatically has navigable REST API – includes properties! ● Eg: @Post(bindData=true) public Profile saveProfile(Profile profile) { profile.setModifiedDate(new Date()); return profile; } @Get public ModelAndView showUserPag(Profile p) { return new ModelAndView("profile", p, "profPage"); }
  • 17. What next for Webdav ● Expect wider adoption of Oauth2 by client and server vendors ● Ubiquitous support for Caldav + Carddav for service vendors and client vendors will be a game changer ● Increasing support for webdav sync … ? Maybe
  • 18. What next for Milton? ● Ongoing: co-ordination with client-side developers to provide server-side capabilities ● Next protocols: webdav-sync + dav search ● File sync ● Server-to-server sync – eg sync OBM calendars with Google calendars ● Server application development – simple file,calendars and contacts server for small business
  • 19. What next for OBM and Milton? ● An ideal partnership ● First calendars... ● Then contacts... ● Then files … ? Hopefully!