A talk I gave at the first Joomla Day in China (Shanghai). It looks at why we split the Platform from the CMS, how we did it and what comes next in terms of the future of Joomla through the Platform.
13. Engagement - stop thinking like a CMS
content management systems
indirect (HTML)
vs
direct (JSON)
information delivery systems
14. The glue in the app economy
Social
Device Network
Business
Data
15. 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
16. 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)
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
What was the motivation for separating the Platform for the CMS. Couldn’t everything just be done under the CMS?\n
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
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
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
What changed and what was the effect? \n
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
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
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
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
\n
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
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
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
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