Here’s a suggestion that will surely rankle some in the free software/GPL community, but which might be of good benefit to the overall success of such systems.
What I propose is a GPL-like licence under which source code could be published, but which forbids effectively one thing: Work to make it run on proprietary operating systems, in particular Windows and MacOS.
The goal would be to allow the developers of popular programs for Windows, in particular, to release their code and allow the FOSS community to generate free versions which can run on Linux, *BSD and the like. Such companies would do this after deciding that there isn’t enough market on those platforms to justify a commercial venture in the area. Rather than, as Richard Stallman would say, “hoarding” their code, they could release it in this fashion. However, they would not fear they were doing much damage to their market on Windows. They would have to accept that they were disclosing their source code to their competitors and customers, and some companies fear that and will never do this. But some would, and in fact some already have, even without extra licence protection.
An alternate step would be to release it specifically so the community and make sure the program runs under WINE, the Windows API platform for Linux and others. Many windows programs already run under WINE, but almost all of them have little quirks and problems. If the programs are really popular, the WINE team patches WINE to deal with them, but it would be much nicer if the real program just got better behaved. In this case, the licence would have some rather unusual terms, in that people would have to produce versions and EXEs that run only under WINE — they would not run on native Windows. They could do this by inserting calls to check if they are running on WINE and aborting, or they could do something more complex like make use of some specific APIs added to WINE that are not found in Windows. Of course, coders could readily remove these changes and make binaries that run on Windows natively, but coders can also just pirate the raw Windows binaries — both would be violations of copyright, and the latter is probably easier to do.
If the licence is GPL-like, then the original company would not be able to incorporate community improvements into their proprietary windows product (without open sourcing that.) Though they could recode by hand any bug fixes they got from the community, you can’t readily stop that. They could also use one of the various licences used by some open source companies which demand that all patches be assigned to the company. In that case they could use them if they wished, but they would scare off some people from contributing. This sort of thing probably makes more sense in a licence aimed at WINE porting, since most people who would patch a program to run under WINE might very much want the company to incorporate their patches in the official binary. People can of course write patches and offer the patches (not the modified programs) under any terms they choose.
In fact, many companies might find that while some users would like the FOSS version under WINE, many users might well elect to buy the official, patched-to-run-under WINE version in order to get support and new features, giving the company more sales rather than losing them sales. Really paranoid companies might release their program only partly — with highly stable and portable binary libraries, and less portable UI and OS interface code as source, allowing people to build a working version. They could keep their secrets in the binary libraries. Skype is planning to do this with their linux version — releasing the source to the UI, but keeping the core in binary libraries. Many expect that this will work, that developers will come forward to improve Skype and hack it to work better on Linux.
The core goal remains this: A company has a cool and popular program on Windows but does not plan to publish it on Linux. Lots of Linux users want the program and are annoyed they can’t get it on Linux. The fans make it work on Linux or on WINE. The community wins and the company wins. The main group bothered would be strong GPL advocates, who do not like to mix proprietary and free code, and do not wish to work on code when there are restrictions on what can be done with it — even restrictions that only forbid something they would never want to do, such as build the program for Windows.
These restrictions would block some people from bundling the open source versions of the programs with GPL based OS distributions, though I see no reason they could not sit in binary repositories and be easy to add to any system.
Aside from secrets, there is a risk companies might not do this because they do see a loss of sales. Some programs are so important that people buy computers just to run them. We could certainly see a person deciding to set up a Linux computer with free Photoshop as opposed to buying an expensive Mac with expensive Photoshop if that is their prime goal. There are people who are Linux fans who still run a Windows computer, or have Windows in a virtual machine, just so they can run those few key Windows-only programs they have bought. If these sales would be lost, some companies might well be scared of doing this. However, the further steps required (such as personal-use-only restrictions) would probably scare away a lot of FOSS developers.
As noted, things like this have already happened, with programs like Xara LX, and the coming Skype UI. The companies can of course think up their own terms for how to release code in this fashion, but a standardized licence would make it easier for companies to do it, and easier for coders to understand what had happened.