pact-foundation / roadmap

Developer Relations @ Pact - Your map to the Pact landscape for all-comers (maintainers, contributors, users, newbies)
https://pact.io/
MIT License
39 stars 6 forks source link

Identify key Pact core assets - Update to Ruby 3.1 - Document Pact Universe #10

Closed YOU54F closed 4 months ago

YOU54F commented 1 year ago

Aim

Why?

What happened?

Root cause?

What are we doing about it?

But aren't we moving to the rust core?

Yes! But we understand not all languages are there right now, and we don't have 100% feature parity in the pact-ruby-standalone package compared to the Rust reference core. There is actually very little, with potentially the only limitation being the pact_broker-client functionality.

Happy to be shown otherwise! If anyone is interested in build out CLI tools in Rust, we have some examples you can follow, if anyone wanted to make a Rust based implementation of the pact_broker-client. Whilst we know it has value, the core maintainers are busy delivering other features, and fixes to users, and therefore it isn't something we are likely to pick up soon, but we are always happy to guide.

Related issues

Repositories affected and associated PR's

Dependency chain releasing instructions

Note Some of these are out of date, or don't have release note pages, so will be captured for snagging

Ruby Goldberg Machine

graph TD;
    pact-support;
    pact-support-->pact-mock_service;
    pact-support-->pact-message;
    pact-mock_service-->pact-message;
    pact-message-->pact-provider-verifier;
    pact-->pact-provider-verifier;
    pact_broker-client;
    pact-->pact-ruby-standalone;
    pact-mock_service-->pact-ruby-standalone;
    pact-support-->pact-ruby-standalone;
    pact-provider-verifier-->pact-ruby-standalone;
    pact_broker-client-->pact-ruby-standalone;
    pact-message-->pact-ruby-standalone;
    pact-->pact-ruby-cli;
    pact-ruby-standalone-->homebrew-pact-ruby-standalone;
    pact-ruby-standalone-->pact-python;
    pact-ruby-standalone-->pact-php;
    pact-ruby-standalone-->pact-node-->pact-js-v9;
    pact-ruby-standalone-->pact-js-core-->pact-js-v10
    pact-js-v9-->jest-pact;
    pact-js-v9-->mocha-pact;
    pact-js-v9-->nestjs-pact;
    pact-js-v10-->jest-pact;
    pact-js-v10-->nestjs-pact;
    pact-ruby-standalone-->pact-go-v1;
    pact-ruby-standalone-->pact-net;
    pact-ruby-standalone-->pact-consumer-swift;

Ruby Standalone Consumers Goldberg Machine

graph TD;
    pact-->pact-ruby-standalone;
    pact-mock_service-->pact-ruby-standalone;
    pact-support-->pact-ruby-standalone;
    pact-provider-verifier-->pact-ruby-standalone;
    pact_broker-client-->pact-ruby-standalone;
    pact-message-->pact-ruby-standalone;
    pact-ruby-standalone-->homebrew-pact-ruby-standalone;
    pact-ruby-standalone-->pact-python;
    pact-ruby-standalone-->pact-php;
    pact-ruby-standalone-->pact-node-->pact-js-v9;
    pact-ruby-standalone-->pact-js-core-->pact-js-v10
    pact-js-v9-->jest-pact;
    pact-js-v9-->mocha-pact;
    pact-js-v9-->nestjs-pact;
    pact-js-v10-->jest-pact;
    pact-js-v10-->nestjs-pact;
    pact-ruby-standalone-->pact-go-v1;
    pact-ruby-standalone-->pact-net;
    pact-ruby-standalone-->pact-consumer-swift;

Rust Goldberg machine

graph TD;
    pact_cli;
    pact_models-->pact_cli;
    pact_matching-->pact_cli;
    pact_consumer;
    pact_models-->pact_consumer;
    pact_matching-->pact_consumer;
    pact_mock_server-->pact_consumer;
    pact_ffi;
    pact_matching-->pact_ffi;
    pact_models-->pact_ffi;
    pact_mock_server-->pact_ffi;
    pact_verifier-->pact_ffi;
    pact_matching;
    pact_models-->pact_matching;
    pact_mock_server;
    pact_matching-->pact_mock_server;
    pact_models-->pact_mock_server;
    pact_mock_server_cli;
    pact_matching-->pact_mock_server_cli;
    pact_models-->pact_mock_server_cli;
    pact_mock_server-->pact_mock_server_cli;
    pact_models;
    pact_verifier;
    pact_matching-->pact_verifier;
    pact_models-->pact_verifier;
    pact-plugin-driver-->pact_verifier;
    pact_verifier_cli;
    pact_models-->pact_verifier_cli;
    pact_verifier-->pact_verifier_cli;
    pact_wasm;
    pact_models-->pact_wasm;
    pact-plugin-driver;
    pact_models-->pact-plugin-driver;
    pact_ffi-->pact-js-core-->pact-js-v10;
    pact-js-v10-->jest-pact;
    pact_ffi-->pact-net-v4;
    pact_ffi-->pact-go-v2;
    pact_ffi-->pact-swift-->pact-swift-examples;
    pact_ffi-->pact-dart;
    pact_ffi-->pact-cplusplus;
    pact_mock_server-->pact_elixir;

Rust FFI Consumers Goldberg machine

graph TD;
    pact_ffi;
    pact_ffi-->pact-js-core-->pact-js-v10;
    pact-js-v10-->jest-pact;
    pact_ffi-->pact-net-v4;
    pact_ffi-->pact-go-v2;
    pact_ffi-->pact-swift-->pact-swift-examples;
    pact_ffi-->pact-dart;
    pact_ffi-->pact-cplusplus;

Java Goldberg machine

graph TD;
    pact_jvm;
    pact_jvm-->pact4s;

Pact Ruby Standalone Consumers

Versions

Tested using

Test runs

TimothyJones commented 1 year ago

AMAZING work, @YOU54F!

YOU54F commented 11 months ago

So the big update is complete and working well.

The pact ecosystem is documented here

https://docs.pact.io/diagrams/ecosystem

I need to provide some more links to the ruby libraries on the website at some point.

Thanks for the kind words Tim :)