GPL2 is also vague. It defines "complete source code" as including the scripts to build and install the software, and that these have to be provided in a machine readable form.
Poorly Defined Terms
But no where does GPL2 say that those scripts should be executable, or that they should result in a running program on specific hardware. It also doesn't explain what a "script" is; to most of us it's a bash script, possibly python, a makefile, or similar. But an executable binary that does the same steps, or one of the steps, definitely is not within most people's ideas of what a script is.
It's also perfectly possible to have a complete set of scripts that build the software, but not install it. The installation might be manual (i.e. a human has to copy the image to a chip burning machine, and the chip then has to be soldered down afterwards). They might even have to use a custom machine-specific binary executable to help with this. In this case, it's entirely reasonable that there is no machine executable script for installation, and there can't ever be one that results in a runnable program; a script cannot by itself solder a chip to a board. There can be a readme as a list of instructions for a human to execute to install the software.
Make Up Your Own Device Configuration
GPL2 also leaves room for the following situation. There's bound to be a configuration file specifying device addresses, certain memory locations, etc. This might helpfully get supplied as "set these appropriate to your run-time environment", which makes it hard to figure out what they should be on a specific retail device (no datasheet published). So yes, you can build the software alright, but never know what settings are required for a specific device. And here too GPL2 is inadequate; no where does it say anything about the hardware on which it should be run. The original authors of GPL2 had in mind standards compliant source code compilable on almost any unix-like OS, not specific hardware.
What's also bad news for the vendor is that such configurations can easily change between production runs - i.e. the next uses a slightly different SOC that requires a different configuration - and they may not have records of which SOC was used in a device of any given serial number.
And if one thinks this unlikely, think again; even Apple are constantly churning their choice of components between batches of iPhones, Macs, etc, that outwardly are all supposed to be "identical". At one point they didn't know themselves what had gone into any one specific device, which is why firmware updates to fix issues can have patchy success rates.
In that circumstance the best a vendor could do is supply a whole bunch of configuration files, and tell the recipient distributee that they'll have to munge them together as best they can, see what works...
Now a Contract?
It's this kind of problem that puts companies off using Linux, and why FreeBSD is an attractive alternative. If GPL2 is now also going to get interpretted as a contract, that's simply making Linux less and less attractive, because it is so unclear as to what really does constitute "complete source code", and "installation". Companies might now find they are contractually obliged to facilitate installation on hardware never designed to support post-manufacture installation.
It's also ironic; the Wikipedia article on the GPLs says that they were designed as licenses, not contracts. But now they are being interpreted as contracts.
Here in the UK, a contract is only enforcable with the exchange of money; no money, no contract. That's why you see bust companies being bought for £1 - to seal the deal. So there is a contract if you've bought a TV, but if you've just downloaded an executable for free there is no contract.
This Specific Case
I think the SFC is being casual in its statements in referring to "GPL", and not specific versions. There's a world of difference between 2 and 3. I know the case involves software under both licenses (it's not just the kernel source they're after), but technically speaking there is no such thing as "GPL".
GPL2 does not grant a right of repair; it doesn't say that the re-built executable must installable on specific hardware. It does not say there has to be a USB socket from which an image can be run or burned to on-board flash, or other similar mechanism. However, a side effect of this case might be that the GPL2 is a contract that, in effect, does mandate facilitating third party image installation on the hardware.
Of course, if GPL2 source code is underpinning a product, allowing third-party image installation is actually the polite thing a manufacturer should do anyway. But this case is moving the goal posts in a direction where otherwise blameless manufacturers may now have a deployed fleet of hardware that now is not compliant, and can't be.
So, my worry is that this case will make it even more difficult for manufacturers to be certain that they have a issue-free pathway to GPL2 compliance, even if they're intending on being compliant. If as a result of this case we start seeing device manufacturers move over to, say, FreeBSD, then the ability for people to mod their own devices is actually going to decline, not increase.
And so, what does this mean for the Android mobile phone market? Are we set to see a situation whereby manufacturers are obliged to facilitate third party image compilation, installation, with the expectation of ending up with a working phone? Could be a good thing. Could also be a bad thing, as it means that the third party might not actually be the phone owner. There are good reasons why people might not want a device that anyone can reimage without manufacturer support...
Ambiguity
The SFC said: "Had Vizio produced the source code for the Linux kernel, for the other SmartCast programs at issue, and for the library linking programs, as used on Vizio Smart TVs, a community of software developers would have had the opportunity to modify them to protect user privacy or improve accessibility,"
I hope that in this case, "library linking programs" means software to manage lists of TV programs, and not the source code for ld or whatever the object code linker that is used.