Technology stack

Architectural basics

Magento technology stack

Magento’s highly modular structure includes the following open-source technologies:

Stack components include:

  • PHP (5.5 and 5.6)

  • Coding standards PSR-0 (autoloading standard), PSR-1 (basic coding standards), and PSR-2 (coding style guide), PSR-3, PSR-4

  • HTML5

  • CSS3 (LESS CSS pre-processor)

  • JQuery (primary JavaScript library)

  • RequireJS (library that helps load JavaScript resources on demand)

  • Third-party libraries (Zend Framework 1, Zend Framework 2, Symfony)

  • Apache 2.2, 2.4

  • Nginx 1.7

  • MySQL 5.6

  • Composer (dependency management package for PHP)

Optional stack components include:

  • Varnish (caching)

  • Redis (used for session or page caching)

  • Solr (search engine)

Magento also provides an automated testing suite that includes - amongst others - unit, integration, functional and performance test scripts. Components include PHPUnit for the unit test framework and Selenium for the functional test framework.

This framework is included in dev/tests. The functional testing framework mtaf can be found in the separate repository https://github.com/magento/mtf. For more information, see the Functional Testing Framework guide.

Stack basics

Information about routing, caching, and indexing will be provided in a future sprint.

Backward compatibility

Merchants and developers want the process of upgrading between revisions of Magento 2 to be as easy as possible. For merchants, the process must be cost-effective, while developers want their extensions to be forward-compatible for as long as possible.

To help mitigate these concerns, this release introduces a backward compatibility (BC) policy for PHP code. Magento 2.0 uses Semantic Versioning 2.0.0 to indicate whether a change breaks backward compatibility. Version numbers are in the format MAJOR.MINOR.PATCH, where:

  • MAJOR indicates incompatible API changes

  • MINOR indicates backward-compatible functionality has been added

  • PATCH indicates backward-compatible bug fixes

The backward compatibility policy applies to PHP code annotated with @api.

We promise to be backward compatible for classes and methods annotated with @api within MINOR and PATCH updates to our components. As changes are introduced, we will annotate methods with @deprecated. The methods will be removed only with the next MAJOR component version. MAJOR changes will be scheduled no more than once per year; likely during the holiday season when site changes are unlikely.