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
Tweet

More Decks by Stephen Finucane

Other Decks in Programming

Transcript

  1. Stephen Finucane (@stephenfin)
    OpenStack Software Developer @ Intel
    [email protected]
    github.com/stephenfin

    View full-size slide

  2. state
    submitter
    reviews
    subject
    date delegate

    View full-size slide

  3. different types
    hyperlinked reports
    multiple providers

    View full-size slide

  4. Django 1.8 
    Python 3 
    PEP8 
    Django 1.9+ □
    Documentation □
    Code Coverage □

    View full-size slide

  5. [1/3] Do something
    [2/3] Do something else
    [3/3] Do final thing

    View full-size slide

  6. [2/3] Do something else
    Message-Id:
    In-Reply-To:
    References: []

    View full-size slide

  7. [1/3 v2] Do something
    [2/3 v2] Do something else
    [3/3 v2] Do final thing

    View full-size slide

  8. [1/3] Do something
    From:
    To: ...

    View full-size slide

  9. [1/3] Do something
    From:
    To: ...

    View full-size slide

  10. [1/3 v2] Do sumin
    From:
    To: ...

    View full-size slide

  11. 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:
    ...

    View full-size slide

  12. [
    {
    "days": [
    2,
    11,
    ...
    0
    ],
    "total": 8,
    "week": 1410652800
    },
    {
    ...
    }
    ]
    contributors
    additions, deletions
    patches per hour/day

    View full-size slide

  13. waffle.io/getpatchwork/patchwork
    github.com/getpatchwork/patchwork
    patchwork.ozlabs.org

    View full-size slide

  14. Stephen Finucane (@stephenfin)
    OpenStack Software Developer @ Intel
    [email protected]
    github.com/stephenfin

    View full-size slide

  15. • 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

    View full-size slide