magento / architecture Goto Github PK
View Code? Open in Web Editor NEWA place where Magento architectural discussions happen
A place where Magento architectural discussions happen
Prototype Checkout service.
To do:
[ ] Sync with mainline
[ ] Merge with @antonkril 's lightweight framework
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Recording: no recording due to tech difficulties
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
๐ฅ Recording
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Recording: TBD
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Recording: TBD
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Repository: https://github.com/magento/magento2-phpstorm-plugin
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
wait()
doesn't return the result๐ฅ Recording
PR #52
As per this existing modules will be split into multiple packages.
This has a follow-on impact on existing extensions (ie nearly 100% of extension will require not only a new release but also a separately maintained branch). One idea to minimise the impact would be to keep the package name for CatalogAPI for existing extensions that only use the existing service contracts (ie current best practice extension get less impacted)
As an example an extension today has the following composer.json
"require": {
"magento/module-catalog": "^103.0.0",
and only uses the API interfaces. After splitting the modules ideally this should only be
"require": {
"magento/module-catalog": "^103.0.0 | ^104.0.0",
This would allow the extension to be useful across both versions instead of requiring two separate versions to support both branches:
"require": {
"magento/module-catalog": "^103.0.0",
and
"require": {
"magento/module-catalog-api": "^100.0.0",
Further to allow transitioning into the end state of service isolation it would be great if this could be phased in. Once we know the split and what package names the new modules will have we can add them to the existing Catalog module.
So the existing package magento/module-catalog
adds the following extra packages:
"provide": {
"magento/module-catalog-implementation": "self.version",
"magento/module-catalog-admin": "self.version",
"magento/module-catalog-storefront": "self.version",
}
while the code is not yet moved out. That way it will be possible to release an extension that prepares for the split and is able to work across major release branches.
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
๐ฅ Recording
The following documents should be updated to reflect that changing argument type for ActionGroup is a breaking change:
Action Group entity:
xPath | idAttribute |
---|---|
/actionGroups/actionGroup |
type |
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
๐ฅ Recording
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
magento
GitHub organization for the project, can't use a separate org as it's inconvenient for managing permissionsPlease add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
๐ฅ Recording
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Add common areas/topics to be covered by a Technical Vision to the definition (https://devdocs.magento.com/guides/v2.3/coding-standards/technical-vision/index.html).
Based on magento/devdocs#3639 (comment)
Current approach to tech stack upgrade is to review everything in scope of a release, as a specific task. We should move towards "notified" strategy, where we upgrade a specific library or software as it gets released.
Describe the process and tools that can be used or implemented for upgrading tech stack.
Cover:
Resources:
The following documents should be updated to reflect that adding (throwing a new) exception is a breaking change:
DevBox with Minikube.
AC:
Create high level design for Adobe Target Recommendations integration.
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Provide additional information to be updated in https://docs.magento.com/m2/ce/user_guide/stores/cookie-reference.html :
In response to the new FE Tech Vision and the conversations that followed, developers clearly need an easy way to hit the ground running on a new FE project. CRA is a great start, but it's also very simple and unopinionated (as it should be). To take it a step further, developers need a scaffolding tool for new FE projects. Enter Yeoman.
Yeoman is the web's scaffolding tool for modern web apps.
For this task, build a Yeoman generator that specifically implements the paradigms in the FE Tech Vision. This generator shall extend the CRA with the following features:
To be clear about what this is, it's more than just a boilerplate. A boilerplate would be a good starting point for a project, but then it stops there. Yeoman generators, on the other hand, build the initial project, but also give you a mechanism to scaffold new files as the project grows.
The result of this ticket will be money saved/earned and a massive amount of technical debt prevented during the initial phases of a project.
From @larsroettig on February 7, 2019 15:21
We should add as grumphp for checking the quality of commits.
Sample Config:
parameters:
bin_dir: "./vendor/bin"
git_dir: "."
hooks_dir: ~
hooks_preset: local
stop_on_failure: false
ignore_unstaged_changes: false
ascii:
succeeded: ~
failed: ~
tasks:
phpversion:
project: '7.1'
xmllint:
ignore_patterns: ["src/dev"]
yamllint:
ignore_patterns: ["src/dev"]
securitychecker:
lockfile: ./src/composer.lock
format: ~
end_point: ~
timeout: ~
run_always: false
git_blacklist:
keywords:
- "die("
- "var_dump("
- "print_r("
- "var_export("
- "exit;"
whitelist_patterns:
- /^src\/app\/(.*)/
triggered_by: ['php']
phpmnd:
directory: ./src/app/code
whitelist_patterns: []
exclude: []
exclude_name: []
exclude_path: []
extensions: []
hint: false
ignore_numbers: []
ignore_strings: []
strings: false
triggered_by: ['php']
phpcs:
standard: "./src/dev/tests/static/framework/Magento/ruleset.xml"
severity: ~
error_severity: ~
warning_severity: 6
tab_width: ~
report: summary
report_width: ~
whitelist_patterns:
- /^src\/app\/code\/(.*)/
encoding: ~
ignore_patterns: []
sniffs: []
triggered_by: [php]
phpunit:
config_file: ./dev/tests/phpunit-no-coverage.xml
testsuite: ~
group: []
always_execute: false
We using this tool for more than one year in our projects. We getting better commits and lower rejection rate of Pull Requests.
Info:
https://www.integer-net.com/magento-2-automatic-code-quality-check-with-grumphp/
To discuss:
Copied from original issue: magento/magento-coding-standard#35
Magento 2 supports database storage mode, where the master storage location of media files is the database, and each frontend node stores a local "cached" copy of images on disk to use/serve as and when required.
The current solution is HORRENDOUS.
At the moment, every piece of code that needs to access a media file, must be MediaStorage aware, must check if database storage mode is enable, and must copy the file from the database to the local storage if it doesn't exist and then do what it needs to do with the file.
A quick code inspection through Magento shows there are MANY MANY places where content in media storage is accessed either directly, or through Magento's framework filesystem routines, neither of which are database storage aware, without the necessary database checks and storage of local copies.
The whole media storage subsystem should to be extracted to a single subsystem. Every module wishing to write/read/query an item from media storage does it through a single set of Framework functions.
The media storage subsystem should be easily pluggin-able so that additional storage methods can be introduced. This would allow for combinations such as
Note, the Amazon and Google options are hugely powerful. They allow you to serve the stored content directly from their servers through their own https servers, taking the load off your own machines. This can be easily set in Magento with the media url settings. There would be NO need for ANY local media storage whatsoever which gives a big thumbs up for clustered environments.
I realise there are addon modules available for Amazon and Google storage, but they are hacks into the current system and require a MASSIVE amount of fudging (because the code to access the media storage location is distributed far and wide in M2)
Something to think about as at the moment, both 2.2 and 2.3 are riddled with bugs and nasties related to the database media storage functionality that only rear their head when operating in a clustered setup. (Thats the whole purpose of the DB media storage option IMO)
I'm working my way through the bugs in the current system, but the more I delve into the code, the more I realise, hang on, none of this should be visible to the end user modules.....Where the media is ultimately stored is none of my concern!..... I shouldnt have to be writing code to cache files from the database to local disk, just to check the size of the favicon file, for example.
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
See below.
๐ฅ Recording
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
๐ฅ Recording
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Recording: no recording due to tech difficulties
Develop internal guide on how to deal with two inventory versions.
How to fix issues.
How to build customizations.
How to resolve dependencies.
Concerning the Front-End Technical Vision Document, @DrewML requested I do some research behind react-testing-library
as an alternative suggestion to enzyme
.
@jimbo also requested I take a look at React Test Renderer.
Review magento/devdocs#3524
Investigate a possibility to integrate Depenabot with Magento infrastructure.
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
See #126
SVC (Semantic Versioning Checker) is a tool that validates presence of breaking changes. Used for PRs as team merge code to mainline.
AC:
db_schema_whitelist.json
filesReview magento/devdocs#3003
For 2.3, Zend_Mail
has been removed, as a result Magento interfaces were changed. Currently there are two interfaces: \Magento\Framework\Mail\MessageInterface
(deprecated) and \Magento\Framework\Mail\MailMessageInterface
- both used in Magento code.
But the biggest issue is that new interfaces don't cover some of necessary methods that existed in Zend_Mail
. Current request from the community is to have getFrom()
, getTo()
, getCC()
and getBCC()
methods, as well as methods for managing attachments, supported and they need it in 2.3.
AC:
\Magento\Framework\Mail\MessageInterface
with the new interface\Magento\Framework\Mail\MailMessageInterface
in comparison with the old Zend_Mail
interface and add missing methods to the interface
Please add your topic as a comment to the issue. Use following format:
Topic description and link to PR, if any (duration in min)
The ece-tools package is a thing of beauty. Command line build and deployment tools. Docker compose file creation. An elegant core patch system. Having this tool publicly available would help so many who currently have to roll their own solutions
Note: there are open questions about communication between services, but other people needed to discuss.
Should API return exceptions that then will be thrown or it should return error codes and then proxy implementation would handle and throw appropriate exception?
@kandy API should return exceptions. Whether API return exceptions or code are details of implementations.
Review current extensibility strategy for Page Builder. Propose a long-term and short-term improvements, if necessary.
Prepare a proposal in scope of Services Isolation work that covers impact on Magento extensions.
The document should include:
Include Ravi Menon, Lars Roettig, Navarr Barnier, Kristof Fooman to discussions on this topic.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.