Skip to main content

3 posts tagged with "oss"

View All Tags

ยท 5 min read

Welcome to the Pact Open Source July 2022 update!

Hope you have all been enjoying the sun whenever you are in the world, unless like our Pact core team, you live in Australia. Sweaters at the ready.

This month has seen a flurry of activity across the open source space, with many new contributors helping in a multitude of ways, so we will call out some notable mentions.

โ€ŒThanks to all of the contributors who have made this happen, if you havenโ€™t been mentioned here but wish to appear in a later update, feel free to reach out to me on Slack.

Specific language updatesโ€‹

Golangโ€‹

Attention Golang users - the latest 2.x.x is out (2.0.0-beta.13)! ๐Ÿš€This is quite a big change from the past release, namely weโ€™ve been thinking about the API design with the introduction of V4 and plugins.

Summary:

A word from our Pactflow co-founder & pact-go maintainer Matt Fellows

Because the API is more complex, weโ€™ve used a type state builder pattern to force which options can be used at any point in time, and ensure that pre-requisite methods are called in sequence. We are still not 100% happy with the HTTP package layout (and requiring V2/V3/V4 prefixes on a number of types), so there might be another refactor in that space, but mainly we think it would just be the names of types and packages that could change. We will tidy up the documentation over the next few days, but look to the examples folder in the short term if youโ€™re wondering whatโ€™s changed. Our core maintainer found refactoring the existing examples fairly straightforward, so we hope you do too.

Chat with us in: #pact-go

Node JSโ€‹

Pact-JS - Pact specification V3 beta now supports modifying the request body in the verifier which has been a long standing issue and more work is progressing on stabilizing for General release: https://github.com/pact-foundation/pact-js/tree/feat/v3.0.0/ (v10.0.0-beta.60). Follow the roadmap progress.

Chat with us in: #pact-js

Rustโ€‹

Pact FFI 0.3.3 was released https://github.com/pact-foundation/pact-reference/releases/tag/libpact_ffi-v0.3.3 which brought in add retries to the provider state change calls along with some bug fixes

Chat with us in: #pact-rust

.Netโ€‹

PactNet 4.1.0 is now released and pushed which allows publishing verification results for URI sources

See the upgrade guide for details of the rewrite and how to upgrade from 3.x to 4.x

Chat with us in: #pact-net

Community Cornerโ€‹

You lot were busy this month, despite the sunny climes, donโ€™t forget to nip outdoors!

Just look at all the merged Pull Requests that have come in from the community.

You are all awesome

Pull Requests โ€“ Features/Fixesโ€‹

Big call out to Dave Clissold who performed the first two PRโ€™s in this list, which resolved one of the most active outstanding issues in Pact-JS and indeed across the pact-foundation. It was 3 years old, and shows how difficult it can be to get changes in, with ever-changing demands, but you can get involved, and help deliver the features you want now, and we can help guide you along

Pull Requests โ€“ Docsโ€‹

Much respect to Eduardo Lopez for adding illustrations to our docs, to help guide people around the OSS Broker UI, itโ€™s not all about the code, and there is always a need to keep our documentation up to date and consistent. Found a snag, patch it up with a new PR and get some committer kudos. It can be as easy as adding screenshots, and it will make a massive difference

Pull Requests โ€“ Maintenance Stuffโ€‹

Shout out to Artur Neumann, for being a pivotal member in supporting the pact-js beta rollout and helping make Mattโ€™s life a little easier.

Community Spotlight โ€“ Mike Geevesโ€‹

We havenโ€™t spoken enough about Mike Geeves from Bearly Compiling :chef kiss: - He has been working on Pact on and off, over the last couple of years, and has been thoroughly confused enough by our examples at times, to want to do something about it!! Mike has helped me during my time joining the Pactflow team and has been great for the occasional rant, and productive conversations that always end up in more work. I donโ€™t think weโ€™ve quite cracked pomodoro.

So why did Mike start tickling Pact?

I tend to try and come up with ideas, which I can at least PoC enough to demonstrate what I mean, and then see if there's any uptake of the idea to progress, if not bin it, which has led to the slightly bizarre situation where my first ever open source contribution was in Rust for pact-rust, and I cannot code in Rust ๐Ÿ˜‚

So what are Mike and I up to now? We are looking at our examples with a particular focus on our support for Message Pacts across the different libraries and building up a compatibility matrix with documentation driven from examples. Want to join us on the adventure? Get involved in #documentation over at slack.pact.io

That's all for now, catch you next month!

  • Yousaf Nabi โ€” Developer Advocate at Pactflow and Community Shepherd at Pact.

ยท 8 min read

Welcome to the Pact Open Source June 2022 update!

This month has seen a flurry of activity across the open source space, with many new contributors helping in a multitude of ways, so we will call out some notable mentions.

โ€ŒThanks to all of the contributors who have made this happen, if you havenโ€™t been mentioned here but wish to appear in a later update, feel free to reach out to me on Slack.

Specific language updatesโ€‹

.Netโ€‹

PactNet 4.0.0 is now released and pushed, have a look.

See the upgrade guide for details of the rewrite and how to upgrade from 3.x to 4.x

Some words from our amazing maintainer Adam Rodger:

Release Announcement Now that we've been in beta for a good while I think we're ready for a proper release of PactNet 4.0.0. I think we've ironed out any teething issues now, so thank you to all those that have participated in the beta and raised issues for me to fix. I've got the current latest beta running in production at my employer and everything appears to be working OK. Of course there will be more features and things to add in the future, but I think the core functionality is all there and the API can be considered stable. Adam released PactNet 4.0.0 on 6 June and is now enjoying a well-deserved holiday. Thank you, Adam.

Chat with us in: #pact-net

NestJS + Pact = <3โ€‹

Omer Morad, our friend in, Tel Aviv, Israel, is a backend-oriented developer, OOP flavored, in a distributed systems world and also a Web artisan, TypeScripter, open-source enthusiast, and guitar player.

He recently brought in https://github.com/pact-foundation/nestjs-pact to the pact-foundation and we would love to get it featured on the awesome-nestjs repo.

Are you using NestJS + Pact? Want to help build out an example? Chat with us in: #pact-nestjs

Pull Requestsโ€‹

  1. Pact-Reference - Allow BrokerWithDynamicConfiguration to publish results by Kageru

  2. Pact-JVM โ€“ Support for providerVersionBranch option to replace providerVersionTag with thanks to Ben Pilgrim & Praveen Erode Mohanasundaram

  3. Pact-JVM โ€“ Rejeeshg for updating builds to resolve vulnerabilities. Dependabot or similar would be great here to save the manual effort! PRโ€™s welcome :)

  4. Pact-PHP / Pact-Ruby / All the things โ€“ Shout out to Lewis Cowles and Jonathon Padfield.

Lewis has been working hard on improving alpine support, fixing the pact-php build after a URL change and created a number of issues against the pact-php repo to help the maintainer. Lewis said:

This one introduces scheduled builds so that if a maintainer gets "life happen" then you can still as an org know if that package is failing, and get visibility before a customer comes to you. It's a thing I use if I want to show something so that I know it should always be build-able.

And thanks Jonathon for updating pact-ruby-standalone to use travelling ruby 2.4, we are testing this out now and hope to roll this out across all the libraries soon.

Bi-Directional Adaptersโ€‹

WireMock & .Netโ€‹

Using WireMock & .Net and want to benefit from Bi-Directional Contract Testing?

๐Ÿ”ฅ Now you can generate Pact ๐Ÿ”— contracts from your WireMock Server, check it out here.

Thanks Stef Heyenrath ๐Ÿ˜ for the his work in the community!

Pact-MSW Adapterโ€‹

Pact-MSW-Adapter now has new features and a quick start guide, an international effort with contributors from the UK, Argentina, Spain and Canada. Shouts go out to:

  1. Kiko Ruiz Llorret for request query support
  2. Nicholas Simons for post request support
  3. And we cannot forget Juan Cruz for being an early trailblazer and improving the developer experience vastly

Create your own adapters to use in Bi-Directional Contract Testing!โ€‹

Inspired by our list of tools, but donโ€™t see your favourite? Create your own! Here's how:

  1. Convert your mock format to a supported Pact specification format - we recommend v2 at the moment - see a jsonschema to test against
  2. Create an example - see our existing supported tools and demos
  3. Submit a PR to to get listed

Our awesome communityโ€‹

Developer Relations at Pact-Foundation now has a new home @ https://github.com/pact-foundation/devrel

We recently hooked up Orbit.love, to give us a bit of a glance across our open source estate, and we were able to pull out well over 2k different contributions from just the top 15 in the leaderboard excluding Pactflowโ€™s co-founders!

Particular shout-out to Timothy Jones, who has been on an epic crusade to empower those around him with words of contract testing wisdom and delightful development life-hacks. The Pact world wouldnโ€™t be the same without you all, and we appreciate every contribution big or small.

Pact contributors

Pact contributors

Community is everything for us. And thatโ€™s why we have big plans to dive into the various initiatives and determine how we can acknowledge and support members and the community as a whole for their time and dedication. Without each of you โค๏ธ Pact would not be the leading open source cross-language distributed contract testing framework! Like us, you should be so proud that youโ€™re helping free the world from the burden of microservice spawl and deployment headaches.

Other ways to get involved with Pactโ€‹

The Pact ecosystem is vast, I will be sharing some posts over the upcoming months, showing the size of the estate, and looking to gain insight from you, the community, as to how we can reduce the signal-to-noise and help reduce the cognitive load required to navigate the path the Pact Nirvana in your own organisation.

There are a multitude of ways, and you don't need to be a code wizard to start:

  • ๐Ÿ“™ Docs - Our documentation is the primary way to communicate to our users, you can help out with small changes like a typo, help rewrite larger pieces, or add new content. Think of it as a open source contract testing wiki, and you are all the curators.
  • ๐Ÿš€ Code - We have implementations across multiple languages, and not all of them are at feature parity. Sometimes you might need that feature, or you've found a bug. Every pact-foundation repository is open-source, and contains a contributing guide to help you get started. Maybe you are building your own Pact tooling, let us know, we would love to shout about it.
  • Roadmap / Feature Requests - The Pact roadmap is available on Canny, where you can see some of the teams current and upcoming priorities in the OSS space. You can request new features, or browse the list and vote/comment on ones you would love to see. See one that particularly resonates? You could help work on it, reach out via Slack and we can help guide you through your contribution.
  • Recipes - The community use our tools in a variety of different ways, and solve various challenges that others could benefit. Got something to share? Why not add a new recipe to the site?
  • Workshops - We created a number of workshops, across several languages. Is there a language implementation not covered in the workshop? Maybe you've created or seen some amazing workshops out there in the wild? Add it to the list, or if you are the author, you can discuss bringing your workshop under the Pact-foundation, if you feel all Pact users could benefit
  • Blogs, Videos & Articles - Articles about contract testing are appearing left, right and centre, I can't keep up. Make sure our reading list doesn't get dry, by adding your favourite content to the list
  • Events - Meetups, in person, it feels like a distant memory, but as the doors start opening again, and dinner is provided, people are beginning to flock outdoors. Have you got a meetup or event planned? Already had one and recorded it? You can add them to the list, and let us and the community know about it on Slack.
  • Helping those in the community - We know many of you in the community love sharing your contract testing knowledge with others, you can see the various places our users land for help, sometimes in GitHub issues, Stack overflow, or Slack. You are welcome to help them out whether you are new to Pact, or a seasoned pro, all questions, opinions and thoughts are welcome.
  • Pact champions - Are you like our co-founder Beth Skurrie, who decided that Pact idea was the best thing since sliced bread, and she hasn't stopped yacking on about it since. Want to share your knowledge, and build your social profile in the world of tech with a global platform? Please get in touch with me on Slack, we want to support the amazing work you do! If you love Pact, and want to help the world worry less about micro-service deployment, why not join us on our journey. Who knows where it might lead.

That's all for now, catch you next month!

  • Yousaf Nabi โ€” Developer Advocate at Pactflow and Community Shepherd at Pact.

ยท 6 min read

Welcome to the inaugural Pact Open Source update!

This month Pactflow officially joins the SmartBear family, and with this, the Pact OSS community will be supported by SmartBear. We're excited to join SmartBear and together, expand contract testing to more developers and testers. Read more about what this means for you.

The contributor community has been hard at work uplifting key languages to integrate our Rust shared core, enabling support for the latest features in the specification, plugins and more.โ€Œ โ€Œโ€Œ โ€ŒThanks to all of the contributors who have made this happen.โ€Œ

Specific language updatesโ€‹

.NETโ€‹

Pact-net: Next major release is not far away, with the Pact specification v3 beta stabilising: https://github.com/pact-foundation/pact-net/ (v4.0.0-beta.3).

Chat with us in: #pact-net

Golangโ€‹

Pact-go: Next major release is not far away, with the Pact specification v3 beta stabilising: https://github.com/pact-foundation/pact-go/tree/2.x.x (v2.0.0-beta.10).

Chat with us in: #pact-go

Node JSโ€‹

Pact-JS: Pact specification V3 beta now available: https://github.com/pact-foundation/pact-js/tree/feat/v3.0.0/ (v10.0.0-beta.59). Follow the roadmap progress.

Chat with us in: #pact-js

Swiftโ€‹

Pact-Swift: Pact specification V3 support and provider side verification in Swift: https://github.com/surpher/PactSwift.

Chat with us in: #pact-swift

Scalaโ€‹

Scala-Pact: ๐Ÿšง ITV Pact is moving to maintenance mode and will only support up to Pact specification V2.

pact4s: The future is pact4s, which is a Scala wrapper of Pact JVM and currently supports up to Pact specification V3.

Chat with us in: #pact4s

Pythonโ€‹

Pact-Python: Message support was added in 2021 to enable testing of asynchronous integrations such as RabbitMQ or Kafka (https://github.com/pact-foundation/pact-python/pull/194, https://github.com/pact-foundation/pact-python/pull/251).

Chat to us in: #pact-python

V4 Pact Specificationโ€‹

Pact specification V4 is here! We worked hard on listening to the community, after the release of v3, 5 years ago. We consolidation many of the requests people made about things that haven't worked quite properly. One of the biggest changes is consolidation the file format to allow for HTTP and message interactions with a single file.

Plugins, Protobufs and gRPC (oh my!)โ€‹

Back in September 2021 Matt introduced us to The case for contract testing Protobufs, gRPC and Avro.

We are pleased to announced initial support for testing gRPC interactions via plugins has been added to Pact-JVM (for Junit5) and Pact-Rust including the shared core, enabling distribution to other client libraries.

We have released an official Pactflow Protobuf / gRPC plugin for Pact.

Join the Developer Preview Program for updates, or chat to us in #protobufs.

Pactmanโ€‹

Hungry for docs, but don't want to move from your terminal? Type npx pactman for a treat ๐Ÿ˜ฒ

๐Ÿ” pactman - search the pact docs from your terminal ๐Ÿ‘ฉโ€๐Ÿ’ป

Pactman

Get involved!โ€‹

The Pact ecosystem is vast, I will be sharing some posts over the upcoming months, showing the size of the estate, and looking to gain insight from you, the community, as to how we can reduce the signal-to-noise and help reduce the cognitive load required to navigate the path the Pact Nirvana in your own organisation.

There are a multitude of ways, and you don't need to be a code wizard to start:

  • ๐Ÿ“™ Docs - Our documentation is the primary way to communicate to our users, you can help out with small changes like a typo, help rewrite larger pieces, or add new content. Think of it as a open source contract testing wiki, and you are all the curators.
  • ๐Ÿš€ Code - We have implementations across multiple languages, and not all of them are at feature parity. Sometimes you might need that feature, or you've found a bug. Every pact-foundation repository is open-source, and contains a contributing guide to help you get started. Maybe you are building your own Pact tooling, let us know, we would love to shout about it.
  • Roadmap / Feature Requests - The Pact roadmap is available on Canny, where you can see some of the teams current and upcoming priorities in the OSS space. You can request new features, or browse the list and vote/comment on ones you would love to see. See one that particularly resonates? You could help work on it, reach out via Slack and we can help guide you through your contribution.
  • Recipes - The community use our tools in a variety of different ways, and solve various challenges that others could benefit. Got something to share? Why not add a new recipe to the site?
  • Workshops - We created a number of workshops, across several languages. Is there a language implementation not covered in the workshop? Maybe you've created or seen some amazing workshops out there in the wild? Add it to the list, or if you are the author, you can discuss bringing your workshop under the Pact-foundation, if you feel all Pact users could benefit
  • Blogs, Videos & Articles - Articles about contract testing are appearing left, right and centre, I can't keep up. Make sure our reading list doesn't get dry, by adding your favourite content to the list
  • Events - Meetups, in person, it feels like a distant memory, but as the doors start opening again, and dinner is provided, people are beginning to flock outdoors. Have you got a meetup or event planned? Already had one and recorded it? You can add them to the list, and let us and the community know about it on Slack.
  • Helping those in the community - We know many of you in the community love sharing your contract testing knowledge with others, you can see the various places our users land for help, sometimes in GitHub issues, Stack overflow, or Slack. You are welcome to help them out whether you are new to Pact, or a seasoned pro, all questions, opinions and thoughts are welcome.
  • Pact champions - Are you like our co-founder Beth Skurrie, who decided that Pact idea was the best thing since sliced bread, and she hasn't stopped yacking on about it since. Want to share your knowledge, and build your social profile in the world of tech with a global platform? Please get in touch with me on Slack, we want to support the amazing work you do! If you love Pact, and want to help the world worry less about micro-service deployment, why not join us on our journey. Who knows where it might lead.

That's all for now, catch you next month!

  • Yousaf Nabi โ€” Developer Advocate at Pactflow and Community Shepherd at Pact.