Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A New Patchwork: Bringing CI, patch tracking and more to the Mailing List

A New Patchwork: Bringing CI, patch tracking and more to the Mailing List

Mailing lists are the bedrock of many open source software projects, and have been so since the early days of the Internet. However, mailing lists can struggle to compete with code collaboration tools like Gerrit and Rietveld, many of which offer features such as integration with automated testing tools and patch tracking. How can such features be integrated into existing, mailing list-based projects like the Linux kernel or DPDK? The presenter reports on the ongoing work around the widely-deployed 'patchwork' tool to do just this.

Tracking of patches between development mailing lists and automated testing tools can be accomplished using patchwork. patchwork provides a web interface for patches submitted to mailing lists and presents them alongside any comments. patchwork also supports the tracking of the state of patches, be they Accepted, Rejected or Under Review. By design, patchwork is not intended to replace mailing lists but rather supplement them: these features are entirely optional, but where used can help ease the burden on maintainers by removing the need to perform tedious, time-consuming and low-value tasks like manual sorting. patchwork is already widely deployed for many projects, and instances can be found on kernel.org, dpdk.org and openembedded.org, to name but a few. There are also many projects, including Open vSwitch and QEMU, that can be found on ozlabs.org, which is maintained by the original author of patchwork.

This talk outlines the ongoing work to supplement development mailing lists with web-based workflows using patchwork. We demonstrate how features such as continuous integration support, automated patch and series tracking and a vastly expanded API help position the combination of the Mailing List and patchwork as a viable, feature-competitive alternative to tools such as Gerrit or Rietveld. We also detail some of the complexities of structuring the inherently unstructured data found on mailing lists. How do I identify a series of patches, for example? How do identify a reply to a patch? How do I identify a patch itself?

This talk be of particular interest to testers of open source, mailing list-based projects such as the Linux kernel, QEMU, DPDK or Open vSwitch. These users will be able take advantage of features like support for continuous integration servers and series tracking to develop automated, distributed testing infrastructures. Communities like OpenStack have shown that such infrastructures are critical for delivering software faster while reducing risk and maintenance cost. Such an infrastructure is currently being developed for the DPDK community, and it is easy to envision a similar roll-out for other projects with similar requirements.

It will also be of interest to the developers of these projects. These developers can already use patchwork as a tool to track patch backlogs, maintain personal TODO lists, or just browse submissions via a web UI/XML-RPC API. However, the new features provide these users with functionality that can help automate even more of the tedious yet necessary overhead tasks.

These slides were presented at FOSDEM 2016 [1]

[1] https://fosdem.org/2016/schedule/event/patchwork/


Stephen Finucane

January 31, 2016


  1. None
  2. Stephen Finucane (@stephenfin) OpenStack Software Developer @ Intel stephen.finucane@intel.com github.com/stephenfin

  3. None
  4. None
  5. None
  6. None
  7. None
  8. None
  9. state submitter reviews subject date delegate

  10. None
  11. None
  12. None
  13. None
  14. None
  15. different types hyperlinked reports multiple providers

  16. None
  17. None
  18. None
  19. None
  20. None
  21. Django 1.8  Python 3  PEP8  Django 1.9+

    □ Documentation □ Code Coverage □
  22. None
  23. None
  24. None
  25. [1/3] Do something [2/3] Do something else [3/3] Do final

  26. None
  27. None
  28. [2/3] Do something else Message-Id: <ccc@example.com> In-Reply-To: <aaa@example.com> References: [<aaa@example.com>]

  29. [1/3 v2] Do something [2/3 v2] Do something else [3/3

    v2] Do final thing
  30. [1/3] Do something From: <john@example.com> To: ...

  31. [1/3] Do something From: <john@example.com> To: ...

  32. [1/3 v2] Do sumin From: <eric@example.com> To: ...

  33. None
  34. swagger: '2.0' info: title: Patchwork API description: | Patchwork is

    a web-based patch tracking system designed to facilitate the contribution and management of contributions to an open-source project. version: "1.0.0" schemes: - https basePath: /v1 produces: - application/json paths: /: get: ...
  35. None
  36. [ { "days": [ 2, 11, ... 0 ], "total":

    8, "week": 1410652800 }, { ... } ] contributors additions, deletions patches per hour/day
  37. None
  38. None
  39. None
  40. waffle.io/getpatchwork/patchwork github.com/getpatchwork/patchwork patchwork.ozlabs.org

  41. Stephen Finucane (@stephenfin) OpenStack Software Developer @ Intel stephen.finucane@intel.com github.com/stephenfin

  42. • Icons made by Freepik from www.flaticon.com are licensed under

    CC BY 3.0 • Icons made by Dave Gandy from www.flaticon.com are licensed under CC BY 3.0