There's lots of moving parts though. I've tried to...
# maintainers
m
There's lots of moving parts though. I've tried to document them and set up scripts to automate most of things: •
surpher/PactSwift
is the main interface that's aiming to remove pact business logic but only act as a Swift interface •
surpher/PactSwiftMockServer
is the wrapper around
lib_pactffi
(and should delegate most/all the business logic to lib.a`. This is the working repo that does the implementation •
surpher/PactSwiftServer
is vending XCFramework binary avoiding maaaasssive repo. This is the "shareable" repo that vends the compiled results of
PactSwiftMockServer
•
surpher/PactMockServer
delivers module.modulemap to bridge Rust -> Swift
j
Some of these names are, at least to me, not entirely obvious. For example from
PactSwiftMockServer
, I would not have guessed that it is a wrapper about Pact FFI šŸ˜…
I'm not necessarily suggesting that the downstream packages get renamed (e.g., whatever the equivalent is of a
pip install
or
npm install
)
m
well, you can rename it when it's in your hands šŸ™‚ It was an evolution of requirements and everchanging Swift/Apple ecosystem
šŸ˜† 1
swift package update
j
In your opinion, would there be much of a benefit from having a bit of a monorepo structure? I did this for example with Pact Python. The repo has
pact-python
,
pact-python-ffi
and
pact-python-cli
m
it was a monorepo, but it quickly blew up to Gigs and Gigs of repo to download on each CI pull
that's why it got split up
j
ah, yeah ok... I'm not familiar with what gets pulled in within the Swift ecosystem
m
the actual interface was maybe a couple of files, but the binaries that need to include rust runtime so it can run on an iOS device or on a system that doesn't install rust so dylibs could be used, each binary version was more than 150MB, now split that to platforms, that ended up adding another ~600MB of history to the repo on each release šŸŽ‰
and you really don't want to force iOS devs installing Rust, trust me
j
You're saying that the binaries were being incorporated into the Git history?
m
yup, at the time SPM didn't do the plugins yet, where it could download a hosted binary
j
oh wow... that's a glaring feature gap from SPM šŸ˜†
m
and only when XCFrameworks were introduced, that was able to shed a lot of binary crap
anyway, the split to multiple repos that pull in what they need for the platform they need for now is... okay
but whoever wants to take over can do whaterver they want with it.
j
You don't want to maintain it after it moves into the Pact Foundation?
m
I haven't touched it in a year, but I'm not against continuing to be the main maintainer of it
one thing we'll need to figure out is the transition. there were 10k clones in last 14 days
so lots of CIs might go
'hol up a minute
j
I believe if you use GitHub's 'transfer owner' feature, GitHub will automatically redirect? At least, I know it does that if you rename your default branch (I did that going from
master
to
main
in Pact Python)
m
not sure, just pointing it out
if it's not a problem, then ignore me
j
But you're right, if there's no redirect, then you'll need to have repos on your side informing people of the redirect.
But back to the maintainer side of things: it would be good to have you still 'own' the package, even after it transfers into the Pact Foundation. It would want to avoid have it become abandonware
šŸ‘ 1
m
not a problem, can even push in a logger warning telling them to make the switch
lots of ways we can do it
yeah, I just haven't had the need for it. I've moved from consulting to a product role and we're using GraphQL and there's little support for adding contract testing in.
j
fair enough. It's also possible to put a notice up that, while there's someone who can review PRs, we're looking for someone to take ownership
m
there was very little contribution from outside so I'm not worried if you'd want me to remain the PR reviewer and worry about architecture. Just can't put as much time as I used to to jump on new features. I've set up scripts to release new wrappers when Ron pushes out new libpact_ffis but then updating/introducing new features is a bit of an ask right now.
šŸ‘ 1
someone else who needs it can do that and I'm happy to mentor
šŸ’Æ 1
m
Perhaps we should get up an issue on the project to see if anybody is interested in becoming the maintainer?