Building the Joomla Platform

A
Andrew EddieSoftware Engineer at eBay Australia
Building the Joomla! Platform
Joomla! Day China, Shanghai - 2 June 2012
Andrew Eddie
/libraries/joomla
Motivation
To build other cool things




   Command line applications   Web applications
           Task schedulers     Web services
                Data miners    Games
To be inclusive




                  Quality




        CMS                 Platform
To align with Joomla’s mission




Our mission is to provide a flexible platform for digital
publishing and collaboration.
                                                    www.joomla.org
Instantiation
Github
Charge to 300. Clear!




                        Lines of code
Integrated quality control
Fast track, slow track
Inspiration
Engagement - stop thinking like a CMS

                content management systems




                      indirect (HTML)
                             vs
                       direct (JSON)




                information delivery systems
The glue in the app economy



                                 Social
        Device                  Network




                     Business
                      Data
Bridging the social network gap




The current state of social networks is similar to if you
couldn't call people on competing cell networks.
That'd be some lock-in.
                                          Sean McArthur, Mozilla Corporation
Potential energy

• Time to get back with and ahead of    • Army of people who know how to
  the curve                               build extensions and web sites


• Building app’s that improve quality


• Build app’s to make app’ building
  easier


• Build API’s to consume other API’s
  (a hunger to own that space)
Connect
Mailing list




               https://groups.google.com/forum/#!forum/joomla-dev-platform
Developer documentation
Examples

• https://github.com/joomla/joomla-platform-examples


• https://github.com/eddieajau/jc-bach (simple CLI)


• https://github.com/eddieajau/jc-dvorak (custom platform)


• https://github.com/eddieajau/jc-kodaly (CLI that runs CMS plugins)
谢谢
1 of 21

Recommended

Social Media Applications by
Social Media ApplicationsSocial Media Applications
Social Media Applications1pwlq6sc
175 views8 slides
Web 2.0 by
Web 2.0Web 2.0
Web 2.0sattvik
60 views20 slides
Comparison of Top CMS Systems by
Comparison of Top CMS SystemsComparison of Top CMS Systems
Comparison of Top CMS SystemsRyan Street
19K views46 slides
Going Mobile - Engaging Audiences via the Mobile Web by
Going Mobile - Engaging Audiences via the Mobile WebGoing Mobile - Engaging Audiences via the Mobile Web
Going Mobile - Engaging Audiences via the Mobile WebDavid Dombrosky
483 views16 slides
Intranet 2.0 by
Intranet 2.0Intranet 2.0
Intranet 2.0Telekom MMS
475 views22 slides
Net2Vic: How to Choose a Content Management System for Your New Website by
Net2Vic: How to Choose a Content Management System for Your New WebsiteNet2Vic: How to Choose a Content Management System for Your New Website
Net2Vic: How to Choose a Content Management System for Your New WebsiteNetSquared Victoria
1.5K views100 slides

More Related Content

Similar to Building the Joomla Platform

Internet World 2012 by
Internet World 2012Internet World 2012
Internet World 2012Webnodes
326 views52 slides
Inaugural address manjusha - Indicthreads cloud computing conference 2011 by
Inaugural address manjusha -  Indicthreads cloud computing conference 2011Inaugural address manjusha -  Indicthreads cloud computing conference 2011
Inaugural address manjusha - Indicthreads cloud computing conference 2011IndicThreads
714 views27 slides
Web 2.0 and LiveQuotes Presentation by
Web 2.0 and LiveQuotes PresentationWeb 2.0 and LiveQuotes Presentation
Web 2.0 and LiveQuotes PresentationJamie Thingelstad
323 views25 slides
The Middleware technology that connects the enterprise by
The Middleware technology that connects the enterpriseThe Middleware technology that connects the enterprise
The Middleware technology that connects the enterprise Kasun Indrasiri
3.3K views56 slides
Scalable Social Architectures by Biren Gandhi by
Scalable Social Architectures by Biren GandhiScalable Social Architectures by Biren Gandhi
Scalable Social Architectures by Biren GandhiBiren Gandhi
819 views24 slides
Cloud Computing by
Cloud ComputingCloud Computing
Cloud Computingwebscale
636 views26 slides

Similar to Building the Joomla Platform(20)

Internet World 2012 by Webnodes
Internet World 2012Internet World 2012
Internet World 2012
Webnodes326 views
Inaugural address manjusha - Indicthreads cloud computing conference 2011 by IndicThreads
Inaugural address manjusha -  Indicthreads cloud computing conference 2011Inaugural address manjusha -  Indicthreads cloud computing conference 2011
Inaugural address manjusha - Indicthreads cloud computing conference 2011
IndicThreads714 views
The Middleware technology that connects the enterprise by Kasun Indrasiri
The Middleware technology that connects the enterpriseThe Middleware technology that connects the enterprise
The Middleware technology that connects the enterprise
Kasun Indrasiri3.3K views
Scalable Social Architectures by Biren Gandhi by Biren Gandhi
Scalable Social Architectures by Biren GandhiScalable Social Architectures by Biren Gandhi
Scalable Social Architectures by Biren Gandhi
Biren Gandhi819 views
Cloud Computing by webscale
Cloud ComputingCloud Computing
Cloud Computing
webscale636 views
Building Cross Platform Mobile Web Apps by James Pearce
Building Cross Platform Mobile Web AppsBuilding Cross Platform Mobile Web Apps
Building Cross Platform Mobile Web Apps
James Pearce3K views
HTML5 and the dawn of rich mobile web applications by James Pearce
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
James Pearce30.6K views
The value of structured data by Webnodes
The value of structured dataThe value of structured data
The value of structured data
Webnodes258 views
HTML5 and the dawn of rich mobile web applications pt 1 by James Pearce
HTML5 and the dawn of rich mobile web applications pt 1HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1
James Pearce7.4K views
Building cross platform mobile web apps by James Pearce
Building cross platform mobile web appsBuilding cross platform mobile web apps
Building cross platform mobile web apps
James Pearce1.3K views
Makersbay Nex-Gen Software Development Overview by slodha
Makersbay Nex-Gen Software Development OverviewMakersbay Nex-Gen Software Development Overview
Makersbay Nex-Gen Software Development Overview
slodha224 views
Openkapow At Mashup Camp 5 by Andreas Krohn
Openkapow At Mashup Camp 5Openkapow At Mashup Camp 5
Openkapow At Mashup Camp 5
Andreas Krohn1.5K views
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In... by Kai Wähner
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Kai Wähner8.2K views
12 web 2 advanced by Wesley Shu
12 web 2 advanced12 web 2 advanced
12 web 2 advanced
Wesley Shu596 views
2015 06-wso2 coneu-closingkeynote-asanka by Asanka Abeysinghe
2015 06-wso2 coneu-closingkeynote-asanka2015 06-wso2 coneu-closingkeynote-asanka
2015 06-wso2 coneu-closingkeynote-asanka
Asanka Abeysinghe797 views

Recently uploaded

"Surviving highload with Node.js", Andrii Shumada by
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada Fwdays
33 views29 slides
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueShapeBlue
89 views23 slides
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De... by
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...Moses Kemibaro
27 views38 slides
DRBD Deep Dive - Philipp Reisner - LINBIT by
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBITShapeBlue
44 views21 slides
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava... by
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...ShapeBlue
28 views17 slides
Kyo - Functional Scala 2023.pdf by
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfFlavio W. Brasil
418 views92 slides

Recently uploaded(20)

"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays33 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue89 views
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De... by Moses Kemibaro
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Moses Kemibaro27 views
DRBD Deep Dive - Philipp Reisner - LINBIT by ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue44 views
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava... by ShapeBlue
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
ShapeBlue28 views
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue38 views
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by ShapeBlue
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
ShapeBlue46 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman38 views
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by ShapeBlue
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates
ShapeBlue84 views
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
ShapeBlue62 views
HTTP headers that make your website go faster - devs.gent November 2023 by Thijs Feryn
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023
Thijs Feryn26 views
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue31 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi139 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker48 views
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by ShapeBlue
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
ShapeBlue60 views

Building the Joomla Platform

Editor's Notes

  1. \n
  2. If you’ve never noticed it before, the Joomla Platform is mostly the part of the code that lives under the /libraries/joomla folder. This is the engine that makes the CMS work.\n
  3. What was the motivation for separating the Platform for the CMS. Couldn’t everything just be done under the CMS?\n
  4. There is more to life than writing features for a CMS, and not everything application you need to write fits into the CMS paradigm anyway. One of the first additions to the Platform was a dedicated command line application class. You could make these with CMS code, but you had to work around all the CMS idiosyncrasies. That simple class forms the basis for long running services like daemons and task schedulers. On the other hand you have the ability to make light weight web applications for niche projects. This obviously leads to the ability to design rich web services that could be used to drive any industry from e-commerce to massively multi-player games.\n\nMore importantly, the same API that developers have used to build extensions can be used to build features into these other types of applications. You don’t have to learn a second framework to build non-CMS tools. This gives the developer more return when they invest in the “Joomla Way”. As a result, it also provides the Joomla project the ability to attract a new class of developers that may or may not be interested in dealing with all of the structure that is required to release the CMS.\n\nGraphics from http://www.oxygen-icons.org\n
  5. One of the major drivers for separating the Platform from the CMS was to allow development to be more inclusive. A major blocker to developers that wanted to innovate with Joomla was that contributions were accepted only if they were useful for the CMS. However, with the Platform being separate, it was possible to look at ideas on their general merit while still maintaining high quality standards. For example, the package in the Platform to interface with Github would probably never have been accepted into the CMS, but it makes perfect sense to be included in Platform.\n\nAdditionally, a separate platform could be released more frequently than \n\nGraphics from http://www.vistaico.com\n
  6. Last but not least, the mission of the Joomla project was, at the time, crafted with specifically with a vision for Joomla to be much more than just a CMS. \n
  7. What changed and what was the effect? \n
  8. A critical change was made in how the project dealt with the Platform. The source tree was moved off Subversion at JoomlaCode and onto git hosted at github.com. It was the best decision we made because git allows for easier branching and merging (no more patch files) and the administration features on github made reviewing and accepting contributions much easier.\n\nSource: https://github.com/joomla/joomla-platform/commits/staging\n
  9. So how did this change impact the Platform itself. The graph shows the code volume of the Platform over the last 3 years. For much of the period leading up to the release of Joomla 1.6 in January 2011, the core platform code was essentially constant (most of the work concentrated on features in extensions). Work on the separated Platform began in February of 2011 (point D) and you can see the effect immediately - positive and to the right. The heart of Joomla had received a long overdue jolt to give it new life. The part of Joomla’s mission to expand beyond the CMS shell was finally coming to fruition.\n\nSource: http://www.ohloh.net/p/joomla-platform/analyses/latest\n
  10. Github also allowed us to create some useful tools to help review contributions (if you are unfamiliar with how this is done, contributions are made by what we call “pull requests”). It’s still a work-in-progress but an automated pull tester allows us to see if any pull request passes our code style checks and all of the unit tests.\n\nSource: http://developer.joomla.org/pulls/\n
  11. More recently, we came to the realisation that some things needed to be changed but at a rate faster than downstream consumers like the CMS could cope with. The Platform also contained a lot of code that was only used in and useful for the CMS. So we devised what we call the “legacy” tree in the Platform. This was a tree that contains code that has been flagged to be only useful for the CMS and will be dropped from the Platform altogether. It also contains older versions of API that have since been upgraded but have caused backward compatibility issues. An example of this is the recent changes to the MVC architecture. The new MVC classes and interfaces would have caused breaking changes in the CMS so we moved all the old MVC classes into the legacy tree. \n\nApplications like the CMS can then load the Platform in legacy mode so that it remains compatible with tens of millions of web sites in production, as well as the many thousands of custom extensions available for Joomla. However, newer applications built solely on the Platform, can ignore the legacy tree and use the newer, cleaner API to develop solutions for their projects.\n
  12. \n
  13. Since Joomla, and Mambo before it, were originally conceived, the world has changed - dramatically. The browser is no longer king and expecting people to engage with your organisation or your business through the web site is competing with the explosion of mobile devices as well smart tv’s and gaming consoles. 50% of Netflix’s 23 million subscribers use their game consoles for live streaming (http://www.statisticbrain.com/netflix-statistics). Having a CMS-only or website-only mindset is like running a pizza delivery service without a phone, expecting people to come to the store to place an order.\n\nNot only that, but people are interacting with their social networks (Facebook, Four Square, and so on).\n\nNow, this is not to say that you can’t or shouldn’t have a web site; but what you should do is consider a web site as just another device or medium that allows you to connect with your customer, whoever that might be. It’s just another device and the point is to be flexible enough to engage your customer whether they are on a smart TV, mobile device or a game console. But consider that the web site only has value if people actually visit it.\n\nSo we need to stop thinking about just content management systems and turn our attention to information delivery systems.\n\nGraphics from http://paulirish.com/2010/high-res-browser-icons/, http://mediadesign.deviantart.com, http://www.iconshock.com and http://hadezign.com\n
  14. So Joomla as a Platform does something that Joomla as a CMS can’t do by itself. It can serve as the glue or the mortar between the bricks between a company’s or organisation’s internal data and the end user experience linked through their social network. And that glue will most likely come in the form of a web services API and this is what drives the app economy that is currently exploding.\n\nIf you expose your business data as a public web service, and that’s something that’s very easy to consume from devices.\n\nGraphics from http://barrymieny.deviantart.com/, \n
  15. Another area where Joomla can bridge the gap is when considering all of the different social networks that are available - all doing similar kinds of things but generally with a difference focus or end goal. Not only can you build your own API with the Joomla Platform, but you can also use it to consume other API’s like those provided by the social networks, or anything else for that matter.\n\nGraphics from http://www.yootheme.com/icons\n
  16. The Joomla Platform has a huge amount of potential, stored energy that is just waiting to be released. These are just some thoughts on where that can be released.\n\nIn the ‘nuke’ era, everyone saw Joomla as something that was pretty, easy and simple. We need to make the Joomla Platform the same for web services.\n\nWith the Platform we can build tools that improve our code quality (sniffers and tests), deployment tools and security scanning. What we can do in the Platform virtually without restraint also bubbles downstream to the CMS and makes the entire Joomla ecosystem better. We can also build tools and applications that made writing applications themselves easier and quicker.\n\nJoomla as a Platform can have a hunger to own the space of being able to consume other API’s (Facebook, Twitter, Linked In, Github). While we can still do the large, monolithic projects of old, it’s far more important to be aiming for that glue-in-the-middle.\n\nFinally, we have an army of people who are experienced in building web sites and extensions. It’s not to hard to imagine what would happen if we directed some of the energy into building an army of people that knew how to build platform applications.\n
  17. \n
  18. Source: https://groups.google.com/forum/#!forum/joomla-dev-platform\n
  19. Source: http://developer.joomla.org/platform-manual.html\n
  20. \n
  21. Thank you!\n