Tales of the Magento Adobe Stock Integration. Part I.

The final days of June 2019 were unusually hot in Ukraine. The weather that year decided to follow all possible summer standards: sunny days, very high temperatures, and a lack of precipitation. Thus, it was pleasant to sit near the AC on the train during my ride from Kyiv to Kharkiv. In Kharkiv, I took part in the Magento Meetup. These kinds of events are essential in providing a unique opportunity to share knowledge with the community, improve your skills, and to strengthen friendships.

Summertime link-up

The meetup was opened by the Magento Adobe Stock Integration (ASI) presentation from Sergii Ivashenko. This is when I first learned about the project. From there, I worked on ASI for over two years.

During Sergii’s project presentation, the Magento integration was thoroughly explained. This included the time-to-value, which helped explain not just the technical but the business justification. Ultimately, Sergii’s presentation was successful. The audience was clearly engaged, as evidenced by their numerous practical questions. Two aspects leaped out at me, driving me to want to learn more and contribute.

One interesting aspect to me was the build being integrated with a third party system. Construction of such things always challenges e-commerce software engineers in different ways spanning technical, business, and communication aspects. The overall composition of those aspects is key to a stable application. In this way, an engineer is continually tested to think through and bring together various considerations to achieve integrated goals. Is this not a great opportunity?

A second aspect of the project I found considerably powerful was the major strides forward the media content management improvement took the Magento platform. The potential possibility to realize a much higher-quality media resource stemming from the Adobe Stock service through a few clicks right from the admin would prove a real boost for Magento platform project owners.

The second part of the Magento meetup, as it usually is, was a contribution day. Contribution Days exist for engineers to come together and cooperate on a variety of Magento projects. The core goals of such intense activities are in platform improvements, solving complex issues together with Magento community engineers from Adobe in the mix. This format proves invaluable for many, especially for a software development engineer looking to first step forward and start participating in open-source contribution. On this particular Contribution Day, I rolled up my sleeves, so to speak, and made my first contribution to the project. The result was not revolutionary but it proved a big step forward for me, and it provided a practical solution that bettered exception management (however, I clearly over-engineered it and in the next several days changed the approach entirely). My first Contribution Day proved to be a turning point for me as a developer and Magento Community member. Additionally, Adobe Commerce development services play a crucial role in advancing Magento projects, offering expertise and support to developers and businesses seeking to optimize their Magento-based platforms.

As I noted, any kind of complex integration is a challenge for engineers. This is especially true when you work to integrate with the baseline framework. Let’s consider that Magento is an e-commerce system that provides functionality covering thousands of business cases. This ‘sum is greater than any parts’ reality influences and alters the way you approach and construct an application. In this way, all developers must consider more than just what they are solving at any one moment.

Every solution provided to the system should follow best practices not only from the generally accepted principles but also considering that the system supports so much more than the project you (or me in the case) are developing. The Magento technical vision is an excellent example of this. Taking this into account, I rebuilt my first adjustments to the Adobe Stock Integration project with the help of community engineers. I started a long and exciting journey to the professional contribution level. I was not alone during it and had a chance to communicate with talented, experienced developers, and maintainers.

Initial release

In autumn, preparation for the initial GO-LIVE was in full swing. New functionality such as image license, image uploading, and saving additional information from the Adobe Stock Service was under construction. We were fortunate in our timing. We were developing a complex system, but we were able to readily make use of recently approved technical standards by Magento. The timing allowed us to be compatible with the newest Magento releases even before the official GA (General Availability); significant because any backward compatibility issues could have dramatically impacted development customizations. 

As an example, I want to mention the command approach (part of the CQRS – Command Query Responsibility Segregation). Commands simplify your business process automation, make it more granular, and easier to maintain. Also, you can easily reuse them for building combinations of business data flows. The ASI – Adobe Stock Integration – is well granulated by modules:

The Magento_AdobeIms module is responsible for authentication to Adobe services.

The Magento_AdobeStockClient module is responsible for the communication to Adobe Stock API.

The Magento_AdobeStockImage module is responsible for the image handling implementation.

The Magento_MediaGalleryUi module is responsible for the media gallery user interface (UI) implementation.

As mentioned, Magento can be considered an e-commerce framework. Such decomposition allows greater flexibility for third-party vendors using the ASI.

The journey continues.

I was involved in constructing several parts of the integration with described practices (commands, decomposition, etc.). This proved to be just the beginning. This initial process focused all my attention for several months. I read materials about software architecture, practiced a lot, and cooperated with the community. Taking part in the contribution process, I found, brought benefits not only to the open-source project but for my own projects as well. As a developer of e-commerce solutions, I was able to transport my experience and my accomplishments to the businesses I supported. I found this to be a win-win-win situation – for OpenSource, the business I supported, and for me.

Looking back and comparing my first PR to the one I made in the ASI in October 2019, I was amazed by the progress I had made! New development skills, in-depth platform knowledge, and, of course, new friends from different parts of the world – that is what open-source contribution is all about to me. The first release of the project was successful and became an excellent starting point for version 2.0, where new technical challenges appeared.

For anyone asking me, I would say that community contribution is incredible. The technical expertise learned by me and gained by others working on this project was invaluable, and all steps of the ASI construction proved greatly beneficial to the greater community. Magento Community spirit makes this world better through the collaboration of people concentrated on common problem-solving and innovating, or just improving (bigger, better, faster!). All this truly unites like-minded people to reach for and achieve common goals: building a quality service based on sophisticated programming solutions. The payout is an improved personal skill set, a much stronger network of engineers (more friends!), and a thriving tech ecosystem to call home.

…oh, and this is just the beginning. In Part II of this article, I will present interviews with community engineers and managers who lead the Adobe Stock Integration project forward. So stay tuned!