Snowpatch

Snowpatch is a continuous integration tool for open source projects using patch-based and mailing-list-centric workflows, such as the Linux kernel.

The snowpatch project serves as a bridge between the Patchwork patch tracking system and the Jenkins continuous integration automation server. It monitors the patch queue for incoming patches, applies patches on top of an existing tree, triggers appropriate builds and test suites, and reports the results back to the mailing list and author, providing immediate feedback that contributors and maintainers can use.


Snowpatch testing cycle
Click diagram to enlarge


What technology problem will I help solve?

The snowpatch project fills the gap between development mailing lists and code sent as plain text emails, and test environments in which code can be built and tested. By automatically testing new patches, both developers and maintainers can save time and improve quality of their code. Existing continuous integration (CI) solutions don’t handle patch-based workflows and generally rely on centralized version control systems.


How will snowpatch help my business?

Over the last few years, CI has transformed the way we develop software. By automating the testing process, CI tools give developers rapid feedback and reduce the number of bugs that find their way into software releases.


For projects that are built by a large, distributed community rather than by a single company, CI becomes a bit more complex. Who hosts the infrastructure? Who governs how it’s run? Open communities present their own challenges, which are amplified in the case of a massive project with thousands of contributors such as the Linux kernel. That’s where snowpatch comes in; it fits around highly distributed developer workflows, enabling contributors to automatically test code that affects their particular interests, such as hardware- or feature-specific code, without requiring centralized infrastructure.


Why should a developer contribute?

By contributing to snowpatch, you can improve the way we do testing in a number of open source projects, such as the Linux kernel and OpenPOWER firmware.


If you’re a maintainer of a project using a patch-based workflow, we’d like you to experiment with snowpatch, see how it fits in with your development workflow and share your experiences. Please contribute bug reports, feature suggestions, design ideas or any other enhancements that would make snowpatch more useful for your project.


Also, we use Rust, and Rust is cool! If you’re looking for an opportunity to use this exciting new systems programming language, snowpatch might be it!


Further reading

You can find our source code on GitHub and subscribe to our mailing list.

Snowpatch blog posts

Developer stories