Ibiza June 4th – 7th 2011 Magento Developers Paradise Magento 2 Project Plans, Ideas and State Dmitriy Soroka System Architect Talk Structure Ambiguity Goals • Dates, Scope • Main directions New Functionality • What will be added R&D • Research results State • Where we are Release Date, Framework, Rewrite or Refactoring, JavaScript … AMBIGUITY AROUND THE PROJECT Technology Changes PHP • PHP 5.3 • ZF 1.x RDBMS • MySQL • Oracle • MSSQL JavaScript • JQuery Complete Rewrite or Refactoring? Rewrite Refactoring Better architecture Process improvements Latest technologies Improvements of existing functionality Experience Developing new features Release Date and Scope • Magento 2 will have almost all features of Magento 1.x • Release scheduled from the middle to the end of 2012 Quality, Performance, Scalability, Security, Modularity, WEB API, RDBMS’s PROJECT GOALS Clear Process and Transparency • A clear roadmap • Publicly available development and collaboration tools • A public code repository Improved product quality • Automated testing – Unit, Integration, Functional, Performance etc. • Continuous integration • Stable upgrade Improved product performance and scalability • Optimization of page load time • Optimization of page generation time • Vertical and horizontal scalability • Automated performance tests Improved product security • Server side validation for all data input • Development process should prevent any vulnerability from OWASP top 10 vulnerabilities list Truly Modular Product • • • • Loose coupling principles Module enabling/disabling Modularity on view level Improved backend modularity Improved WEB API • • • • SOAP XML-RPC JSON-RPC REST Support of multiple RDBMS's • • • • MySQL Oracle MSSQL PostgreSQL Simplified Customization Process • Development of a new functionality • Customization of the existing functionality • Replacing and disabling of the existing functionality Improved Multiple Languages support • Data entry per language • Separation of frontend and backend translations Decreased Learning Curve • Code documentation • Documentation integrated with development process GUI Design Editor, Templates Editor, Upgrade Preview NEW FUNCTIONALITY GUI Design Editor • Managing page types • Managing page layouts • Positioning page blocks • Customizing the blocks look and feel Templates Editor header.phtml footer.phtml abc.html one_template.phtml Safe upgrade between versions • Upgrade in preview mode – Separate DB for upgrade preview – Dedicated code base • Upgrade confirmation step • Latest version backup option Models, EAV, Modularity, Themes fallbacks, View … RESEARCH & DEVELOPMENT Models architecture • Encapsulation • Relations between objects Modularity Module Part Location Definition file app/etc/modules/<module>.xml Classes, configuration app/code/<pool>/<space>/<module>/* Translations app/locale/<code>/<module>.csv Templates and layouts app/design/<area>/<interface>/<theme>/* Skins skin/<area>/<interface>/<theme>/* app/code/<pool>/<space>/<module>/ Modules coupling Component - group of modules with high code coupling. Conditional dependency outside of component will allow to use just particular components CMS Page Block Widget Catalog Bundle Rule Search Review Customer Account Segment Balance Sales Payment Report Order Checkout Cart Shipping PriceRule Tax View Architecture • Templates standardization • Themes modularity • Communication with models Themes Fallback Summer Theme Independence Day Customization for the theme Special Day My Store Theme Winter Theme New Year Theme One more theme Conflicts Between Modules • Multiple extends of one class • Unknown potential conflicts • Database schema modification And more • • • • • • • Routing Controllers level Caching Translations Product prices HTML page semantic … MAGENTO 2 STATE Agile Software Development • Scrum • Acceptance criteria – Tests – Documentation – Code review Atlassian Software Development Tools JIRA issues tracker Confluence documentation Crucible Fisheye Bamboo code review repository browser continuous integration Automated Testing • • • • Unit testing Integration testing Functional testing Performance testing Continuous Integration • Unit tests • Integration tests on – MySQL – Oracle – MSSQL • Code inspection Magento_Profiler • Tracking calls stack (tree) • Various output formats: – HTML – CSV – Firebug • Output filtering Themes Modularity • Module as last level of fallback • Module “view” folder • Skin files in module • Theme structure Changes in File System Structure Magento 1.x app errors js lib media skin tests tools var Magento 2 app dev tests tools lib pub error jslib media skins var Changes in Configuration • Class path declaration config/global/[models|resources|blocks|helpers] • Table names declaration config/models/[code]/ entities • <fieldset> node config/[area]/fieldsets – entity data migrations rules Autoload • Classes map (http://bit.ly/cYYFWX): – Absolute path to the file – No overhead of code pools – No needs in Mage_Compiler Performance Improvements (~20% already) Magento 1 Magento 2 1 rps 10 rps 30 rps Summary • Goals – Transparency, modularity, quality, performance, WEB API, documentation • Research – Models, EAV, components, view • State – Process, tools, tests, base theme modularity, performance Q&A dmitriy@magento.com