SlideShare ist ein Scribd-Unternehmen logo
1 von 30
The Dependency Management Problem
• App consists of many components
• Dependencies between components
• Optional components
• Compatibility of components
• Unique components per project
• Components management:
– Install
– Uninstall
– Update
No Dependency Manager / PEAR
First Magento CE Release!
2008
What’s Up with PEAR?
• PEAR – PHP Extension and Application Repository
• System-wide installation
• Strict package structure
• Bureaucracy
• PEAR channel hosting
• Dependency issues
• Usability issues
Magento 1.x Package Management
• Monolith release package
•
• Magento Connect Manager:
– Homegrown packaging format
– GUI for management
• PEAR for CLI management
• Vague module versioning
• Not versioned dependencies
Magento 1.x
release package
Feature Modules
Magento libraries
3rd party libraries
Design themes/skins
Localizations
Still No Dependency Manager
Module Manager “modman”
2010
Modman for Magento 1.x
• Modman – command line tool
• Keeps extensions separately from Magento
• Alternative packaging format
• CLI for management
• Use cases:
– Development
– Deployment
Magento 1.x
module package
Community module
modman
First Composer Release!
First Composer Use for Magento 1.x
Magento 2 Development in Progress
2012
Composer Overview
• Composer – dependency manager for PHP
• Composer – CLI tool
• Dependencies per project
• Versioned dependencies
• Package management:
– Install
– Uninstall
– Update
• Classes autoloading
Composer Basic Usage
1. Declaring project dependencies
composer.json
1. Installing dependencies
php composer.phar install
1. Autoloading dependencies
require 'vendor/autoload.php';
vendor/
autoload.php
Zend/…
…
my_project/
composer.json
Installation via Composer
1. Read composer.json
1. Read required packages
2. Read repositories
3. Append packagist.org to repositories
2. For each package:
1. Download from repository
2. Install dependencies recursively
3. Register plugin, if API implemented
Composer Adoption for Magento 1.x
• Composer plugin for Magento 1.x
magento-hackathon/magento-composer-installer
• Deployment strategies:
– Copy
– Move
– Symlink
• Modman packages support
• Composer packages repository
packages.firegento.com
Magento 1.x Composer Package Example
{
"name": "aoepeople/Aoe_Scheduler",
"type": "magento-module",
"description": "Magento Cron Scheduler",
"require": {
"magento-hackathon/magento-composer-installer": "*"
}
}
composer.json
Magento 1.x Composer Project Example
{
"require": {
"magento/core": "1.9.0.1",
"aoepeople/Aoe_Scheduler": "*",
"magento-hackathon/magento-composer-installer": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://packages.firegento.com"
}
]
}
composer.json
Composer Adoption Obstacles in 1.x
• Monolith CE Composer package
• No strict versioning
• No module API version
• No theme version
• No locale version
• Files not in one directory:
– Module files
– Theme & skin files
magento/core
1.9.0.1
Feature Modules
Magento libraries
3rd party libraries
Design themes/skins
Localizations
composer.json
Composer is De Facto Standard
Projects Drop PEAR Support
Magento 2 Dev Beta Release
Composer Adoption for Magento 2
2014
Composer Adoption in Magento 2
• Prerequisites:
– Self-contained modules
– Self-contained themes
• Monolith Granular core packages
• Fork of the Composer plugin for 1.x
magento/magento-composer-installer
• Composer packages repository
packages.magento.com
Composer Package Types in Magento 2
• Package type defines files destination
• Implemented by the Composer plugin
• Custom package types:
magento2-module
magento2-theme
magento2-language
magento2-library
magento2-component
app/code/
app/design/
app/i18n/
lib/internal/
/
Composer Packages in Magento 2
magento/module-catalog
composer.json
Module
magento/theme-frontend-luma
composer.json
Theme
monolog/monolog
composer.json
3rd party library
magento/language-it_it
composer.json
Localization
Composer Packages in Magento 2
magento/zendframework1
composer.json
3rd party library fork
magento/magento2-base
composer.json
Application skeleton
magento/framework
composer.json
Framework
Magento 2 Module Package Example
{
"name": "magento/module-catalog",
"require": {
"php": "~5.5.0|~5.6.0",
"magento/module-store": "0.42.0-beta9",
"magento/framework": "0.42.0-beta9",
"magento/magento-composer-installer": "*"
},
"type": "magento2-module",
"version": "0.42.0-beta9",
"extra": {
"map": [
["*", "Magento/Catalog"]
]
}
}
composer.json
app/code/
Magento/Catalog/
Core Changes
for Composer Adoption
Module Versioning in Magento 2
• Composer requires semantic versioning
semver.org
• Adoption of Semantic Version 2.0.0
<major>.<minor>.<patch>[-<suffix>]
<major> – Incompatible API changes
<minor> – Add functionality in BC manner
<patch> – BC bug fixes
<suffix> – Stability
Module Version Declaration
Magento 1.x module
config.xml
etc/
Version, not semantic
DB schema version
API version, semantic
Magento 2 module package
module.xml
etc/
composer.json
Module Dependencies Declaration
Magento 1.x module
config.xml
etc/
Magento 2 module package
module.xml
etc/
composer.json
Dependencies
ordered, not versioned
Dependencies
not ordered, versioned
Modules order
Magento 2 Repositories
github.com
magento/magento2 – CE mainline
magento/magento2-community-edition – CE Composer project
magento/magento-composer-installer – Composer plugin
magento/zf1 – Fork of Zend Framework 1.x
Results of Composer Adoption
• Granular core packages
• Semantic versioning
• Versioned dependencies
• Theme dependencies
• Locale dependencies
• Validation of environment
– PHP version
– PHP libraries
Resources
• Magento 2
– devdocs.magento.com – Developer documentation
– github.com/magento/magento2 – CE mainline repository
– github.com/magento/magento2-community-edition – CE Composer
project
– github.com/magento/magento-composer-installer – Composer plugin
– packages.magento.com – Composer packages repository
• Magento 1.x
– github.com/magento-hackathon/magento-composer-installer – Composer
plugin
– packages.firegento.com – Composer packages repository
• Composer
– getcomposer.org – Composer tool
– packagist.org – Composer packages repository
– semver.org – Semantic versioning
Q: When is Magento 2 Release?
A: Magento 2 release schedule:
1. Q4 2014 – Dev Beta  Released Dec 17, 2014
2. Q1 2015 – Dev RC
3. Q3 2015 – Merchant Beta
4. Q4 2015 – Merchant GA
Thank You!
Q & A
Sergii Shymko
sergey@shymko.net

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Magento 2 Development for PHP Developers
Magento 2 Development for PHP DevelopersMagento 2 Development for PHP Developers
Magento 2 Development for PHP Developers
 
12 Amazing Features of Magento 2
12 Amazing Features of Magento 212 Amazing Features of Magento 2
12 Amazing Features of Magento 2
 
How to create theme in Magento 2 - Part 2
How to create theme in Magento 2 - Part 2How to create theme in Magento 2 - Part 2
How to create theme in Magento 2 - Part 2
 
MidwestPHP - Getting Started with Magento 2
MidwestPHP - Getting Started with Magento 2MidwestPHP - Getting Started with Magento 2
MidwestPHP - Getting Started with Magento 2
 
Magento 2 Modules are Easy!
Magento 2 Modules are Easy!Magento 2 Modules are Easy!
Magento 2 Modules are Easy!
 
Magento 2: A technical overview
Magento 2: A technical overviewMagento 2: A technical overview
Magento 2: A technical overview
 
Magento 2: New and Innovative? - php[world] 2015
Magento 2: New and Innovative? - php[world] 2015Magento 2: New and Innovative? - php[world] 2015
Magento 2: New and Innovative? - php[world] 2015
 
The journey of mastering Magento 2 for Magento 1 developers
The journey of mastering Magento 2 for Magento 1 developersThe journey of mastering Magento 2 for Magento 1 developers
The journey of mastering Magento 2 for Magento 1 developers
 
Magento 2 Development Best Practices
Magento 2 Development Best PracticesMagento 2 Development Best Practices
Magento 2 Development Best Practices
 
Magento 2 Design Patterns
Magento 2 Design PatternsMagento 2 Design Patterns
Magento 2 Design Patterns
 
Magento 2: Modernizing an eCommerce Powerhouse
Magento 2: Modernizing an eCommerce PowerhouseMagento 2: Modernizing an eCommerce Powerhouse
Magento 2: Modernizing an eCommerce Powerhouse
 
Magento 2 Dependency Injection, Interceptors, and You - php[world] 2015
Magento 2 Dependency Injection, Interceptors, and You - php[world] 2015Magento 2 Dependency Injection, Interceptors, and You - php[world] 2015
Magento 2 Dependency Injection, Interceptors, and You - php[world] 2015
 
Magento 2 - An Intro to a Modern PHP-Based System - ZendCon 2015
Magento 2 - An Intro to a Modern PHP-Based System - ZendCon 2015Magento 2 - An Intro to a Modern PHP-Based System - ZendCon 2015
Magento 2 - An Intro to a Modern PHP-Based System - ZendCon 2015
 
Magento 2 + composer
Magento 2 + composerMagento 2 + composer
Magento 2 + composer
 
Outlook on Magento 2
Outlook on Magento 2Outlook on Magento 2
Outlook on Magento 2
 
Boost Magento perfomance with Queues
Boost Magento perfomance with QueuesBoost Magento perfomance with Queues
Boost Magento perfomance with Queues
 
Your First Magento 2 Module
Your First Magento 2 ModuleYour First Magento 2 Module
Your First Magento 2 Module
 
Max Yekaterinenko - Magento 2 & Quality
Max Yekaterinenko - Magento 2 & QualityMax Yekaterinenko - Magento 2 & Quality
Max Yekaterinenko - Magento 2 & Quality
 
Convert Magento 1 Extensions to Magento 2
Convert Magento 1 Extensions to Magento 2Convert Magento 1 Extensions to Magento 2
Convert Magento 1 Extensions to Magento 2
 
Madison PHP - Getting Started with Magento 2
Madison PHP - Getting Started with Magento 2Madison PHP - Getting Started with Magento 2
Madison PHP - Getting Started with Magento 2
 

Ähnlich wie Sergii Shymko: Magento 2: Composer for Extensions Distribution

DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
Magento Dev
 
Optimizing Magento Performance with Zend Server
Optimizing Magento Performance with Zend ServerOptimizing Magento Performance with Zend Server
Optimizing Magento Performance with Zend Server
varien
 

Ähnlich wie Sergii Shymko: Magento 2: Composer for Extensions Distribution (20)

Magento 2 Composer for Extensions Distribution
Magento 2 Composer for Extensions DistributionMagento 2 Composer for Extensions Distribution
Magento 2 Composer for Extensions Distribution
 
Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2
 
Composer in Magento
Composer in MagentoComposer in Magento
Composer in Magento
 
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2
Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2
 
php[world] Magento101
php[world] Magento101php[world] Magento101
php[world] Magento101
 
Make implementation of third party elements in magento 2 in 5-times easier
Make implementation of third party elements in magento 2 in 5-times easierMake implementation of third party elements in magento 2 in 5-times easier
Make implementation of third party elements in magento 2 in 5-times easier
 
Oleksii Korshenko - Magento 2 Backwards Compatible Policy
Oleksii Korshenko - Magento 2 Backwards Compatible PolicyOleksii Korshenko - Magento 2 Backwards Compatible Policy
Oleksii Korshenko - Magento 2 Backwards Compatible Policy
 
Magento 2 - Getting started.
Magento 2 - Getting started.Magento 2 - Getting started.
Magento 2 - Getting started.
 
Expert guidance on migrating from magento 1 to magento 2
Expert guidance on migrating from magento 1 to magento 2Expert guidance on migrating from magento 1 to magento 2
Expert guidance on migrating from magento 1 to magento 2
 
Magento 1.x to Magento 2 Code Migration Tools
Magento 1.x to Magento 2 Code Migration ToolsMagento 1.x to Magento 2 Code Migration Tools
Magento 1.x to Magento 2 Code Migration Tools
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin Elements
 
Magento Community Hangouts 10 Feb, 2021 Composer 2 Support
Magento Community Hangouts  10 Feb, 2021 Composer 2 SupportMagento Community Hangouts  10 Feb, 2021 Composer 2 Support
Magento Community Hangouts 10 Feb, 2021 Composer 2 Support
 
Dependency management in Magento with Composer
Dependency management in Magento with ComposerDependency management in Magento with Composer
Dependency management in Magento with Composer
 
Zendcon magento101
Zendcon magento101Zendcon magento101
Zendcon magento101
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
 
Magento 2 Deploy Strategies
Magento 2 Deploy StrategiesMagento 2 Deploy Strategies
Magento 2 Deploy Strategies
 
Magento Fireside Chat: "Wiring Mageno Projects"
Magento Fireside Chat: "Wiring Mageno Projects"Magento Fireside Chat: "Wiring Mageno Projects"
Magento Fireside Chat: "Wiring Mageno Projects"
 
Optimizing Magento Performance with Zend Server
Optimizing Magento Performance with Zend ServerOptimizing Magento Performance with Zend Server
Optimizing Magento Performance with Zend Server
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 

Mehr von Meet Magento Italy

Giulio Gargiullo - Strategie di marketing digitale per avviare l’e-commerce i...
Giulio Gargiullo - Strategie di marketing digitale per avviare l’e-commerce i...Giulio Gargiullo - Strategie di marketing digitale per avviare l’e-commerce i...
Giulio Gargiullo - Strategie di marketing digitale per avviare l’e-commerce i...
Meet Magento Italy
 

Mehr von Meet Magento Italy (20)

Dirk Pinamonti - Come affrontare la sfida del nuovo mercato multicanale e del...
Dirk Pinamonti - Come affrontare la sfida del nuovo mercato multicanale e del...Dirk Pinamonti - Come affrontare la sfida del nuovo mercato multicanale e del...
Dirk Pinamonti - Come affrontare la sfida del nuovo mercato multicanale e del...
 
Vinai Kopp - How i develop M2 modules
Vinai Kopp - How i develop M2 modules Vinai Kopp - How i develop M2 modules
Vinai Kopp - How i develop M2 modules
 
Eugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum PerformanceEugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
 
Muliadi jeo - How to sell online in Indonesia
Muliadi jeo - How to sell online in IndonesiaMuliadi jeo - How to sell online in Indonesia
Muliadi jeo - How to sell online in Indonesia
 
Max Pronko - 10 migration mistakes from Magento 1 to Magento 2
Max Pronko - 10 migration mistakes from Magento 1 to Magento 2Max Pronko - 10 migration mistakes from Magento 1 to Magento 2
Max Pronko - 10 migration mistakes from Magento 1 to Magento 2
 
Alessandro La Ciura - Progettare la migliore integrazione tra live chat ed e-...
Alessandro La Ciura - Progettare la migliore integrazione tra live chat ed e-...Alessandro La Ciura - Progettare la migliore integrazione tra live chat ed e-...
Alessandro La Ciura - Progettare la migliore integrazione tra live chat ed e-...
 
Bodin - Hullin & Potencier - Magento Performance Profiling and Best Practices
Bodin - Hullin & Potencier - Magento Performance Profiling and Best PracticesBodin - Hullin & Potencier - Magento Performance Profiling and Best Practices
Bodin - Hullin & Potencier - Magento Performance Profiling and Best Practices
 
Giulio Gargiullo - Strategie di marketing digitale per avviare l’e-commerce i...
Giulio Gargiullo - Strategie di marketing digitale per avviare l’e-commerce i...Giulio Gargiullo - Strategie di marketing digitale per avviare l’e-commerce i...
Giulio Gargiullo - Strategie di marketing digitale per avviare l’e-commerce i...
 
Vinai Kopp - FPC Hole punching in Magento 2
Vinai Kopp - FPC Hole punching in Magento 2Vinai Kopp - FPC Hole punching in Magento 2
Vinai Kopp - FPC Hole punching in Magento 2
 
Jacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
Jacopo Nardiello - From CI to Prod: Running Magento at scale with KubernetesJacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
Jacopo Nardiello - From CI to Prod: Running Magento at scale with Kubernetes
 
James Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With YouJames Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With You
 
Talesh Seeparsan - The Hound of the Malwarevilles
Talesh Seeparsan - The Hound of the MalwarevillesTalesh Seeparsan - The Hound of the Malwarevilles
Talesh Seeparsan - The Hound of the Malwarevilles
 
Miguel Balparda - A day in support
Miguel Balparda - A day in supportMiguel Balparda - A day in support
Miguel Balparda - A day in support
 
Volodymyr Kublytskyi - Develop Product, Design Platform
Volodymyr Kublytskyi - Develop Product, Design PlatformVolodymyr Kublytskyi - Develop Product, Design Platform
Volodymyr Kublytskyi - Develop Product, Design Platform
 
Rosario Toscano - Processi di ottimizzazione per una crescita continua
Rosario Toscano - Processi di ottimizzazione per una crescita continuaRosario Toscano - Processi di ottimizzazione per una crescita continua
Rosario Toscano - Processi di ottimizzazione per una crescita continua
 
Henrik Feld Jakobsen - How to sell online Scandinavia
Henrik Feld Jakobsen - How to sell online ScandinaviaHenrik Feld Jakobsen - How to sell online Scandinavia
Henrik Feld Jakobsen - How to sell online Scandinavia
 
Rabia Qureshi - How to sell online in UK
Rabia Qureshi - How to sell online in UKRabia Qureshi - How to sell online in UK
Rabia Qureshi - How to sell online in UK
 
Matteo Schuerch - How to sell online in Switzerland
Matteo Schuerch - How to sell online in SwitzerlandMatteo Schuerch - How to sell online in Switzerland
Matteo Schuerch - How to sell online in Switzerland
 
Il data-driven nell’e-commerce: il caso studio Alessi
Il data-driven nell’e-commerce: il caso studio AlessiIl data-driven nell’e-commerce: il caso studio Alessi
Il data-driven nell’e-commerce: il caso studio Alessi
 
Philippe Bernou - Seamless omnichannel solutions with Magento order management
Philippe Bernou - Seamless omnichannel solutions with Magento order managementPhilippe Bernou - Seamless omnichannel solutions with Magento order management
Philippe Bernou - Seamless omnichannel solutions with Magento order management
 

Kürzlich hochgeladen

Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
ZurliaSoop
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
Kayode Fayemi
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
David Celestin
 
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityUnlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Hung Le
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
amilabibi1
 

Kürzlich hochgeladen (17)

Zone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptxZone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptx
 
My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait Cityin kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityUnlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 

Sergii Shymko: Magento 2: Composer for Extensions Distribution

  • 1.
  • 2. The Dependency Management Problem • App consists of many components • Dependencies between components • Optional components • Compatibility of components • Unique components per project • Components management: – Install – Uninstall – Update
  • 3. No Dependency Manager / PEAR First Magento CE Release! 2008
  • 4. What’s Up with PEAR? • PEAR – PHP Extension and Application Repository • System-wide installation • Strict package structure • Bureaucracy • PEAR channel hosting • Dependency issues • Usability issues
  • 5. Magento 1.x Package Management • Monolith release package • • Magento Connect Manager: – Homegrown packaging format – GUI for management • PEAR for CLI management • Vague module versioning • Not versioned dependencies Magento 1.x release package Feature Modules Magento libraries 3rd party libraries Design themes/skins Localizations
  • 6. Still No Dependency Manager Module Manager “modman” 2010
  • 7. Modman for Magento 1.x • Modman – command line tool • Keeps extensions separately from Magento • Alternative packaging format • CLI for management • Use cases: – Development – Deployment Magento 1.x module package Community module modman
  • 8. First Composer Release! First Composer Use for Magento 1.x Magento 2 Development in Progress 2012
  • 9. Composer Overview • Composer – dependency manager for PHP • Composer – CLI tool • Dependencies per project • Versioned dependencies • Package management: – Install – Uninstall – Update • Classes autoloading
  • 10. Composer Basic Usage 1. Declaring project dependencies composer.json 1. Installing dependencies php composer.phar install 1. Autoloading dependencies require 'vendor/autoload.php'; vendor/ autoload.php Zend/… … my_project/ composer.json
  • 11. Installation via Composer 1. Read composer.json 1. Read required packages 2. Read repositories 3. Append packagist.org to repositories 2. For each package: 1. Download from repository 2. Install dependencies recursively 3. Register plugin, if API implemented
  • 12. Composer Adoption for Magento 1.x • Composer plugin for Magento 1.x magento-hackathon/magento-composer-installer • Deployment strategies: – Copy – Move – Symlink • Modman packages support • Composer packages repository packages.firegento.com
  • 13. Magento 1.x Composer Package Example { "name": "aoepeople/Aoe_Scheduler", "type": "magento-module", "description": "Magento Cron Scheduler", "require": { "magento-hackathon/magento-composer-installer": "*" } } composer.json
  • 14. Magento 1.x Composer Project Example { "require": { "magento/core": "1.9.0.1", "aoepeople/Aoe_Scheduler": "*", "magento-hackathon/magento-composer-installer": "*" }, "repositories": [ { "type": "composer", "url": "http://packages.firegento.com" } ] } composer.json
  • 15. Composer Adoption Obstacles in 1.x • Monolith CE Composer package • No strict versioning • No module API version • No theme version • No locale version • Files not in one directory: – Module files – Theme & skin files magento/core 1.9.0.1 Feature Modules Magento libraries 3rd party libraries Design themes/skins Localizations composer.json
  • 16. Composer is De Facto Standard Projects Drop PEAR Support Magento 2 Dev Beta Release Composer Adoption for Magento 2 2014
  • 17. Composer Adoption in Magento 2 • Prerequisites: – Self-contained modules – Self-contained themes • Monolith Granular core packages • Fork of the Composer plugin for 1.x magento/magento-composer-installer • Composer packages repository packages.magento.com
  • 18. Composer Package Types in Magento 2 • Package type defines files destination • Implemented by the Composer plugin • Custom package types: magento2-module magento2-theme magento2-language magento2-library magento2-component app/code/ app/design/ app/i18n/ lib/internal/ /
  • 19. Composer Packages in Magento 2 magento/module-catalog composer.json Module magento/theme-frontend-luma composer.json Theme monolog/monolog composer.json 3rd party library magento/language-it_it composer.json Localization
  • 20. Composer Packages in Magento 2 magento/zendframework1 composer.json 3rd party library fork magento/magento2-base composer.json Application skeleton magento/framework composer.json Framework
  • 21. Magento 2 Module Package Example { "name": "magento/module-catalog", "require": { "php": "~5.5.0|~5.6.0", "magento/module-store": "0.42.0-beta9", "magento/framework": "0.42.0-beta9", "magento/magento-composer-installer": "*" }, "type": "magento2-module", "version": "0.42.0-beta9", "extra": { "map": [ ["*", "Magento/Catalog"] ] } } composer.json app/code/ Magento/Catalog/
  • 23. Module Versioning in Magento 2 • Composer requires semantic versioning semver.org • Adoption of Semantic Version 2.0.0 <major>.<minor>.<patch>[-<suffix>] <major> – Incompatible API changes <minor> – Add functionality in BC manner <patch> – BC bug fixes <suffix> – Stability
  • 24. Module Version Declaration Magento 1.x module config.xml etc/ Version, not semantic DB schema version API version, semantic Magento 2 module package module.xml etc/ composer.json
  • 25. Module Dependencies Declaration Magento 1.x module config.xml etc/ Magento 2 module package module.xml etc/ composer.json Dependencies ordered, not versioned Dependencies not ordered, versioned Modules order
  • 26. Magento 2 Repositories github.com magento/magento2 – CE mainline magento/magento2-community-edition – CE Composer project magento/magento-composer-installer – Composer plugin magento/zf1 – Fork of Zend Framework 1.x
  • 27. Results of Composer Adoption • Granular core packages • Semantic versioning • Versioned dependencies • Theme dependencies • Locale dependencies • Validation of environment – PHP version – PHP libraries
  • 28. Resources • Magento 2 – devdocs.magento.com – Developer documentation – github.com/magento/magento2 – CE mainline repository – github.com/magento/magento2-community-edition – CE Composer project – github.com/magento/magento-composer-installer – Composer plugin – packages.magento.com – Composer packages repository • Magento 1.x – github.com/magento-hackathon/magento-composer-installer – Composer plugin – packages.firegento.com – Composer packages repository • Composer – getcomposer.org – Composer tool – packagist.org – Composer packages repository – semver.org – Semantic versioning
  • 29. Q: When is Magento 2 Release? A: Magento 2 release schedule: 1. Q4 2014 – Dev Beta  Released Dec 17, 2014 2. Q1 2015 – Dev RC 3. Q3 2015 – Merchant Beta 4. Q4 2015 – Merchant GA
  • 30. Thank You! Q & A Sergii Shymko sergey@shymko.net

Hinweis der Redaktion

  1. Magento Community Edition 1.? Release
  2. PEAR – framework & distribution system PEAR – reusable general-purpose libraries System-wide installation by default
  3. Semantic package versioning
  4. Directory ‘vendor’
  5. Call Composer plugin API, if implemented by a package
  6. Plugin developed by community at Magento bugathon Plugin is published at Packagist
  7. Not semantic module versioning DB schema version, but no module API version Single Composer package for CE release
  8. Doctrine, Symfony2, PHPUnit drop PEAR support
  9. Self-contained modules/themes – all files in one directory Forked the hackathon Composer plugin for Magento 1.x to adopt for Magento 2
  10. Forked the hackathon Composer plugin for Magento 1.x to adopt for Magento 2
  11. Forked the hackathon Composer plugin for Magento 1.x to adopt for Magento 2
  12. BC – backward-compatibility <suffix> – dev, patch/p, alpha/a, beta/b, RC
  13. PHP library dependencies, such as Imagemagic, Mcrypt, etc. Theme dependencies on 3rd party libs, such as Angular.js, jQuery carousel, etc.
  14. RC – Release Candidate GA – General Availability