Don't negotiate with bad software
Sometimes we're forced to interact with bad software, or at least feel forced to. To use it temporarily, or to implement compatibility with it - to negotiate with bad software. But that is what bad software wants, and bad software rarely holds up its own end of the deal.
Being an email client
At my job, we develop a web service that provides customer relations management features. Our clients wanted the ability to email a customer from within our application. We discussed a few ways to do this and ended up biting the bullet and making our web service act as a rudimentary SMTP client. I hated this, of course. But I thought we would just implement basic SMTP functionality and be done with it. If we had've known the slippery slope of negotiating with additional bad software we'd end up on, we wouldn't have done this.
The first price we paid was the need to know the SMTP settings for each provider. There are protocols for discovering this called autoconfig and autodiscover, but many providers implement neither, so we had to manually find out the settings for the providers used by each of our clients. Also, some providers don't allow SMTP access with your actual login password; you have to use a separate "application password", and we usually find this out when a client complains to us that it doesn't work for them. This is an ongoing price.
The second price we paid was to Microsoft, for Outlook dropped support for SMTP AUTH PLAIN in 2017 in favor of AUTH LOGIN:
Yes, this thing:
Documented as obsolete in fucking 2003, in favor of AUTH PLAIN. Yes. Far as I can tell, Microsoft dropped existing support for a modern replacement in favor of a system that was deprecated 14 years earlier. Microsoft dropped existing support for a modern replacement in favor of a system that was deprecated 14 years earlier.
And naturally since AUTH LOGIN is obsolete, the Go stdlib doesn't support it. I had to copy some unexported code from net/smtp to implement support for AUTH LOGIN.
But at that point we couldn't back out. Our clients had already got half the feature and we couldn't not finish it for them. What looked like an acceptable sacrifice at first - implementing basic SMTP client functionality - roped us into an endless quest of increasing sunk costs and customer frustration and new pieces of bad software we had to negotiate with.
I had a Twitter account for about 1 year before one of my Twitter friends informed me of the existence of Pleroma, a decentralized version of Twitter. I jumped at the thought and made a Pleroma account (this discovery was what started my radicalization against centralized platforms). I intended to stay on Twitter for a short time to inform all my other friends and convince them to join Pleroma or Mastodon, and then I'd leave Twitter.
But what really happened was I couldn't get most of my friends to switch. Many of them made accounts on the same Pleroma server as me but rarely or never touched it, even if I reminded them on Twitter. I kept opening Twitter every day because it was my only way to interact with these people, but after several months of letting them keep me under corporate control, I gave up on getting them to follow me and left Twitter for good.
But guess what happened after that? A bunch of them followed me! It ended up being onto Matrix instead of Pleroma, but firmly boycotting Twitter was what it took to get them to embrace a decentralized platform.
Burn Eclipse Che to the ground
When a boss of mine decided to use this software, I thought it would be some trouble to set up but we'd get it done and everything would be fine. I knew it was disgusting software but I didn't know all the things in that article would happen. We ran into them gradually, constantly thinking "we just need to hack our way around this one more obstacle and then we'll be done", but the tunnel kept extending and by the time we understood just what we'd signed on for, we'd already invested 2 weeks into getting it to work.
Bad software has a vision for this world entirely incompatible with ours. Do not negotiate. Do not compromise. We must expel it from our lives, even if that makes them harder in the short term. Bad software is your enemy, and this means war.
subscribe via RSS