What is the Joomla Framework and why do we need it?

1,324 views

Published on

The new Joomla Framework was met with both skepticism and excitement in the community. What is the difference between the Platform and the Framework? Why is it a good idea? And how does this open us up to the wider PHP community? We'd like to give you some answers.

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,324
On SlideShare
0
From Embeds
0
Number of Embeds
90
Actions
Shares
0
Downloads
9
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

What is the Joomla Framework and why do we need it?

  1. 1. What is the JoomlaFrameworkAnd why do we need it?
  2. 2. Who am I?Active in the JBS since 2009JSST member since 2011Platform Framework maintainer
  3. 3. I talk really fast......so stop me whenever youneed to! ;)
  4. 4. The Joomla Platform
  5. 5. The goodStrong focus on unit testing and continuousintegrationIndependent release cycleMore decoupled codeHigher code quality achievedJ!Oscar 2011Innovation of the Year
  6. 6. The badConfusing version numbersHard to use our great libraries in non Joomla basedappsAll or nothingNeed to maintain a high level of backwardscompatibility
  7. 7. The uglyHuge baggage of CMS specific codeif (class_exists(JError)) {! return JError::raiseWarning(100, Unable toread archive);} else {! throw new RuntimeException(Unable to readarchive);}
  8. 8. So we decided to kill it.
  9. 9. So we decided to kill it.kill renameWhy?
  10. 10. Change in philosophyJoomla! Platform Joomla! FrameworkFotos: Rolf Obermaier (PD), Benjamin D. Esham (CC BY-SA
  11. 11. allows along availablebreakingchangesclear cmscodecommunitycomposercontain currentdevelopersdocumentationfolderframeworkfutureincludinginstall issue joomlalibrarieslistmailing maintainingmakingname namespacing needs packagephpplanplatformpossible projectprovide ready releaseremovalrepositorysuite system talks team tests upgradeversionwider
  12. 12. Namespaces
  13. 13. New since PHP 5.3Can be used to write much more readable codeBetter code organizationVery hard to do in a way that’s backwardscompatible
  14. 14. <?php$client = new JApplicationWebClient;
  15. 15. <?php$client = new JoomlaApplicationWebWebClient;
  16. 16. <?phpuse JoomlaApplicationWebWebClient;$client = new WebClient;
  17. 17. <?phpuse JoomlaApplicationWebWebClient as Client;$client = new Client;
  18. 18. PSRs
  19. 19. PSR-0: AutoloadingPSR-1: Interoperable codePSR-3: LoggingPSR-X: CachePrepared for future PSRs like UrisPSRs and the Framework
  20. 20. What about PSR-2?Nope.
  21. 21. PSR-0
  22. 22. Turns class names into path
  23. 23. JoomlaApplicationWebWebClient
  24. 24. Joomla/Application/Web/WebClient.php
  25. 25. Discrete packages
  26. 26. application archive cacheclient compat controller cryptdata database date eventfilesystem filter form githubgoogle http image inputkeychain language log modeloauth2 profiler registry routersession string test uri utilitiesview
  27. 27. Composer
  28. 28. Per-project dependency managementPublic repository on packagist.orgOr host your own using SatisAdopted by Symfony2, Laravel 4, Zend Framework2, Drupal 8 and many moreCreates an automatic autoloader
  29. 29. And the Framework?Currently 33 packages+ 1 for the entire framework
  30. 30. {    "name": "joomla/tracker",    "description": "Issue Tracking application built on theJoomla! Framework integrating with GitHub to replace theexisting Joomlacode solution.",    "keywords": ["joomla","tracker"],    "homepage": "https://github.com/joomla/jissues",    "license": "GPL-2.0+",! "version": "1.0.0-alpha",    "require": {        "php": ">=5.3.10",        "joomla/framework": "dev-master",        "symfony/http-foundation": "2.2.*",        "elkuku/console-progressbar": "1.0",        "twig/twig" : "1.*",        "mustache/mustache" : "2.1.*"    },    "autoload": {        "psr-0": {            "JoomlaTracker": "src/"        }    },    "minimum-stability": "dev"}
  31. 31. Semantic versioning
  32. 32. }Bugfix}Feature}B/C break1 . 2 . 3
  33. 33. Let’s talk community...
  34. 34. We not only want to offer ourcode to the PHP community...
  35. 35. ...we also want to take theirs.
  36. 36. Support YAML in Registry thanks to Symfony2’sYAMLConsidering to adopt Symfony2’s Session systemDropped JMail in favor of using Swift Mailer orPHPMailerMonolog will probably be the recommended logger
  37. 37. Currently in alpha stateExpected release in Q4 201380% done - but the last 20% are the hardestNeed to fully decouple unit testString package not readyNeed the Cache PSRHow far are we?
  38. 38. And the CMS?
  39. 39. Used in the Joomla Tracker
  40. 40. Discrete packages
  41. 41. Interfaces to the rescue
  42. 42. Thank You.@RouvenWesslingwww.rouvenwessling.deme@rouvenwessling.de

×