ibiza june 4 th – 7 th 2011. magento developers paradise magento 2 project plans, ideas and state...
TRANSCRIPT
Ibiza June 4th – 7th 2011
Magento Developers Paradise
Magento 2 Project Plans, Ideas and State
Dmitriy SorokaSystem Architect
Talk Structure
• Dates, ScopeAmbiguity
• Main directionsGoals
• What will be addedNew Functionality
• Research resultsR&D
• Where we areState
AMBIGUITY AROUND THE PROJECTRelease Date, Framework, Rewrite or Refactoring, JavaScript …
Technology Changes
•PHP 5.3
•ZF 1.x
PHP•MySQL•Oracle•MSSQL
RDBMS
•JQueryJavaScript
Complete Rewrite or Refactoring?
RewriteBetter architecture
Latest technologies
Experience
RefactoringProcess improvements
Improvements of existing functionality
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
PROJECT GOALSQuality, Performance, Scalability, Security, Modularity, WEB API, RDBMS’s
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
NEW FUNCTIONALITYGUI Design Editor, Templates Editor, Upgrade Preview
• Managing page types• Managing page
layouts• Positioning page
blocks• Customizing the
blocks look and feel
GUI Design Editor
Templates Editor
one_template.phtml
abc.html
footer.phtml
header.phtml
Safe upgrade between versions
• Upgrade in preview mode– Separate DB for upgrade preview– Dedicated code base
• Upgrade confirmation step• Latest version backup option
RESEARCH & DEVELOPMENTModels, EAV, Modularity, Themes fallbacks, View …
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>/
Component - group of modules with high code coupling.
Conditional dependency outside of component will allow to use just particular components
Modules coupling
Catalog
BundleRule
SearchReview
CMS
PageWidget
Block
Customer
AccountSegment
Balance
Sales
PaymentOrder
Report
Checkout
CartShipping
PriceRuleTax
View Architecture
• Templates standardization• Themes modularity• Communication with models
Themes Fallback
My Store Theme
Summer Theme
Independence Day
Customization for the theme
Special Day
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
• Scrum• Acceptance criteria
– Tests– Documentation– Code review
Agile Software Development
Atlassian Software Development Tools
JIRA issues tracker
Confluence documentation
Crucible code review
Fisheye repository browser
Bamboo continuous integration
• Unit testing• Integration testing• Functional testing• Performance testing
Automated Testing
• Unit tests• Integration tests on
– MySQL– Oracle – MSSQL
• Code inspection
Continuous Integration
• Tracking calls stack (tree)
• Various output formats:– HTML– CSV– Firebug
• Output filtering
Magento_Profiler
• Module as last level of fallback
• Module “view” folder• Skin files in module• Theme structure
Themes Modularity
Magento 1.x
app
errors
js
lib
media
skin
tests
tools
var
Magento 2app
dev
tests
tools
lib
pub
error
jslib
media
skins
var
Changes in File System Structure
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)
1 rps 10 rps 30 rps
Magento 1Magento 2
Summary
• Goals– Transparency, modularity, quality, performance, WEB
API, documentation
• Research– Models, EAV, components, view
• State– Process, tools, tests, base theme modularity,
performance