I think that software patents could be a bit more palatable if they also had to provide source code that was proven to compile and work as describe in the patent.
The problem you should not be able to patent an algorithm, and software patents have nothing to do with source code.
Software patents often read as "a system and methodology for doing something we all learned about in school but applied to a specific problem and now you can't do it, suckers".
They're patents on an idea or a solution to a class of problem. They claim ownership of something stupid like "encrypting a bank transaction over an internet link" or some other stupid thing like that.
With software, if somebody patents the idea of compressing a video
See, this is where software patents become bullshit ... you can't patent an idea, you can't patent an algorithm. I can't patent the idea of a flying car, I can patent the specifics of my novel invention.
Compression has existed since people first figured out what the Lev-Zimpel algorithm actually meant. Compression exists as a thing ... making digital stuff smaller by identifying encodings to save space. It's like caching, where you keep copies closer to where you deliver it. It's a concept.
You can't subsequently claim to patent compression of a specific thing. You can patent your implementation, but if you are patenting the idea of compressing video, your patent should be null and void.
What you can't do is patent a "system and methodology for doing something we already do but applied to a specific class thing". Especially when your patent is taking 10 things everybody knows how to do, stringing them together, and simply saying "ta da, patent bitches".
That would be like a carpenter patenting the idea of a fucking table.
Pretty much every software patent I've ever seen falls into the category of claiming an entire idea based on vague notions and existing methods already string together in ways that if you said "I want to do this" any CS undergrad could tell you how to do it at a high level based on the tools which already exist.