– 7 Ibiza June 4 2011 th

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
[email protected]