Help me understand this (really).
Why should software be expected to have source code available? Don't get me wrong - I love SQLite and OpenSSL, but it has nothing to do with having access to the source code.
My toaster did not come with specs and design documents so I can change it. Neither did my power drill or car.
The music I listen do doesn't have synthesizer settings available and raw source before mixing. Movies I watch don't come with scripts, budgets, contacts, location licenses, etc.
What is it specifically about software that makes people think the source must be available? Where does this expectation come from?
2. the hardware, especially electronics, did use to come with "source code". I, for example, remember studying the schematics of my TV set so I could modify it and add composite video input. The ZX80 clone I owned had composite output already, so by bypassing modulator I was able to increase picture quality.
The same used to happen with the cars - there were full service manuals with detailed drawings and assembly instructions, precisely so one could change them.
3. In software specifically, the source availability has a very high practical value:
it helps to fix the problems. For example, I spent an hour yesterday reading source code of my CI system (Jenkins) to figure out if a certain thing was possible.
(this is why some companies which are jot ready for open source at least provide source code under "source available" model) it helps with build process. Remember bad old days of Windows where your libraries cam in binary form and had to use right runtime / compiler version? This will never happen with SQLite, it even has "single file" version for super easy project integration.