Joomla in a world of ubiquitous computing

940 views

Published on

Presentation slides given at the JoomlaDay UK 2013 event in Sunningdale, United Kingdon on 5 October 2013.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
940
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Joomla in a world of ubiquitous computing

  1. 1. Joomla in a world of ubiquitous computing Chris Davenport Joomla Production Leadership Team
  2. 2. Trends
  3. 3. More devices
  4. 4. More kinds of devices
  5. 5. More sensors
  6. 6. More kinds of sensors
  7. 7. More data
  8. 8. More kinds of data
  9. 9. More connectivity
  10. 10. More kinds of connectivity
  11. 11. The changing internet ● More devices ● More kinds of devices ● More sensors ● More kinds of sensors ● More data ● More kinds of data ● More connectivity ● More kinds of connectivity
  12. 12. And everything is getting Faster Smaller Cheaper
  13. 13. Internet of Things
  14. 14. The marginal cost of adding new information capabilities to a product is offset by the added value either to the end-user or the supply chain.
  15. 15. Example The ability to gather more data about products throughout their lifecycles is changing the way many businesses operate.
  16. 16. Instead of “sell-it-and-forget-it” companies will maintain contact with their products throughout their lifecycles
  17. 17. Moving from selling products to selling services built around products
  18. 18. The Growth of APIs
  19. 19. Application Programming Interface
  20. 20. Hide the details behind an interface that is Simple Consistent Stable over time
  21. 21. Allows you to treat a software package as a set of building blocks. So that blocks are interchangeable
  22. 22. Joomla Platform Joomla CMS API
  23. 23. $controller = JControllerLegacy::getInstance('Content'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect();
  24. 24. Web API GET http://www.domain.com/ api/products/20982 {“id”:20982, “sku”:”2A45-H4972”, “title”:”Left-handed sprocket flange”, “price”:34.29, “currency”:”GBP”, “stock”:932}
  25. 25. Who uses web APIs? Google Twitter YouTube Flickr Amazon Facebook Twilio LastFM eBay Bing Del.icio.us Yahoo FourSquare Wikipedia
  26. 26. Courtesy of ProgrammableWeb http://www.programmableweb.com
  27. 27. Hypermedia APIs Media + Links = Hypermedia
  28. 28. Surely big companies have had APIs for a long time...?
  29. 29. EDI Electronic Data Interchange
  30. 30. UNA:+.? ' UNB+IATB:1+6XPPC+LHPPC+940101:0950+1' UNH+1+PAORES:93:1:IA' MSG+1:45' IFT+3+XYZCOMPANY AVAILABILITY' ERC+A7V:1:AMD' IFT+3+NO MORE FLIGHTS' ODI' TVL+240493:1000::1220+FRA+JFK+DL+400+C' PDI++C:3+Y::3+F::1' APD+74C:0:::6++++++6X' TVL+240493:1740::2030+JFK+MIA+DL+081+C' PDI++C:4' APD+EM2:0:1630::6+++++++DA' UNT+13+1' UNZ+1+1'
  31. 31. Why hypermedia APIs? Scalability via load balancers and caches
  32. 32. Why hypermedia APIs? Loose coupling between sender and receiver Clients and servers can evolve independently of one another Driving application state by following links
  33. 33. Why hypermedia APIs? Open source Large community of developers Low cost of entry means that even very small businesses can use the technology
  34. 34. Silos are bad Unless you open them up, in which case... They become repositories Repositories are good
  35. 35. Add an API Lower the barriers to participation Use RESTful hypermedia standards Make it easy to share Publish the documentation Make it easy to sign-up for an API key Turning a silo into a repository
  36. 36. To a developer the API makes the organisation look like a resource that can be programmed like any other information system that has an API.
  37. 37. APIs change the relationships between organisations Traditional organisations are becoming “Programmable” organisations
  38. 38. Traditional business No or limited data sharing “Programmable” business Data sharing through open hypermedia APIs
  39. 39. Traditional business Constrained interaction with partners “Programmable” business Partners can interact in ways you hadn't thought of
  40. 40. Traditional business Limited partnering “Programmable” business Encourages an ecosystem of API users and developers who help grow the business
  41. 41. API Ecosystems Developers build applications that make use of the API Which attracts more users Which attracts more developers, and so on.
  42. 42. Expedia $2 billion per year through APIs “90% of what we do is business through APIs”
  43. 43. Internet of Things Hypermedia APIs
  44. 44. Disclaimer These are just my personal views. Please don't take them as being part of any official policy or direction of the Joomla project.
  45. 45. Joomla Framework should be the platform of choice for building Internet of Things applications Joomla CMS should be the platform of choice for building programmable organisations
  46. 46. How Joomla can help ● Make it easy to share data through hypermedia APIs – Subject to access control ● Make it easy to manage APIs – Developer/application registration – API key control – Rate-limiting, quotas, blocking ● Make it easy to remotely deploy and manage Joomla installations via the API ● Make it easy to add new content types via the API ● Make it easy to consume data from other APIs
  47. 47. Joomla now ● Primarily used to build websites ● Only supports mobile through responsive design ● No hypermedia API support ● Large, monolithic codebase ● Even components can't easily talk to one another
  48. 48. Joomla Next...?
  49. 49. ServicesSite UI Admin UI Web browser AJAX Hypermedia API HAL+JSON HAL+JSON HAL+JSON HTML HTML ServerClient
  50. 50. Web API (eg. AJAX) Get a list of articles: GET /joomla:articles GET /joomla:articles?page=3&perPage=10 Get a specific article: GET /joomla:articles/123 Update an article: PUT /joomla:articles/123 {”title”:”A new title for my content”, …}
  51. 51. Using the API directly (this is just a wild guess about what it might look like) Get a list of articles: $args = array('page' => 3, 'perPage' => 10); $input = new JInput($args); $controller = JController::getInstance('joomla:articles'); $response = $controller->get($input);
  52. 52. Services Hypermedia API HAL+JSON ServerClients Device 1 Device 2 Server HAL+JSON HAL+JSON
  53. 53. Services Hypermedia API HAL+JSON ServerClients PHP CLI PERL CLI Daemon HAL+JSON HAL+JSON
  54. 54. Services Site UI AJAX Hypermedia API HAL+JSON HAL+JSONHTML Ecommerce ServerWeb browser AJAX HAL+JSON Services Hypermedia API Transaction server (layout) (product data) (cart data - volatile) Angular JS
  55. 55. Joomla Next steps... ● Define a generalised hypermedia API – Web Services Working Group ● Define an architecture – With web services at the core ● Implement the standard in code ● Provide client-side SDKs ● API support for current core content types ● API support for UCM
  56. 56. A web API for Joomla? Github: https://github.com/chrisdavenport/j3-rest-api (Pull requests welcome, of course) Demo: http://demo.davenporttechnology.com/api Use the HAL browser from here: http://demo.davenporttechnology.com/api/hal- browser/browser.html#http://demo.davenporttechnology.com/api
  57. 57. Web Services Working Group http://docs.joomla.org/Web_Services_Working_Group
  58. 58. Image credits 1 http://commons.wikimedia.org/wiki/File:TomTom_Go_500.JPG http://commons.wikimedia.org/wiki/File:Sensor-operated-urinals1377p.jpg http://commons.wikimedia.org/wiki/File:Wiimote.png http://commons.wikimedia.org/wiki/File:Automatic_weather_station.JPG http://commons.wikimedia.org/wiki/File:Trafficmaster_sensor_on_bridge_at_South_Wonston_- _geograph.org.uk_-_933739.jpg http://commons.wikimedia.org/wiki/File:Floating_Robots_in_the_Sacramento_River_Delta.jpg http://commons.wikimedia.org/wiki/File:Global_Vegetation.jpg http://commons.wikimedia.org/wiki/File:London_CC_01_2013_5482.JPG http://commons.wikimedia.org/wiki/File:Mag_survey_g858grad.JPG http://commons.wikimedia.org/wiki/File:BSPC_19_i_Nyborg_Danmark_2009_%284%29.jpg http://commons.wikimedia.org/wiki/File:XBOX_360_Kincet.jpg http://commons.wikimedia.org/wiki/File:NOAA-NDBC-discus-buoy.jpg http://commons.wikimedia.org/wiki/File:123Net_Data_Center_%28DC2%29.jpg http://commons.wikimedia.org/wiki/File:Street_Tree_Visualization.jpg http://commons.wikimedia.org/wiki/File:Data_Visualization_Lab,_Center_for_Coastal_and_Ocean_Mapping,_U NH,_Durham_NH.jpg http://commons.wikimedia.org/wiki/File:Wifi.png?uselang=en-gb http://commons.wikimedia.org/wiki/File:RJ45.jpg http://commons.wikimedia.org/wiki/File:Fibreoptic.jpg http://commons.wikimedia.org/wiki/File:Nfc_machine.jpg http://commons.wikimedia.org/wiki/File:Oyster-Reader.jpg http://commons.wikimedia.org/wiki/File:Bluetooth.svg?uselang=en-gb
  59. 59. Image credits 2 http://commons.wikimedia.org/wiki/File:RFID_Chip_008.JPG http://commons.wikimedia.org/wiki/File:Dishwasher_on_the_Internet.jpg http://commons.wikimedia.org/wiki/File:Raspberry_Pi.jpeg http://commons.wikimedia.org/wiki/File:LEGO-01.jpg http://commons.wikimedia.org/wiki/File:Lego_Tower_Bridge.JPG http://commons.wikimedia.org/wiki/File:LEGO-Aida.jpg http://commons.wikimedia.org/wiki/File:Lego_krokodil.JPG http://commons.wikimedia.org/wiki/File:Einstein-LEGO.jpg http://commons.wikimedia.org/wiki/File:Rolls_Royce_Triebwerk.jpg http://commons.wikimedia.org/wiki/File:Mirrool_Silos.jpg http://commons.wikimedia.org/wiki/File:Pictogram_voting_question.svg http://commons.wikimedia.org/wiki/File:Question_Mark_Cloud.jpg http://commons.wikimedia.org/wiki/File:GOES12Fulldiskvisible.png http://commons.wikimedia.org/wiki/File:DATA_MONORRAFI.pdf http://commons.wikimedia.org/wiki/File:Car_civic.jpg http://commons.wikimedia.org/wiki/File:Microwave_oven.jpg http://commons.wikimedia.org/wiki/File:Sony_Television_Set.JPG http://commons.wikimedia.org/wiki/File:Toaster.jpg http://commons.wikimedia.org/wiki/File:Desertisland.jpg http://commons.wikimedia.org/wiki/File:Device_pile.jpg

×