"it does not allow me to fix a bug in a product I paid for"
Would you go into more detail here? It seems to me, to use the router as an example, even if they were to make the source code available, getting updated code to run on the router would still be difficult, if not impossible, depending on how the software is running on the hardware. Is it burned into ROM? Are you able to flash firmware? I'm admittedly speaking from ignorance here. How are these types of issues addressed purely from the point of view of the GPL (or any other license, for that matter)?
One of the main differences in GPLv3 versus older versions are clauses intended to make sure that this doesn't happen – this is the so-called 'Tivoisation' issue, where manufacturers are nominally compliant with the GPL (sharing changes to the code) but don't actually allow that code to be used on devices.
To quote the license:
“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
It's this sort of thing that's really important for 'Free' software.
Thanks for the clarification. Am I correct in understanding then, that with respect to the OP ("Apple's Great GPL Purge"), this wouldn't apply as the code in question isn't GPL3? And it looks like in at least the ROM case I described, the end user is not going to be able to fix it?
That's generally correct, yes. The GPL3 anti-Tivoization clauses were added specifically to deal with this sort of thing, but one of the side-effects appear to have been a reluctance on the part of hardware manufacturers to continue shipping GPL software.
Certainly in the case of ROM you are correct – but it's a bit of an unusual case really. The only other option would be outright banning the inclusion of GPL software on such devices, but that seems overboard.
Hardware makers wanted to exercise the right to use open source software without returning that right to the people who bought their products from them. GPLv3 was designed to remove the loophole that allowed them to do that. It's true that GPL has more restrictions than BSD or MIT. But the freedom those licenses give is the freedom to steal without giving back.
Would you go into more detail here? It seems to me, to use the router as an example, even if they were to make the source code available, getting updated code to run on the router would still be difficult, if not impossible, depending on how the software is running on the hardware. Is it burned into ROM? Are you able to flash firmware? I'm admittedly speaking from ignorance here. How are these types of issues addressed purely from the point of view of the GPL (or any other license, for that matter)?