Concepts

This section outlines key concepts related to Salt extensions.

Salt extension

Salt extensions are pip-installable Python packages that hook into Salt’s module loading system. They function similarly to custom modules found in salt://_modules, salt://_states etc., but with additional benefits like a dedicated testing framework and versioned releases. However, they must be installed on each node individually.

Great module migration

The Salt Project team has embarked on a significant transformation known as the “Great Module Migration.” This initiative involves moving many modules, which were previously part of the core Salt distribution, into separate extensions. While this shift promises to streamline Salt’s core, it also means that many modules will no longer be maintained directly by the Salt team. Instead, their future now depends on community contributors.

Timeline and key events

Why this change?

This drastic change is driven by several key goals:

  1. Streamline Maintenance: Reducing the core Salt codebase makes it easier to maintain and improve.

  2. Deprecate Obsolete Modules: Modules that are no longer relevant or maintained are bulk-deprecated.

  3. Decoupled Releases: Separating modules from the core Salt release cycle allows for faster updates and better backporting. For extensions that are pure Python, only a single artifact will need to be released, rather than dozens per release.

  4. Efficient Salt Distributions: Release platform-specific versions of Salt that are smaller and more efficient.

  5. Faster Development: With fewer modules in the core, testing and review times will decrease, accelerating development.

Categories of modules

The migration splits modules into three categories:

  1. Core modules: These will remain within the Salt codebase and follow the Salt release cycle.

  2. Supported modules (extended core): These modules will move to their own repositories within the saltstack GitHub organization, where they can be maintained separately.

  1. Community Modules: These will be removed from the Salt Core codebase. Community members can take over their maintenance, either in the community-run Salt Extensions GitHub organization or in their own repositories.

Why you should get involved

In conclusion, this migration represents a shift in how Salt is maintained and developed. It opens the door for users and organizations to have a direct impact on the tools they rely on. If you use any of the modules categorized as community modules, their future depends on people like you. By becoming a maintainer or contributor, you can ensure that the modules you depend on continue to thrive and evolve.

GitHub organization

The salt-extensions GitHub organization was established to offer a community-driven, centralized hub for discovering, creating and maintaining Salt extensions. This organization aims to simplify the development and release process for both new extensions and modules extracted from Salt core starting with the 3008 release.

Do you care about a set of modules that will be removed from Salt core? Do you want to publish awesome new Salt functionality? Getting involved is easy!

Copier template

The salt-extension-copier template simplifies the creation and maintenance of Salt extensions. Based on user inputs, it generates a custom boilerplate for anyone to develop new Salt functionality and allows for automated updates when new template versions are released.

Very important: You don’t need to publish within the organization to use it – it works for individual projects too!