Sunday, December 10, 2023

"Why an MVP shouldn't use their extensions to hijack a developers GeneralOutputPane in Visual Studio to solicit sponsorship and to use it as their own personal advertising space via a class called SponsorRequestHelper.cs."

And the answer is...because entire teams will no longer use the extensions. Because its not cute, it's distracting. Because it's not witty, it's inappropriate. And because I don't believe that blackmailing developers with removal of the nag once they sponsor you is very becoming of an MVP. While I was looking forward to using some of your extensions after a MAUI webinar I attended the other day, sadly, our team will not be using any of your extensions. And hijacking these special method handling attributes is irresponsible, because Im pretty sure Microsoft wont agree that your desire for sponsorship is in any way SPECIAL or more important than the runtime in which you are hijacking.

The above was originally posted as a comment on another post.

Rather than respond directly to the content of the message, I thought I'd use this prompt as an opportunity to talk about supporting maintainable open-source software.

Disclaimers:

1. This is a massive topic. I don't have all the answers. But, this is my blog and so I'll write the things I want to share.

2. I know the general advice is to ignore critics, but still...this might be useful.


I've made lots of extensions for Visual Studio. Here are a few of them

Screenshot of extensions in the marketplace

Take a good look. They might not be there for long. - I joke. Partly. Because every time someone goes out of their way to attack me for building them or me asking for anything in response to providing them, I am tempted to just remove them all and have a slightly simpler life by not having to deal with such attacks and criticism.

It's rare that I get such a response, but when they come, they cut deep.

Tens of thousands of people use them. Some say positive things. A few support me and contribute back to the repositories. Every now and again, someone (presumably upset by something unrelated and far more important) chooses to take out their frustrations on me.


The above comment was the start of one such attack.
In addition to the comment posted above were a series of messages and emails. I tried to engage and better understand the problem and how it might be addressed. They seemed immovable in their position and so I chose to abandon any chance of detailed, reasoned debate, and followed the advice to "ignore your critics".

The early discussion did highlight two key parts of their complaint.

1. Doing anything with the output window was an absolute no-no in their books and extensions should never do anything there.

2. Directly asking for sponsorship (money) was unprofessional and not something acceptable for an open-source project. 


I want feedback. It's part of the reason I make these things freely available. Hearing about how people use them, what they're trying to use them for, and suggestions for improvement and alternative behavior allow me to learn more than I would otherwise.

I know these won't be for everybody. That's fine. No one has to use them. I intentionally haven't built things your business should depend on. 


My concern is the attack on the idea that I should make and give away these tools for free. That I nor anyone) should ask for anything in return and be grateful for anyone (everyone?) who uses them seems wrong.

Given that many parts of the software industry are talking about a hidden threat of the unappreciated dependence on open-source software, to say no one should be financially compensated for their time and effort is indicative of a wider and bigger issue.


In a few of my extensions, I include a message in the output window when the extension loads. The message says:

Sorry to interrupt. I know your time is busy, presumably that's why you installed this extension.
I'm happy that the extensions I've created have been able to help you and many others but I also need to make a living, and two years without work and extended periods of illness have been a challenge. - I didn't qualify for any government support either. :(
Show your support by making a one-off or recurring donation at https://github.com/sponsors/mrlacey
If you become a sponsor, I'll tell you how to hide this message too. ;)

I started adding messages like this during the pandemic. I've kept them in because they make a difference. 

The sponsorships I get don't bring in a massive amount of money, but it's been enough to be the difference between paying bills and not. At the moment I do have paid work. But there's no guarantee that will last, and additional income as a freelancer is never a bad thing.

The specific criticisms mentioned above relate to the fact I make the above message be shown by having the focus be set on the output window once the message is added there.  There's no point in adding a message if it's not seen and it's not (or so I thought) massively intrusive. 

I only do this once when in the lifetime of a Visual Studio instance. My experience and feedback from other (most) developers is that they have a single instance of Visual Studio open all day. Here was someone who was apparently opening and closing multiple instances of Visual Studio throughout their working day.

I didn't think I was doing anything that different from many other extensions. These are all the output panes I see when I open Visual Studio. This does not include other specialist ones for specific project types or ones that only show up in response to specific events. 

The Output window in my VisualStudio showing 18 different panes

Of these, I'd estimate at least 5 force their way to the front (they're "activated") whenever I open Visual Studio and so I see the output window cycle through a number of panes when it starts up.
I expected the output pane I'm creating to be just another of these in the initial request for attention. I find it a little bit annoying, but I have learned to live with it.


In the above message, I talk about how to hide the message. 

This is done by creating a file with a specific name in a specific location on the machine.

No phoning home. No personal data is shared.

I just wanted a simple, non-intrusive way of not asking for anything from anyone who is kind enough to sponsor my work.


I never expect these tools to provide enough to make a living, but it's enough to make a difference.


I appreciate that people (developers) have learned (been taught) to expect that unless things are very big and complex, they should get them for free. But that isn't practical or sustainable in the long term.


I don't know how using public APIs can be considered "special method handling" or "hijacking" the runtime.


If you don't like my tools or don't want to use them, that's fine.

If you don't appreciate the way I've implemented them, you're welcome to your opinion.

If you don't want any extension to ask for sponsorship, apparently, it's not worth complaining to the marketplace. They don't see a problem with it. (Yes, there was a complaint.)

Apparently, asking for money is not appropriate for an MVP. I thought the very definition of a "professional" was that they got paid. If the threatened complaint to the MVP program (about my violation of the code-of-conduct) was made, I don't know the outcome. 

When (as) the code is available under the MIT license, I don't see what anyone aims to achieve by linking to the code as an example of knowledge of what I'm doing.

If you really want to, you can build the code yourself without the prompt to ask for sponsorship. This is permissible based on the way I have licensed the code (my work.) I hope, however, that it's less effort to pay a dollar and learn how to remove the prompt in the way I intended.

Yes, just $1, is all it takes to be a sponsor and learn how to remove the message. If the extension(s) provides more value than that, then you can also sponsor more. If money is too much for you, maybe you're a charity, or a student you can always ask nicely. Maybe you make all your software freely available, or you're willing to trade a license for your software for details on removing the prompt, then I'll be happy to work something out.

I also hope that the effort involved in decompiling the code to work out what the name of the file is and where to put it so that the message isn't shown is worth more than a dollar of time. Sadly, I know this isn't always the case. The original complainant has done this and posted the details online. :(

I don't know why the fact that some of my extensions have this request means you'd refuse to use any of them. Even the ones without this prompt. Even the ones you admit you find useful and save you time and effort.


Ultimately, I know the world isn't perfect. The internet, the world of software development, and especially open-source software are far from perfect.

I don't expect this post to change anything, but sometimes, I need to let things out before they get too much for me.







0 comments:

Post a Comment

I get a lot of comment spam :( - moderation may take a while.