3 ms·
That person doesn't know how to inspect or modify it, and largely doesn't pay any attention to the license before emailing it to a friend. That person at the te
by jmillikin 17y ago
That person doesn't know how to inspect or modify it, and largely doesn't pay any attention to the license before emailing it to a friend. That person at the terminal isn't using code, they're using a program. Once you start talking about the rights to inspect and modify software, you've left those people behind, so they aren't the users who are concerned with those rights.
This is a common refrain when criticizing the GPL -- that users are hopelessly ignorant, and incapable of even the most basic modifications to the software they use. "Why even bother giving them the source? They'll never be able to use it anyway".
There are several issues with this criticism. Ignoring for now the set of end users with the technical ability to modify and compile the source code on their own, lets assume a non-technical user wants to make a change to the software on their system. The software is licensed under the terms of the GPL, so the source is available. This user has several options:
1. Buy some books, attend classes, and learn enough about software engineering to modify it themselves. Not an attractive option, obviously, but it's available as a fundamental baseline. This is only available to users with plenty of free time.
2. Ask somebody, either in the online or local community, to make the change and provide the updated version. This is the purpose of "bug trackers", a popular fixture on most websites for free software. Unreliable for complex features or specialized use cases, but for issues common to everybody ("software crashes when this button is double-clicked") it can be effective.
3. Hire a contractor to modify the software. Possibly expensive, depending on what language the software is written in and what changes are being made, but likely within the budget of even small businesses for most reasonable cases.
Now, lets compare it with the case of a non-technical user with a BSD-licensed binary on their system. The source code might not be available, because the BSD license does not require distribution of corresponding source, and there may be legal restrictions on whether the user is allowed to inspect or modify the software.
1. The first option, "do it yourself", is made more difficult because the set of required skills will be larger. Assuming for now that the software was given to the user under the BSD license (ie, no additional restrictions), they still face the challenge of reverse-engineering and modifying the binary. This requires a more specialized skill-set than modifying (for example) Python or Java code. It can be done -- I know a dentist who hex-edited his practice management software to change some poorly-worded tooltips which were confusing his staff -- but will certainly be more difficult than modifying the source.
2. Since the source code for some version of the software is probably on the internet, somewhere, the user can attempt to find it. This source might not correspond to the version on the user's system -- perhaps there are missing features, or incompatibilities between versions. In the best case -- source is the same version, everything works -- there was no advantage to the user over GPL'd software. In the worst case, the source is useless and the user must revert to editing the binary.
3. Asking the distributor to make changes to the software is possible, but unlikely to succeed unless the change is likely to result in additional revenue to the distributor.
4. Hiring a contractor will be much the same as in the GPL'd case, assuming no additional restrictions have been applied. However, as in the first case, editing of a compiled file without the corresponding source will be difficult and time-consuming. The price of hiring a sufficiently skilled contractor will be tremendous.
- randallsquared 17y agoFirst, let me point out that "hopelessly ignorant" seems pejorative, and since I'm in the category I was describing for most of the technologies of which I'm a user, I'd prefer "rationally ignorant". It's not a good use of my time to learn everything about the inner workings of a tool I'm using, if I'm not already interested, and most non-programmers are not interested. There are, as you note, exceptions, such as your dentist. I don't even disagree with the bulk of your post, nor am I interested in discouraging use of the GPL (at least, before free software is the default, whereupon I'll encourage people to use licenses with fewer restrictions, or public domain, as I do, licenses and contracts permitting). I also prefer for the source code to be available, but I don't think it's properly a legal matter to make sure that it is. I have a lot of sympathy for the view that the GPL's source code requirements are necessary to make enforcement of the other terms practical, thus aiding the copyleft, however, which is a good reason for me not to complain about GPL software or licensing, and I don't. I do, though, think that it's somewhat beside the point to talk of the needs of the end user regarding the license provisions about source code, which was my original reason for replying. As a practical matter, few end users ever care about the source code, and few end users pay any attention to the licenses of software they use anyway, and that last is a behavior I'd like to encourage. If enough people ignore bad laws, they cease to be effective.