Given my recent Arch Linux debacle I think I should cover a few persistent FLOSS vs. Commercial software myths. These are usually put forward as some kind of defense when leaders of a FLOSS project screw over their users without consent.
#1) Commercial Whataboutism
"Commercial companies screw people over too. Why do FLOSS projects have to not screw people over?!"
That's whataboutism, and more importantly authoritarian whataboustism. I say there's two kinds of whataboutism:
You have whataboutism that is pointing out a bias that people in positions of authority have:
"Why do you punish this kind of person more than that kind?"
Then there's what I call Authoritarian Whataboutism:
"I'm allowed to harm that person because that other guy does too."
FLOSS vs. Commercial myth number #1 is they're allowed to treat you like crap because commercial software does too (more on that in a bit).
That's Authoritarian Whataboutism, which is only used to shut down challenges to the FLOSS project's authority after you caught them.
FLOSS vs. Commercial Myth #2)
Commercial software vendors frequently destroy their customer's systems and get away with it.
No, there are many agencies devoted to protecting consumers from abusive companies: FTC, FCC, FDA, and FAA to name a few.
Go look at judgements by the FTC against Google, Apple, Microsoft, Facebook over privacy *alone* and you'll see hundreds of millions of dollars in fines and 20-30 year moratoriums on future behavior.
The claim that commercial software vendors get away with abuse is false.
Not only that, but on an individual level, you have a contract with them and you can sue them if they did destroy your business. If Microsoft pushed out an update to Enterprise customers that caused a bunch of Fortune 500 companies to crash there would be *hell* to pay.
FLOSS vs. Commercial Myth #3:
FLOSS is free so you can't complain that it doesn't do what you want.
First, I'm not complaining it doesn't have a feature I want.
I'm complaining that it has a DEFECT that caused my server to collapse, and the leaders say it's NOT a defect.
But, more importantly, if you release a FLOSS project, and then *invite* users to use it, promise it's "stable", and make it free so there's zero barrier to entry, then you've just created a public good and public space that anyone can access, just like radio or a park.
A FLOSS project that invites people to use it, and then screws those people over, is abusing the public good promise they made. Since *anyone* can access it that means they're taking advantage of potentially unskilled people and promising them it's a safe place.
By making the barrier to entry low, and enticing people with marketing and free software, they are under a *higher* standard of behavior than commercial software because the impact of a bad change can cause more damage and users have no recourse.
FLOSS vs. Commercial Myth #4: You can't complain because it's free.
If you offer up something for free to everyone and it harms them, then it's *your* fault. You can't then say "NO, I'm not to blame because it's free." No, you are to blame. The price is irrelevant.
This behavior by FLOSS ("Shut Up! It's Free!") is like inviting your friend over for a chicken dinner and then he ends up in the hospital from salmonella poisoning. You can't go, "Shut up dude. That chicken was free."
So? You still poisoned your friend. Price is irrelevant.
And that should tell you something about the kind of person who puts forward the "Shut Up! It's Free!" defense.
What kind of a immoral piece of crap yells at someone to shut up when they've hurt them? You've got to be a misanthropic loser to defend your bad behavior that way.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Oh I hate myself right now. I wrote all this code for learnjsthehardway.com before I had to stop because Sapper died and it wouldn't work for students.
Now I'm trying to bring over the good stuff and I'm on WebTorrent...and it's a nightmare. I have no idea what I wrote.
I may have to just sit down for two days and re-read all the old code, but I just want to get WT working. I'm trying to load the JSON data I generate, and for some reason I can't figure out where I generate this one torrent hash. I scour all of my code, I can't find it.
That's because I'm *not* generating it. I'm just writing it in a header of the .md files like a loser. LOL. I think I was manually making these hashes to get going and planned on generating them but never got around to it.
Alright, this is a *glorious* bug in Firefox and Chrome but not Safari.
The Scene: In my webapp I can type ctrl-alt-b to get the "bandolier". It's a dev tools/admin panel. This works just fine in safari, but fails in Firefox and Chrome on OSX only.
The code, with a log:
Now, safari reports the following when I press some keys:
But, Firefox and Chrome report *this* when I do the same keys. See that ∫ there?
Arts education has the exact same "innate ability/difficulty" problem but oddly nobody seems to be upset about it.
For example, when I was learning to draw formally I had *numerous* people comment on how I'm a programmer and probably can't learn to draw. When it was obvious I could ('cause anyone can, just like programming) these "artists" with "innate ability" thought I was "cheating".
I literally had to start recording my painting sessions and taking side-by-side photos just so people wouldn't claim I "cheated" at art. Never mind that they were zooming in 50MP photos on their their iPads to do their paintings.
Simulating someone hacking the input behind the slider to inject bad numbers. I gave a validation rule that limits to 20-50 to test how to disable the payments and show an error on both ends. Then on the backend I'll confirm it again. The reason for this limitation is carding.
For those of you who don't know, carding is the process of testing banks of stolen credit cards to see which ones are still valid and can be sold. They do this by finding unrestricted donation forms and use them to post a charge for $1. If it works they sell the card.
If you allow unrestricted donations then you can get hit by a huge whack of carders, then the chargebacks come rolling in, and you have to pay $15-30 to deal with each one, even if you just do a refund and don't contest it. Stripe is actually the *worst* for this.
I'll use this to do a running commentary on a "style checkbox" in CSS. First trick is to put the label *after* the checkbox so you can use + to select it if the checkbox is :checked. Clicking the label activates the hidden input, so the label changes red/green.
Here's a demo of that first part working. Now to make the label look like a checked/unchecked box that's different.
The next trick is to use the :after to add content, *but* if you give an :after that has no content it still creates a block you can style. Here I'm just making a little square.
I think the other thing that infuriates me about this kind of crap is how it happens randomly. Other places images showed just fine. Drop it in a random div somewhere else and suddenly I get phantom pixels I can't debug.
My biggest fix would be:
No more contextual footguns.
If I have an image, and in one place that image has no space on the bottom, then that image has no space *everywhere*.
If I set a position:absolute, then it's contained in its parent *everywhere*, no matter what the parent's position is.