Actually, we're talking about the US here, which is different from the rest of the western world. We have poverty. We have people who can't afford basic health care, and that is poverty.
Well, first - how does solving "wealth inequality" solve the problem of bad health care system? Given that confiscating all wealth of the so called "one percenters" would not fuel completely free healthcare for long enough for this move to be actually viable. Second - maybe I am wrong on that one, if so then please correct - as far as I know people in the US are not left out to die on the streets once they get sick like they do in some impoverished regions of Africa. They might end up with huge debt instead. While I agree this is a very shitty system where you might be in debt for life after hospitalization, this is far from "corpses on the streets" scenario. Third - in general, in rich countries (which also happen to be countries with fairly big wealth inequality) you have charities, which could help people who did hit the rock bottom. One example would be pharma companies giving away drugs almost for free to people who cannot afford health insurance (like Shkreli's company did with the toxoplasmosis drug for example).
In other words, if you have some idea where you'll sleep tonight and where your next meal is coming from, you have no reason to complain? Even if you can't afford the medication that will keep you alive or unparalyzed or sane? Even if you can't afford to live anywhere your kids will get a decent education?
Again, compared to how it was all around the world 200 years ago, or even 100 years ago, it's still pretty great (in comparison). Even in the US (which as you mentioned is kind of another story from the rest of civilized world) you can get food stamps and shelter. It's easy to see flaws of any system/country while being oblivious to the whole historical context, which seems to be common problem with US left wing people. Getting decent education for your kids is not something you are or should be entitled to, it's something you ought work towards before you actually decide having offspring is a good idea for you.
SVN has several huge advantages over git.
Ok, let's see these advantages.
It's far simpler.
I get it, you don't like all this changing history, rebasing, amending, reflog stuff. But for most basic git operation you need to know as many commands as for SVN. And with git you get the benefit of all the magic you can do on top of that. It's almost like saying that you prefer DOS to anything else because it's simpler - less commands, no pesky multitasking and you can do with it everything YOU need to.
It doesn't have a thing called 'rebase', which rewrites your commits and occasionally messes them up.
You conveniently ignore the fact that rebase is used almost exclusively in local branches and never on git upstream/production mirrors. The main assumption made by git is that your local history doesn't matter (why should it?). The only thing that matters is the history everyone else is using/depending on. To keep this history clean you use this evil rebase thing to apply your patches to production/upstream branch without polluting the git log with unnecessary noise (I will mention later why this matters for upstream repository even though rebase is not used there). This way git user checks that patches are applied cleanly and if not then fix conflicts. Basically rewriting commits is very useful for your local work and when git "messes them up" it's actually you messing them up because you made a mistake during rebase. I use rebase a lot to squash commits from my local work, to edit commit messages or make any changes to the patch set if something was found by testers. With SVN you don't have this luxury at all. I don't see how this is any advantage for SVN.
Its revision numbers are actually in order, which means you always know which revision came first, given two of them, something that's impossible with git's hashes
I use git in my work, I also had to use SVN in few projects. I *never* encountered any actual situation where git hashes instead of revision numbers were a problem. Any git user knows how to use the git hash properly (i.e. extract meaningful data from it). There is also command in one of replies to you here which can convert git hashes to revision numbers, but I never encountered situation where this was actually needed by anyone, anywhere. I think the sheer inconvenience and all the drawbacks of SVN are not worth the pretty little nice looking revision numbers in the revision log.
but the reality of 99% of software development is that the repository is centralised, so git's solving an almost non-existent problem here)
It's actually solving (by accident) a very existing problem where you have to contact SVN server every time you want to see the commit log, create patch from commit or see what the commit actually did to files. Ever worked in a project where SVN was on some slow-ass customer server? I did, and it would be so much less painful with git.
SVN supports real cherry-picking, and actually records in the repo that you took code from somewhere, as opposed to git's cut-n-paste approach.
And how is that a problem? Why is relying on some magic revision control tool metadata to store such information any better? If you use -x flag for your cherry-pick you basically have all the information you need to find the original commit. Git commit --amend and you can add any additional information you like so it's even more clear. Hell, you can do that later to any commit in your huge patch set using git rebase -i.
SVN has branches, git has pointers into a tree. Thus in git, it is impossible after the fact to determine to which branch a change was committed, just in which branches it now currently resides.
You silently ignore the fact that with SVN you have to do this whole tree copy on the svn server to create a branch, which again is a huge PITA if you are dealing with slow SVN server connection. With git creating a branch on which you can start working right now takes exactly as much as it takes to type "git checkout -b ". Other than that, determining to which branch a change was commited - how is that a problem with git? You can easily get information to git about the commit at which the tree was branched. If you enforce using git cherry-pick you can easily track if branch in question has any specific change after branching.
Branches don't really exist in git at all, they aren't versioned (who created a branch, and when?)
How are these any meaningful information at all (who created a branch, and when)? Hell, with git you get information in the commit message which branch changes were merged from (look at Linux kernel git log for example). Thanks to git rebase you are spared all the stuff the branch was doing and you get only the meaningful information without the noise - i.e. which branch the change in upstream was merged from.
and if you accidentally delete them you tend to lose the commits against them.
Your local branches are *your* own responsibility. If you accidentally delete your local branch this is *your* fault not git's. Upstream/production branches are not supposed to be deleted and in practice they never are. And if they ever were or if the revision control server crapped out with git you can easily restore the branch because basically any user of this branch is also a mirror. Complaining about the ability to delete a branch without a trace of it is like complaining about the ability of windows to format c:\ or linux to sudo rm -rf --no-preserve-root
The two most common things in the Universe are hydrogen and stupidity. -- Harlan Ellison