Description
Going to workshop my thoughts and turn it into something.
References:
- January: Blog post on Sponsorlink: https://www.cazzulino.com/sponsorlink.html
- April: Concern raised during development (and dismissed): Devlooped.SponsorLink must not perform I/O outside of compiler APIs devlooped/SponsorLink#10
- August: PR that added it - being pretty transparent: https://github.com/moq/moq/pull/1363
- August: Release notes where it was added: https://github.com/moq/moq/releases/tag/v4.20.0
- Reddit thread I initially found: https://www.reddit.com/r/dotnet/comments/15ljdcc/does_moq_in_its_latest_version_extract_and_send/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=1&utm_content=1
- https://github.com/moq/moq/issues/1370
- https://github.com/moq/moq/issues/1372
- https://github.com/moq/moq/issues/1374
- Removed in 4.20.2: https://github.com/moq/moq/releases/tag/v4.20.2
Thoughts:
Let they who are without OSS sin cast the first stone.
You don't get to call it a supply chain unless you're also doing something to enable your supplier. Supply chains have consumers that pay for the product, usually with money. OSS also allows us to contribute with time. People/groups who are doing none of that probably should reconsider complaining about your supply chain.
My first thought is: this is a terrible idea. But then I also thought: I'm part of the problem and the reason it got to this point. I used Moq a ton. I taught people how to use it. Some of that was for paid courses for an employer. I never donated to Moq. So I think the first thing to do for those of us who are frustrated is to take a breath and try to be a little humble about it.
Every time something like this happens, it's because the project wasn't being funded enough and was trying to find some way of making itself sustainable. I want sustainable OSS and I cannot blame the author for attempting something new.
With that said, I think this is a good example of how not to go about this sort of change. I think the implications of collecting developer email addresses without consent, and introducing a closed source (and obfuscated) binary, were not fully considered. And I think for a change like this, a lot more communication in a lot more formats would be helpful. I think negative-first approach (warning, slowed builds) is bound to frustrate people and make them defensive, which makes them much less likely to donate. Similar with being surprised. And I know the author tried to show how they had no nefarious intent, but they noted that without noting the real frustration that accompanied their actions -- impact matters more than intent.
But -- I have to remember that I as a user of Moq I didn't follow the author to stay up to date, so I didn't read or comment on the announcement post that is 7 months old. And so I didn't provide monetary support OR community support. I'm not holding up my part of the OSS social contract, so it's hard for me to feel mad when I feel that the author missed the mark on it too. To be outraged at this without prior support is to be a direct part of the problem of OSS sustainability, because it assumes we should be nothing but consumers, while never fulfilling the obligation of consumers.
I think it's especially rich for people with security departments secops departments and others they answer to be so mad about this and complain so loudly. On a purely selfish personal level I can understand it, but: you make money, and your company makes money, based in part on the use of this tool that neither you or your company is paying for. Where is your OSS support fund? Where are your dedicated hours to help on the OSS projects you're working for? Until that's in place, maybe let's be a little more humble about the criticism here, because it's a social contract and it doesn't sound like you're holding up your end of the bargain. I want us to look inward on this. Especially so for people who found the energy to go "warn" other OSS libraries about this quickly prior to the discussion playing out, or to report the package to nuget as abusive. We need to understand the merits of proportionate response, and employ it especially in places where we haven't paid for or earned the expectation of being pure consumers of something.