Vapor β€” packaging and migration of MODX projects

Vapor emerged from a very specific engineering challenge: the need to migrate an existing MODX project as a cohesive system rather than rebuilding it manually from scratch using databases, files, elements, and settings.

At the same time, the original snapshot mechanics already existed within MODX itself and were used in the MODX Cloud infrastructure. However, this was strictly a built-in part of MODX, tightly coupled with its internal implementation. It did not exist as an independent, universal Extra that could simply be installed on any website and used as a standalone migration tool.

The work on Vapor consisted precisely of understanding this internal mechanics, extracting it from MODX, separating it from the environment where it was originally used, and assembling it into an independent, portable component.

In other words, Vapor cannot be accurately described as "ready-made third-party software that Fi1osof merely packaged." The original snapshot logic did rely on code and ideas that existed inside MODX and were associated with the work of the MODX team, but an independent, full-cycle universal component did not exist in that form.

After isolation, the mechanism had to be adapted for standard MODX installations. As a result, Vapor was able to capture the state of an existing website into a transport package and then deploy this snapshot onto another MODX system.

This was fundamentally broader than the MODX Cloud scenario. Vapor could be used to migrate between regular MODX websites: creating a snapshot on one project and deploying it to another MODX installation. The target system could be clean or already contain data; in the latter case, the import could overwrite existing content, which the tool explicitly warned about.

An especially important part of the subsequent work was the return path β€” snapshot import. In the original built-in mechanics, the emphasis was on preparing data for cloud migration, whereas an independent migration tool needed a full-fledged way to restore the project on the receiving end. Therefore, a separate importer appeared in the Vapor version, including import.php, which allowed deploying a prepared snapshot on the target MODX installation.

As a result, Vapor transformed not just into an exporter, but into a full-cycle tool:

existing MODX website β†’ snapshot β†’ transport package β†’ another MODX installation.

Snapshots could include resources, templates, chunks, snippets, settings, data, and other project parts necessary to reproduce the website in a new environment.

From an engineering perspective, Vapor is also interesting as an example of Fi1osof's general approach to MODX: if a useful mechanism already exists within the platform, it is not necessary to write a parallel implementation from scratch. One can understand the existing architecture, isolate the necessary part, remove rigid dependencies, make it independent and reusable.

This is precisely why Vapor holds a special place in the Fi1osof component ecosystem: it solved not the problem of frontend or business logic, but the challenge of the project's portability as a system.

Later on, controversies regarding authorship arose around Vapor because part of the base logic indeed originated from the internal MODX code. However, this does not negate the essence of the work accomplished: transforming a built-in and specialized mechanism into a separate installable component, universalizing it for regular MODX websites, and adding a fully functional import scenario.

The discussion history and explanations regarding the origin of the code can be found in the MODX community archive: https://modx.pro/reviews/22794

The original historical repository of the snapshot mechanism is preserved here: https://github.com/modxcms/vapor