Skip to main content

Pact Open Source Update โ€” January 2025

ยท 6 min read

๐Ÿ‘‹ Wahey, it's 2025, it's the end of January and you've tuned in to another Pact blog. We'll take a look at what's been happening in the Pact ecosystem this month, as well as how you can get involved in shaping Pact's roadmap for the next year. We can't do it alone, and we would love to bring in more contributors and maintainers this year. Hopefully you'll be one of them :)

We'll also keep you posted on the updates from the PactFlow team, as they deliver new features for the commercial product, which brings net benefits to the open-source project, and some of the work our PactFlow engineers are doing across the open-source ecosystem.

Pact OSS Updatesโ€‹

Linux ARM64 Runners now available for open-sourceโ€‹

GitHub announced Linux ARM64 runners available in public preview, which means we can natively run our arm64 builds, eliminating the need for qemu, and actually providing better speeds / efficiency than their x86_64 counterparts.

We've started rolling them out around our different repos. If you spot one that could benefit, why not drop in a PR. Same goes for your other favourite open-source projects.

Pact 2025 Roadmap Planningโ€‹

We are looking at 2024 in a retro, and getting together async to think about the future of Pact, and what our roadmap and priorities look like for the year. We've introduced multiple ways for collaborators to get involved, including bi-weekly maintainers meetings.

If you want to check out the discussion, and get involved, why not check out the issue, and drop us a line

Pact RFCsโ€‹

Pact-Pluginsโ€‹

Ali Ustek dropped in a PR to avoid us relying on a popular, but now unmaintained dependency.

Pact-Plugins - Slackโ€‹

Chat with us in: #pact-plugins.

Pact-JSโ€‹

Following on from pact-js-cli and its split platform/architecture npm packages, the same has now been applied to pact-js-core in this PR.

It's awaiting review, but I've been tested it out against npm, yarn, yarn pnp and pnpm, and it's pretty solid. You'll benefit from smaller package downloads (the benefits of which will depending on your packager) with all the previous benefits of prebuilt node bindings on your machine, eliminating the need for post install steps and a full compiler set (gcc or msvc toolchain).

Pact-JS - Slackโ€‹

Chat with us in: #pact-js

Pact-Pythonโ€‹

Just before the new year turned, Josh dropped the release of Pact Python version 2.3.0. Among the many incremental improvements, the most significant is the support of functional arguments, the ability to map functions to provider states and message descriptions, without the user needing to spin up a separate proxy, or endpoints on their application. This feature provides an improved user experience for providers, and also introduces several breaking changes to the pact.v3 preview.

Read about it here

Pact-Python - Slackโ€‹

Chat to us in: #pact-python.

Pact-PHPโ€‹

Continuing from Tiens RFC for adding matching rules for form/urlencoded bodies, he has completed the implementation and added the examples to pact-php, rounding off work started this time last year.

Great work chap! We really hope you've enjoyed using pact-php v10. We've loved hearing your feedback about the migration, and the benefits you've seen after using it.

If you haven't yet, what are you waiting for?

Pact-PHP - Slackโ€‹

Chat to us in: #pact-php.

Pact-Goโ€‹

Alpine Linux support is now here, despite segfaults during the verification process. We would appreciate any extra eyes, if this feature would be useful to you. you can track my progress here

We've also had to drop the minimum version of golang, to 1.22, in this PR

You can grab these changes in pact-go v2.2.0

Pact-Go - Slackโ€‹

Chat with us in: #pact-go.

Pact-Referenceโ€‹

Marko Justinek aka @surpher, Pact Swift's author, has been working on his library again, and found a few issues when migrating it to the latest version of pact_ffi.

These actually weeded out some regressions, which Ron has now fixed. Have you spotted something, let us know?

Pact-Reference - Slackโ€‹

Chat with us in: #pact-rust.

Pact Brokerโ€‹

We've been pleased to hire a few new members to the PactFlow team over the last year, who you may have seen beginning to drop in pull requests and tweaks to the Pact Broker repo.

We'll be introducing our engineers in our posts, over the year, and I can't wait for you to meet them!

Most Ruby applications, have migrated to use Rack 3.x now, however the Pact-Broker has been impeded due to one of its dependencies. This leaves us with an open CVE in the Sinatra library. Ron has been working on this by way of a custom adapter. You can track it here

One of the biggest challenges with contract-testing at scale, is the discoverability of provider states, in the broker, for any particular provider. I've dropped a PR in, which will be reviewed by the team. It will create a new resource that returns a aggregated de-duplicated list of all provider states for a given provider.

Whilst I think there is lots of room for improvement, which we can discuss another time, I think it provides a good start. Why not test it out and let me know your feedback.

Pact-Broker - Slackโ€‹

Chat to us in: #pact-broker.

Community Eventsโ€‹

Are you talking about Pact or contract-testing this year at an event? Why not let us know and get yourself featured!

Thats a wrapโ€‹

Want to carry on the conversation? Sign up here to join our Slack community, where you will be amongst over 6k other users. It's a safe place to ask questions, and a great place to share the awesome work you are doing in the Pact ecosystem.

Whatever you are up to, let us know, and we can look to get you featured in the Pact post.

See you next month folks!

Cheers, Saf