Published on

OpenDDR is the ultimate open solution to the device fragmentation issues. Because of the wide
diversity of devices available on the market, the developers dealing with web content optimization
need to know hardware and software specs of each device. To face this situation the most effective
solution is using a Device Description Repository, a database storing a huge amount of information
concerning mobile phones, tablets, Interactive TVs, set top boxes and any device with a Web browser.

Published in: Technology, Education
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. Let’s enable optimized contents. Together. Werner Keil ( [email_address] ) Nov 4 th , 2011
  2. 2. Titolo presentazione - data <ul><li>Introduction
  3. 3. Project Brief
  4. 4. Google Code and Group
  5. 5. Implementation and Sample
  6. 6. Test Results
  7. 7. Benefits
  8. 8. Conclusions </li></ul>AGENDA
  9. 9. <ul>OpenDDR: let's enable optimized contents. Together </ul><ul>Day after day we all experience an incredible growth of devices available on the market and accurately tracking their specs has became a very hard work. But this complexity can be reduced if managed by a community daily involved in improving the Device Description Repository (DDR). This is the essence of OpenDDR project , the best open and completely free repository of device description available worldwide. </ul>Titolo presentazione - data OpenDDR INTRODUCTION
  10. 10. Titolo presentazione - data What is a DDR Project Brief
  11. 11. Titolo presentazione - data What is a DDR Project Brief
  12. 12. Titolo presentazione - data What is a DDR Project Brief
  13. 13. If you want a comfortable user experience, you need dynamically adaptable content according to hardware and browser specifications of your device Device Description Repositories (DDR) are databases that store a huge amount of information concerning mobile phones, tablets, Interactive TVs, set top boxes and any device having a Web browser. DDR allow developers to realize applications providing appropriate user experience on each client There are several DDR projects across the web but: <ul><li>demand you a fee to access to their databases and APIs </li><ul><ul><ul><ul><ul><ul><ul><li>OR </li></ul></ul></ul></ul></ul></ul></ul><li>Let you access this information for free only for developing non-commercial applications
  14. 14. Need different Approach: OpenDDR Project </li></ul>Titolo presentazione - data What is a DDR Project Brief
  15. 15. OpenDDR stakes on open standards: <ul><li>Repository is fully compliant with W3C DDR
  16. 16. Access library implements the W3C DDR Simple APIs </li></ul>From a developer point of view: <ul><li>You can start developing your application with confidence that your product will work with any W3C DDR Simple APIs implementation , no binding to OpenDDR implementation
  17. 17. Adopting a W3C standard, the Copyright of the interfaces you need is owned and protected by W3C against any intellectual property and patent claim </li></ul>OpenDDR is released under Open Database License (ODbL), and OpenDDR Simple APIs are released under Lesser General Public License (LGPL). This means that you are completely free to use both OpenDDR repository and/or APIs in open source or proprietary software Titolo presentazione - data Why open standards? Project Brief
  18. 18. PROJECT STRENGHTS WEAKNESSES LICENSE MaDDR Project The interface is a W3C standard <ul><li>Device repository only with commercial mobileAware DDR (tha APIs are bundled with a small sample DDR)
  19. 19. The maDDR Project cannot offer an adaptation technology that uses repository knowledge to guide its processes </li></ul><ul><li>Repository license : commercial license only
  20. 20. API license : commercial license OR Simple DDR API implementation licensed as LGPL </li></ul>DeviceAtlas Data is multi-sourced from industry-leading partners Only commercial licenses <ul><li>Repository license : commercial license
  21. 21. API license : commercial license </li></ul>Volantis Wide device coverage Only commercial licenses <ul><li>Repository license : commercial license
  22. 22. API license : commercial license </li></ul>WURFL Community project <ul><li>the license does not allow to use the DDR without accessing through the WURFL API
  23. 23. the API does not allow use in projects with a proprietary license </li></ul><ul><li>Repository license : use not allowed if accessed without WURFL APIs
  24. 24. API license : dual licensing AGPL and commercial </li></ul>(Changed since August 2011) Titolo presentazione - data DDR Projects Comparison Project Brief
  25. 25. Users can update the operating systems of their devices (also with custom builds) and/or install new web browsers. The identification of a device through the original User Agent exposed by the manufactures is no more sufficient. OpenDDR considers the device as a set of three important aspects : Physical Device, Operating System, Web Browser <ul><li>OpenDDR can identify custom builds of the operating system and third parties web browsers. If a particular version of a browser or an operating system is not recognized, OpenDDR returns information about the closest version rather than not returning any information at all.
  26. 26. OpenDDR identifies a device, a web browser or an operating system with a certain Confidence . You can specify the threshold as a target to achieve in the identification process. More high is the confidence more slow is the process; more low is the confidence more fast is the process, even if you can have less accurate results.
  27. 27. OpenDDR supports Patching of the data source </li></ul>Titolo presentazione - data What's different in OpenDDR? Project Brief
  28. 28. We have uploaded OpenDDR source code and resources at: We have also created a discussion group related to OpenDDR project: We adopt a subversion repository. In the trunk directory you find the source java code of the OpenDDR API in the src folder. In the directory resources you can find the DDRs, the vocabularies, and the BuilderDatasource: a document used in the process of device identification Titolo presentazione - data The repository Google Code and Group
  29. 29. OpenDDR implements the W3C Simple API interface. It supports the core vocabulary as specified in the DDR W3C recommendation document. To use the OpenDDR Simple API you need to configure a property file as the follow: ddr.vocabulary.core.path=PATH_TO_FILE/coreVocabulary.xml oddr.vocabulary.path=PATH_TO_FILE/oddrVocabulary.xml oddr.vocabulary.device= oddr.threshold=70 The oddr.threshold property allows the developer to specify what is the desired confidence to achieve the identification. In this case we want a confidence of, at least, 70%. Titolo presentazione - data Implementation Implementation and Sample
  30. 30. To create the identification service we use the ServiceFactory in the W3C DDR-Simple-API.jar Service identificationService = ServiceFactory.newService(&quot;org.openddr.simpleapi.oddr.ODDRService&quot;, ODDR_VOCABULARY_IRI, initializationProperties); The first argument is the class of the DDRService; the second argument is the default vocabulary used in the identification if the vocabulary is not specified; the third argument is the Open DDR properties file. The following is an example of the code to get “ displayWidth ”, “model” and “vendor” properties of the default vocabulary and the default aspect (as specified in vocabulary). PropertyRef displayWidthRef; PropertyRef vendorRef; PropertyRef modelRef; Try { displayWidthRef = identificationService.newPropertyRef(&quot;displayWidth&quot;); vendorRef = identificationService.newPropertyRef(&quot;vendor&quot;); modelRef = identificationService.newPropertyRef(&quot;model&quot;); } catch (NameException ex) { throw new RuntimeException(ex); } PropertyRef[] propertyRefs = new PropertyRef[] {displayWidth, vendorRef, modelRef}; Evidence e = new ODDRHTTPEvidence(); e.put(&quot;User-Agent&quot;, request.getHeader(&quot;User-Agent&quot;)); try { PropertyValues propertyValues = identificationService.getPropertyValues(e, propertyRefs); PropertyValue displayWidth = propertyValues.getValue(displayWidthRef); PropertyValue vendor = propertyValues.getValue(vendorRef); PropertyValue model = propertyValues.getValue(modelRef); if (displayWidth.exist() && vendor.exists() && model.exists()) { ... } } catch (Exception ex) { throw new RuntimeException(ex); } Titolo presentazione - data Implementation Implementation and Sample
  31. 31. In OpenDDR we can specify a reduced vocabulary in order to limit the memory load . <ul><li>It can be specified in the property of the oddr properties file.
  32. 32. It allows developers to choose which properties need to be loaded in memory at the startup from the datasource. In most case developers need only a subset of properties from the datasource. </li></ul>We compared OpenDDR with WURFL API (1.3.1) in terms of memory load in two situations: <ul><li>Without a limited vocabulary
  33. 33. With a limited vocabulary </li></ul>We used jMeter a s workload generator, configuring it in order to generate 100 requests per seconds from 10 worker with a different user agent. The user agents set contained ten of the most used user agent observed in a real environment. Both OpenDDR and WURFL API was tested in a simple web app. Titolo presentazione - data Introduction to test result Test Result (1)
  34. 34. Results for WURFL Titolo presentazione - data WURFL Memory load Test Result (2)
  35. 35. Results for not reduced OpenDDR Titolo presentazione - data no reduced OpenDDR Memory load Test Result (3)
  36. 36. Results for reduced OpenDDR Titolo presentazione - data Reduced OpenDDR Memory load Test Result (4)
  37. 37. <ul><li>We chose as limited vocabulary the W3C core vocabulary
  38. 38. The memory load of OpenDDR with limited vocabulary is only of 50MB and, after the initialization, OpenDDR doesn't have memory spike.
  39. 39. Both APIs identified correctly all the user agents in the HTTP request </li></ul>Titolo presentazione - data Result Test Result (5)
  40. 40. <ul><li>Open , free and based on a W3C standard . Update to DDR comes from the community and from device manufacturers. </li></ul>The identification is not only for the device as a single entity but is extended to the web browser and to the operating system. OpenDDR can identify third parties web browsers and custom builds of o perating systems . A developer can specify the vocabulary and the aspects of the property he wants to know. <ul><li>Based on identification threshold . When a particular version of a browser is not recognized, OpenDDR returns properties of the nearest version, if this supposition satisfies the threshold decided by the developer.
  41. 41. The developer can choose which properties must be loaded in memory, specifying a limited vocabulary: no memory waste .
  42. 42. Patch support : if you want to change or update your repository you can do that. It is simple to add new properties updating your DDR and your vocabulary. </li></ul>Titolo presentazione - data Why OpenDDR? Benefits