September 10, 2009, Frankfurt am Main Comparison of CMS : Improving TYPO3 functionality T3CON09, Frankfurt am Main Fedir RYKHTIK [email protected] September 10, 2009
September 10, 2009, Frankfurt am Main Comparison of CMS : Comparison of CMS : Improving TYPO3 functionality Improving TYPO3 functionality • Tutorial 3h Tutorial 3h • 2 parts with coffee break in the middle 2 parts with coffee break in the middle • Be ready to the dialogue Be ready to the dialogue • Feel free to propose Your ideas Feel free to propose Your ideas
September 10, 2009, Frankfurt am Main About the speaker Fedir RYKHTIK Education : M.Sc. in Communication networks, Kharkiv National University of Radioelectronic, Ukraine. Position : Open Source CMS Web developer in BleuRoy.com (Marseille, France). Specialisation : large scalable CMS sites with advanced information architecture.
September 10, 2009, Frankfurt am Main Speaker relationship with CMS • Technology : LAMP (Linux-Apache-MySQL-PHP) • Preferable licence : GNU GPL • Priority to scalable modular solutions
September 10, 2009, Frankfurt am Main About the audience • Do You make code contributions to the TYPO3 ? • Do You make sites with CMS others than TYPO3 ? • Did You saw in other CMS features interesting stuff, which not exists in TYPO3 ?
September 10, 2009, Frankfurt am Main Tutorial objective • To show how we could improve the quality and the logic of the TYPO3 Core and community extensions • To help to adapt the TYPO3 to the future tendencies of CMS Web development
September 10, 2009, Frankfurt am Main Tutorial structure • Analysing TYPO3 • Here FLOW3 comes • Diving into the world of CMS • A little bit of Frameworks • Improving TYPO3 • The consequences of TYPO3 improving • Questions & Answers • Contact exchange
September 10, 2009, Frankfurt am Main Analysing TYPO3 Analysing TYPO3 • Common overview Common overview • Architecture Architecture • Administration Administration • Development Development • Interfaces Interfaces • Collaborative work Collaborative work
September 10, 2009, Frankfurt am Main Common overview • Chronicles of TYPO3 : 1997- 2009, long way, full of experience • Intelligent multidimensional structure • Adapted for big sites, with complex architecture
September 10, 2009, Frankfurt am Main TYPO3 Architecture • Flexible structure • FE / BE functions separation, different API • TCA / TCE / TSFE • InstallTool • TypoScript for FE & BE structure (TSConfig)
September 10, 2009, Frankfurt am Main Development • Extensions with FE Plugins & BE Modules • Kickstarter • XCLASS • Hooks • Complex API; probably, not always intuitive
September 10, 2009, Frankfurt am Main Interfaces • FE • TemplaVoila! • Substitution's mechanism • Clean FE output • BE • Very complete (too much sometimes) • Possibility of easy integration of 3rd part modules • Hardcoded
September 10, 2009, Frankfurt am Main Collaborative work • Flexible system of rights • Documents workflow • Separated workspaces • System of versionning • Task center
September 10, 2009, Frankfurt am Main Here FLOW3 comes Here FLOW3 comes • Real MVC framework Real MVC framework • Brings new methodologies Brings new methodologies • Better code quality Better code quality • New template engine New template engine • Content repository Content repository • Adapted PHP 5.3 Adapted PHP 5.3
September 10, 2009, Frankfurt am Main Is it enough ? Is an intelligent framework is enough to satisfy all CMS needs ? Framework is the fundamental base of the application, but after there the application logic defines the behaviour of the system. Let's see what else could we find next door.
September 10, 2009, Frankfurt am Main Diving into the world of CMS Hundreds of CMS, in different languages : Hundreds of CMS, in different languages : PHP, Java, Python, Ruby, ASP, .Net, … PHP, Java, Python, Ruby, ASP, .Net, …
September 10, 2009, Frankfurt am Main CMS types • General Web purpose (WCM) • Blog / multiblog CMS • Educational CMS • Enterprise CMS (ECM, DM, CRM, ERP) • e-Commerce • Team collaboration CMS ( Groupware CMS) • Media content management CMS • Mobile CMS • Component Content Management Systems
September 10, 2009, Frankfurt am Main Evolution of CMS concept • Before : Time of identical solutions with gadgets. It's enough just to have CMS, with everything ready, use it, with a bit of parameters changing. Only site template and site content are different. • Now : Time of own application, efficient & functional. To have a CMS like a base, create personalized projects with custom logic. Sites becomes to be functionally different, even if the CMS is the same.
September 10, 2009, Frankfurt am Main The main difference between CMS • Adopted to Your project • Flexibility (all the levels) • Performance • CMS power + Quantity of community members + Quality of members communication + Quality of developed packages (verified, supported) - Quantity of developed packages • Cost of development • Cost of support
September 10, 2009, Frankfurt am Main Drupal • Friendly style • Very extendible • Taxonomies • Themes • Custom content types • Simple API – hook based • GNU GPL
September 10, 2009, Frankfurt am Main SilverStripe • Simple CMS with high usability • All basic needs • OOP code • Modules, widgets, themes • BSD license
September 10, 2009, Frankfurt am Main eZ Publish • Complex multifunctional CMS • Fine multilingual support • SEO-friendly • Workflows • Original template system • CNU GPL + Proprietary licence
September 10, 2009, Frankfurt am Main Liferay • Java • Nice Apple inspired default style • Good busyness strategy • Portal • Social Offic : Cloud edition • Export/Import data • Licence : MIT
September 10, 2009, Frankfurt am Main Plone • Python • Built on the Zope application server • Document publishing / collaboration tool • Very rich in functionalities • Huge community • Interface conforms to WCAG-AAA and U.S. section 508 • GNU GPL
September 10, 2009, Frankfurt am Main Nuxeo • Document Management • SaaS : Cloud Edition • MS Office & Open Office support • Collaborative work • Workflow • DAM • Licence : GNU LGPL
September 10, 2009, Frankfurt am Main A little bit of Frameworks A little bit of Frameworks • Today almost any advanced OSS CMS has own Today almost any advanced OSS CMS has own framework, which implement the philosophy of the framework, which implement the philosophy of the CMS, helps to standardise the code of the extensions CMS, helps to standardise the code of the extensions and Core. and Core. • Standalone frameworks are good examples for Standalone frameworks are good examples for teams who are working on the code of TYPO3. teams who are working on the code of TYPO3.
September 10, 2009, Frankfurt am Main Where is the way of TYPO3 evolution ? Where is the way of TYPO3 evolution ? • Each of CMS has its own auditory, its own structure, Each of CMS has its own auditory, its own structure, pluses and minuses in realization. pluses and minuses in realization. • The question is : where the Internet goes ? The question is : where the Internet goes ? • The time to decide the Future of TYPO3 – is Now ! The time to decide the Future of TYPO3 – is Now !
September 10, 2009, Frankfurt am Main Improving TYPO3 Improving TYPO3 TYPO3 Curve of learning TYPO3 Curve of learning • TYPO3 Improvements TYPO3 Improvements
September 10, 2009, Frankfurt am Main Improving TYPO3 Improving TYPO3 • Optimize curve of learning • Explore the ways of TYPO3 improving • Taxonomies • Interactivity • Usability • Dynamic SEO Management • Hooks library • Dynamic Templating System • Default Templates • Content import / Export • Custom Workflows • Flexible data object model • Security paradigms for development • DAM Integration • Clustering • Places of social exchange • Extension repository
September 10, 2009, Frankfurt am Main Optimization of curve of learning Optimization of curve of learning Different roles, different problems Different roles, different problems • Server Administrators Server Administrators • Developers Developers • Site Managers Site Managers • Integrators Integrators • Editors Editors
September 10, 2009, Frankfurt am Main Curve of learning : Server Admins Primary functions : TYPO3 installation, state control Possible difficulties : configuration of system modules, security fails Recommended actions : ready to use bash installation scripts; VM (VMWare, kvm, OpenVZ, Proxmox) TYPO3 images on P2P networks, automatic control & update mechanism of the Core & extensions
September 10, 2009, Frankfurt am Main Curve of learning : Developers Primary functions : new extension writing, modification/tuning of public extensions; Possible difficulties : unstandardised code; loose of the time of development. Recommended actions : Core advanced API creation, enlarging of main Core framework functionality, coding guidelines popularization.
September 10, 2009, Frankfurt am Main Curve of learning : Site Managers Primary functions : site configuration & process managing Possible difficulties : distributed processes, hard to look for everything, especially in the case of large sites with complex workflows Recommended actions : administrator panel creation, with possibility to add selectors and indicators to manage the site
September 10, 2009, Frankfurt am Main Curve of learning : Integrators Primary functions : templating, site organization Possible difficulties : not usual for other CMS methods like TypoScript & TemplaVoila Recommended actions : predefined packages of TYPO3 with explicative commentaries
September 10, 2009, Frankfurt am Main Curve of learning : Editors Primary functions : Content editing, Workflow editing Possible difficulties : non-ergonomic editing Recommended solutions : possibility of offline editing
September 10, 2009, Frankfurt am Main Taxonomies Objective : Content structuring Problem : Many content / objects, hard to find, hard to manage Solution : Using vocabularies and terms to tag the content / objects Participants : Site Administrators, Integrators, Internet Visitors Consequences : Associative organization of content Implementation in TYPO3 : TCA-based module Reference CMS : Drupal (PHP), Liferay (Java)
September 10, 2009, Frankfurt am Main Taxonomies TYPO3 already has a taxonomy, a simple one. • Linear content sequences – monocriterial • Tree hierarchy : parent – child relationship • Semantic relationship via taxonomies
September 10, 2009, Frankfurt am Main Taxonomies • Object • Term • Vocabulary Terms could have complex hierarchy, with parents/child relationships, synonyms. Taxonomies are object-types independent, could be used with different types of objects.
September 10, 2009, Frankfurt am Main Content Organisation • Organization & presentation of large data volumes with proposition of navigation between the elements by custom rule • Optimization of system resources to work with well ranged data • Flexible site structure
September 10, 2009, Frankfurt am Main Interactivity Objective : Give to the visitor the possibility to exchange with system and other visitors in custom way Problem : absence of standards in TYPO3 to automatize the exchange with FE User Solution : advanced interface API development Participants : Web Developers, Integrators, Internet Visitors Consequences : easy and secure creation of interfaces stimulate community-driven module Implementation in TYPO3 : advanced interface API as Core feature (form API, advanced user model API) Reference CMS : Drupal (PHP)
September 10, 2009, Frankfurt am Main BE Usability Objective : Usable & ergonomic BE interface Problem : A lot of fields, tabs, buttons, Solution : Optimization of representation with possibility to enlarge the functionality for the custom needs, creation of profiles by default. Participants : Web Developers, Integrators, Site Administrators Consequences : Efficacy in work of administrator Implementation in TYPO3 : Presets into BE users administration panel, BE interface visual configurator. Reference CMS : SilverStripe (PHP)
September 10, 2009, Frankfurt am Main Dynamic SEO Management Objective : Providing to the site administrator a powerful instrument for search engine optimisation Problem : Currently SEO in TYPO3 – it's developer work, sometimes it's some heavy to change the URL rewrite model Solution : tool for clean & elegant URL, with easy interface Participants : Web Developers, Site Administrators Consequences : Administrator could manage SEO without technical skills Implementation in TYPO3 : SEO administrator module Reference CMS : eZ Publish (PHP), Drupal (PHP)
September 10, 2009, Frankfurt am Main Hooks library Objective : Extension & core synergy Problem : Standalone extensions, many sub-APIs Solution : Core API with clearly declared hooks and explications where and how to use, standardization of each basic hook Participants : Web Developers Consequences : Complexes of extensions working in synergism with each other Implementation in TYPO3 : Documentation, additional hooks Reference CMS : Wordpress (PHP), Drupal (PHP)
September 10, 2009, Frankfurt am Main Dynamic Templating System Objective : Dynamic templating providing Problem : Static templates, integrators are depended from developers Solution : Template scripting, “pipe”-methodology Participants : Web Developers, Integrators Consequences : Optimization of site creation process Implementation in TYPO3 : Additional script language Reference CMS : Django (Python), eZ Publish (PHP)
September 10, 2009, Frankfurt am Main Default Templates Objective : BE & FE accessible templates Problem : Unexisting FE templates, not accessible BE templates Solution : Basic FE templates creation; norms of accessibility Participants : Interface Experts, Site Administrators, Internet Visitors Consequences : more wide distribution of TYPO3, faster site construction for some kind of projects, Implementation in TYPO3 : Templates library on typo3.org Reference CMS : Plone (Python), Wordpress (PHP), Drupal (PHP)
September 10, 2009, Frankfurt am Main Content import / export Objective : Migration facility. Problem : Currently API is on-line editing oriented. Solution : Change the paradigm of data processing. Participants : Web Developers Consequences : Data automatic exchange Possibility of offline editing. Implementation in TYPO3 : Data API Reference CMS : Liferay (Java), Nuxeo (Java), eZ Publish(PHP)
September 10, 2009, Frankfurt am Main Custom Workflows Objective : Flexible workflows Problem : Workflow could have custom number of stages Solution : Construct workflow from elements Participants : Web Developers, Site Administrators, Editors Consequences : Possibility of custom processes Implementation in TYPO3 : Workspace system reorganization Reference CMS : Drupal, eZ Publish
September 10, 2009, Frankfurt am Main Traditional stages in TYPO3 • Editing Reviewing Publishing → → • 2 validation could be not enough • Custom stages
September 10, 2009, Frankfurt am Main Flexible data object model Objective : Custom content types Problem : Pages types or separated tables. No API. Solution : System of internal Data management Participants : Web Developers, Integrators Consequences : Development cycle optimization. Data exchange simplification. New powerful extensions. Implementation in TYPO3 : TYPO3 CR in TYPO3 5 ? References : Drupal, eZ Publish
September 10, 2009, Frankfurt am Main Security paradigms for development Objective : Make code secure Problem : SQL Injections, XSS, hacker attacks ... Solution : Data filtering API Participants : Web Developers, Server Administrators, Site Administrators Consequences : Secure code in Core & in extensions Implementation in TYPO3 : Core code libraries Reference CMS : TYPO3 5
September 10, 2009, Frankfurt am Main DAM Integration Objective : Store/manage the files in dB, to manage data on the level of objects Problem : Versionning, security, import/export. Solution : dB driven content managing Participants : Web Developers, Site Administrators Consequences : Better security. Facility of clustering. Implementation in TYPO3 : DAM Reference CMS : MediaWiki, Nuxeo, eZ Publish, Liferay
September 10, 2009, Frankfurt am Main Clustering Objective : Provide easy implemented clustering mechanism Problem : Cache, data storage Solution : Fully distributed cache, DAM Participants : Server Administrators, Web Developers Consequences : Easy clustering. Implementation in TYPO3 : DAM, modification of cache mechanism Reference CMS : MediaWiki, Alfresco
September 10, 2009, Frankfurt am Main Places of social exchange Objective : Exchange experience between the members Problem : Separation of TYPO3 experience information, insufficiency of mailing lists Solution : Moving typo3.org to Web2.0 Participants : Server Administrators, Web Developers, Integrators, Site Administrators Consequences : better TYOP3 quality Implementation in TYPO3 : System of forums, RSS Reference CMS : Wordpress, Drupal
September 10, 2009, Frankfurt am Main Extension repository Objective : Optimization of the TYPO3 extension repository Problem : Many extensions, hard to find the extension You need Solution : Supplementary mechanisms of search and transversal navigation, provide a connection with the Forge Participants : Server Administrators, Web Developers, System Administrators Consequences : More active extensions distribution, concentration on the development of the more interesting extensions Implementation in TYPO3 : Advanced search on typo3.org Reference CMS : Plone, Wordpress, Drupal
September 10, 2009, Frankfurt am Main Extension repository • http://plone.org/products • http://wordpress.org/extend/ • http://drupal.org/project/Modules
September 10, 2009, Frankfurt am Main The consequences of TYPO3 improving The consequences of TYPO3 improving • Bigger audience Bigger audience • Evolution TYPO3 API Evolution TYPO3 API • Better code quality Better code quality • Simple & clear development Simple & clear development • More interesting projects More interesting projects • Personalization cost is less Personalization cost is less • Bigger audience Bigger audience • Evolution TYPO3 API Evolution TYPO3 API • Better code quality Better code quality • Simple & clear development Simple & clear development • More interesting projects More interesting projects • Personalization cost is less Personalization cost is less
September 10, 2009, Frankfurt am Main Implementation of proposed improvements • The major modifications could be done only in TYPO3 v.5, as they ask complete rebuild of some part of the system. • Some of proposed modifications could be ported to the TYPO3 v.4.4 as FLOW3 & Fluid parts are implemented in v.4.3.
September 10, 2009, Frankfurt am Main Credits Abstractions http://www.imageabstraction.com/ TYPO3 Analysing http://www.flickr.com/photos/loungeonflickr/2674483278