I wanted to assemble my views on the matters of software patents and copyright since a while, so now, here it goes. In a very short summary, I seriously think that patents have a restraining effect on the evolution of software even putting any actual software development (on certain fields) at high risk. Related to copyright, licenses however may be controversial, but I think they are useful: especially the GPL license, while I think even that license doesn't serve well for all and may restrain certain fields. So let's get on with it...
I guess anyone interested in this field have some ideas on what are patents in software, and could recite some of their effects. Such as nasty huge patent infringement cases. Nowadays roughly the followings apply to the situation with software patents:
- Big companies have them by the thousands.
- Big companies use them to negotiate with each other (such as threatening each other...).
- The patent office seemingly accepts anything (such as even a patent on calculating the absolute value of a number, or things even worse than that).
- Patents are typically worded so it is not necessarily apparent what they cover. You won't likely hit a patent when Googling for a solution for your problem.
- One can never know when he infringes. Moreover, he can never know when a software piece he relies upon infringes, potentially putting his own work in peril.
The original intent for the patent system was to promote the evolution of technology by providing protection for the inventors (for up to twenty years) in exchange for publishing their idea, so after the patent expires, it can go to public domain open for any use. This was a noble and agreeable cause when the system was designed, solving many problems of the past, in the times of early capitalism blossoming over the ruins of feudalism. There were really good patents filed in the past, such as the entire technological history of early aviation may be read through patents: without them, it would probably be really hard to reimagine how people approached the problem of flying back then.
Today, the system can't serve these purposes any more, especially not on the field of software. Patents are used in masses, so a small group can not use them at all due to the costs, to protect themselves against the big guys. Patent applications are obscure, so you can't learn from them. Simply you wont likely come across any, until you have to face legal problems due to a nasty infringement case looming over your head. And at last, in software industry, twenty years ago is as good as an ice age before. In twenty years, the same idea if it is any useful would be reinvented a dozen times, patents or no patents. Not to mention twenty years ago is just the tip of an iceberg since it only starts counting down from the filing date, potentially way past the date of invention (submarine patents).
Essentially the patent system for software became just about the same as the monopolies of the feudal age. Technologies which, given the necessary investment, everyone could develop, however the legal system grants one particular entity the sole right to use it. If this is a key technology, then everyone is largely held back except who got it legally monopolized.
A notable example of this problem is the entire software ecosystem built around Linux, versus the proprietary field. Within Linux, a key concept is reusing other people's work: you have a problem at hand, and you can whack together a solution combining software pieces in whatever creative manner you need to solve it. The concept of the shell is especially great for this. Within the Microsoft alternative, you just can't do this. There is no useful shell, and all you get is a dozen multi-gigabyte proprietary applications suffering from severe NIH (Not Invented Here) syndrome with elaborate GUIs, with no way to combine those. Your solution is either in the box, or not in it, and if it is the latter, you are pretty much lost. Especially due to the patent system protecting these monstrosities, their creators are not interested in improving it "out of schedule" (the legal system will protect them if anyone else tries to solve what they won't). Many times, the free and open source community would be eager to solve any such problem, but they can't, due to the legal cruft.
Many of today's big software companies would probably simply starve to the death with their current attitude if it weren't for the (software) patent system.
It doesn't even stop here. This was just the aspect where you know about the patents getting in your way. The probably even larger problem is when you don't, and usually this is the case. Since the patent office accepts just about anything, you just can't know when you hit some obscure patent. You can not claim any software product patent-free. Not even Ogg Vorbis, for example. As soon as you have any piece of software doing anything reasonable, you can't know what you could have possibly, accidentally, without knowing it, reinvented. With patents like one over calculating the absolute value of a number, you just can't be sure that whatever application, doing anything innocent, doesn't suffer from some patent infringement case waiting to erupt any time in the next two decades (or more). You can't know if any piece of software you depend on doesn't suffer from the same, and would be withdrawn at some point. Not even if it is licensed under Creative Commons, GPL, or whatever allowing you to use it for free.
Basically this is it.
I really think that the entire software patent system should be abolished, as-is. There is simply no reasonable way to reinvent it in such a manner it could be anything useful for the evolution of software technology. The pace is fast, people invent and re-invent probably every time I hit a key on my keyboard right now all over the surface of Earth, without any prospect of protection by patents. Without the prospect of even any refund, just for the sake of solving some problem. The free software community thrives.
Patents, however, may well have their place in the general industry, I only considered software patents in this lengthy post: with software, you don't need any big investment to invent, and that's quite unique to this field.
Copyright and Licenses
Copyright in software is a concept for protecting your particular piece of work, as-is, from uses by any other party. You regulate the possible uses through the License you provide with your piece of work. As such, it has it's place in the software ecosystem: It allows you to get yourself credit, if you want, even in monetary sense, without crippling other people in general.
Compared with patents, with copyright, you as the owner of a piece of software, are forced to compete. You may protect your piece of work rigorously, you may sell it, however copyright doesn't prevent others from studying what your piece of work does, and re-create it. They won't do this if you are reasonable with your terms, that is, you respect your user base. However, they will do if you don't, and that's a good thing.
When choosing your license, you should always think about the public. This is not just benevolence, it also serves you in the long run. Think about it: if you are restrictive, not allowing the public to re-use your piece of work, they will eventually re-invent it if it is any good. You, with your piece of software will be forgotten while a few people in the free and open source community put more or less effort in re-creating something which was already done by someone (you). It did ill for both.
This doesn't mean you have to release everything under permissive licenses (in the terms of allowing further work, so GPL counts as permissive here), just that you should think about your software's uses, and whether you actually really need to be restrictive (in terms of being proprietary).
If the software is meant to be used as a tool, to perform something, it really should be permissive, since anyone may come around with a new good idea to improve on it, to make it serve better it's purpose. Eventually it could get to have many authors, many people contributed a little to perfect it in serving it's purpose. This is good for you, too, since it is very likely you invented the tool the first place to solve some problem for yourself, so you will also benefit from it.
It may be realized that most software are, indeed, tools, and as such, should generally follow this principle. There may be a few, though, which aren't. For example some games. However to the contrary, you may look in Battle for Wesnoth for example, which is a great game built by the "public" (licensed under GPL Version 2).
With permissive licenses (again, in terms of allowing further work, so GPL also belongs here for now), the usual solution if you wish to get some dependable monetary refund for your work, is offering related services. With tools, you may offer configuration, or performing certain complex tasks with it for a refund, with primarily network oriented software (such as a multiplayer online game), you may offer related network services. It is fair: if you do your job in it well for a reasonable price, people will pay, if not, they will use other services.
There are a few field however on which you simply can't be permissive if you look out for any refund. For example non-network oriented games, such as the Adventure genre of the good old days. These types of games are somewhat like books: the author can only get refund for them if it sells, and there are no much other possibilities. Or, after a great deal of work on an epic story and related, you would still have to plan out what to do to get some food for yourself. Independent game developers sell games even nowadays, and I think it is fair: they worked on it, so they deserve the refund, just as I wouldn't want to have books thrown at me for free seeing the author starving.
When looking out for using the GPL license, you might consider these types of I think, fair uses. You shouldn't GPL a piece of software which is meant to be used as a library for such pieces of software, forcing them to be permissive (in terms allowing further work, implying free use). Lesser GPL on the other hand may be just too much permissive. Even with the above scenario, it is usually the art content which makes such a piece of game a game, while the engine may well be released under a permissive license. That may well be enforced to be clear: require even independent game authors to be fair with their publishing.
(Related notes: I wish to create a license for my RRPGE project by the above principles, as a permissive extension for GPL Version 3)
Licenses: Permissive vs. Freedom
In the above section, I used "permissive" for licenses permitting derivative works, so GPL (General Public License) belonged under this term. In general, however, "permissive" especially in Free Software jargon, is used to refer to licenses which permit proprietary uses (so permitting derivative works is there, with the "catch" that you must pass over this permission for your part).
Freedom enforcement refers to the characteristic of GPL. This means basically that you must pass over the freedoms granted to you for your part of the contribution, that is, you can't build on a GPL'ed project in a proprietary manner.
This is actually a very good thing within the field of software where freedom is an insanely successful model (which would be even more successful if it weren't for software patents crippling them). I think GPL should be used (especially Version 3 of it which covers patents proper) on every software work unless there is a good, definite reason against this. The rationale is that if you decide to publish your work in a manner permitting derivatives, it is pretty reasonable to demand others doing likewise: you contributed to the whole, and as a "repayment", you demand others contributing as well. Letting software out with licenses permitting proprietary uses ("permissive" in Free Software terms) is like throwing it away in this regard: it may even come back to you if someone decides to improve it later in a proprietary manner: you may even get to have to buy your own work to get it's improvements. So it is pretty fair to say "hey, I did this for free, now I demand you to also give it for free".
For Lesser GPL, Free Software Foundation gives a good rationale: It is meant to be used for library type software pieces for which equivalent proprietary alternatives exist. It is a reasonable economical approach promoting the spreading of the open source approach (since even previous proprietary users may choose to use the open source alternative later).
What I miss is something in-between the two: A license which enforces the freedom (and especially the patent free nature) of software derivatives, however allowing for building proprietary creative content (art such as visual and audible) over such works.
Why? It is partly answered in the previous section: to allow for certain genres of games and maybe other software to keep being economical. With rigorous GPL, you can develop network-oriented games planning for gathering revenues from network services such as subscriptions, or in the case of tools, you can provide support services, however for example the adventure genre of games (or any book-like interactive art, meant to be "consumed" by individuals) would be practically dead if everything were GPL'ed: authors would have no capability to sell those to get any refund for their work on those titles.
Of course, again, for example Battle for Wesnoth with it's vast amounts of user-made (single player) campaigns proves that the GPL approach might be workable even on these fields.
Well, in overall, if I could choose, I rather wish the whole software ecosystem being covered with GPL (with the problem of having to figure out the ways to gather funds if I so desperately wanted to produce, say, an adventure game) than having today's monopolized mess with patents.
Eh, true, silly comparison, but as far as I see how well the free software ecosystem thrives, it is hard to imagine the pace of evolution would be any slower without having proprietary at all. We simply have problems to solve, which problems so much demand solution that we would throw away the prospect of refund for the software part just to get those solved. Even on the fields of industry: even the Boeings wouldn't fly today without software. They would invest in developing the necessary safety-certified software infrastructure just through contracts if there weren't any proprietary software. And to say that software infrastructure is huge would be a serious understatement. Moreover, if it were all open source from the start, probably someone would have spotted this nasty problem before a rocket would have to explode. No, I don't press here that safety-crit should be developed in the open, however if the results of the development were in the open for the start, someone interested could have spotted the bug. Or the bug wouldn't have been here for the start since that inertial reference system probably wouldn't have been, say, the twentieth reinvention of the thing just because all of these are proprietary closed source pieces of code.
Maybe I was a bit extreme with my views here, however, I am always up for some reasonable talk. :)