Magento 2 Multi-Source Inventory (MSI) project is the largest community-driven project lead by Magento to date. And it’s quite an important one. MSI is a missing feature in both Magento Commerce and Magento Open Source. There are a few extensions which partially implement this functionality, but this is one of the things which is better to keep in the core.
The main goal of the project is to bring multi-source inventory functionality to the Magento platform. It is essential for businesses with multiple stores. For now these businesses either:
1) Rely on extensions by companies such as Wyomind and Unirgy. Although they do the job in certain situations, they are not integrated into the core product and lack some important features.
2) Integrate a full-blown ERP solution such as NetSuite with Magento 2. For some companies which don’t require all the functionality provided by an ERP or ORM this will be an overkill.
So that’s why having MSI right in the Magento Platform is quite important for both Magento and merchants who run stores on Magento 2.
I think another goal is to test-drive how this project where most of the development is done by the community will fly. If it will be a success, I expect much more community-driven projects lead by the Magento Community Engineering Team to appear in the near future. Done right, this model should be beneficial to the whole Magento ecosystem.
Currently 24% of the code delivered in Magento 2 Open Source was created by the Magento Community. This is a huge number for such a complex product! It means that there a lot of highly skilled, external engineers working with Magento on daily basis.
The last but not least goal is to build a well-polished product, utilizing only standardized techniques and principles which makes the code robust and easy to understand! This project gives developers a good starting point for learning how to write Magento extensions since MSI modules touch almost all of the Magento functionality.
My own experience contributing to MSI Project
I must say that I was surprised how helpful and responsive all of the community engineering team members are. I was lucky to work on the initial implementation of the shipping algorithm API with Valeriy Nayda. This algorithm API will be used for selecting the most appropriate stock sources to ship products from.
In future I believe you’ll be able to use multiple shipping algorithms which can be chosen depending on some conditions (like customer group, products in the cart, etc).
It will be possible to optimize source selection for product delivery depending on almost anything:
- user location (ship products from the store closer to the user to optimize shipping cost)
- warehouse load (when it’s too many deliveries are queued up from a particular warehouse - it will be faster to ship from another one, even if it’s farther away)
- weather conditions
With the flexibility of MSI, it will even be possible to implement inter-planetary shipments easily when finally colonize Mars. :-)
On the other hand
While you work on core modules you start to better understand decisions made by the Magento core engineers. When you work on a store build you just try to use and extend the existing core features of the Magento, but when you try to build these core features you think about how other people will need to extend them and how to guide them to make proper engineering decisions. You should be careful, reevaluate or rewrite everything from scratch if you feel that your solution could be used incorrectly by other developers. Work done incorrectly in the core will potentially result in hundreds of lost hours by other developers who will try to implement some functionality on top of your poorly-engineered code.
One other interesting thing I have never considered is that if you have never experienced how it is to work in a fully distributed team - you can try and work with a community engineering team. It’s fully distributed, meaning that you’ll have to work 100% remotely and utilize only online tools for communication. With this experience maybe you won’t hesitate to accept a job offer to work in a company with a distributed team.
When it will be released?
Most likely MSI project will be included in the Magento 2.3 release which is planned later this year and it is probably be one of the most anticipated releases, since it will include: MSI, GraphQL, Klarna and BlueFoot CMS & Page Builder. All of which are essential for the continued success of the Magento platform and merchants who rely on the platform to help run their business.
How to contribute?
It is very easy:
1) Find an issue you feel comfortable working on: https://github.com/magento-engcom/msi/issues , ask to assign it to you and submit a pull request
-- or --
2) Join Magento Community Engineering Slack channel #msi and ask anyone to help you find something to work on (to join it - just send an invitation request to engcom (at) magento.com by email)
If you are stuck or not sure how to do something - just ask in the channel - there are 200+ members ready to help.
If you are an agency or a freelancer whose business depend a lot on the success of the Magento 2 platform, it will be beneficial for you to contribute into this project since the whole project will be merged into Magento 2 Open Source and you’ll be a part of bringing Multi Source Inventory to the entire community.