Slashdot Log In
Abstract Programming and GPL Enforcement
Posted by
CmdrTaco
on Fri Jan 28, 2000 01:28 PM
from the stuff-to-think-about dept.
from the stuff-to-think-about dept.
Headius writes "Through events of the past couple months, I've ended up as the lead developer for the Litestep
project, a several-year-old effort to write a GPL'ed shell replacement for Win32 platforms, for use in place of the standard Explorer shell. Current efforts involve a large rewrite of existing code and a complete refactoring of core services. Part of this new architecture is the abstracting of services to simple interfaces. Unfortunately, several other developers have brought up concerns that the hard work they put into developing the implementations of these interfaces (which will not have any dependency on Litestep-specific code) will be silently stolen by other (closed-source) projects in the cutthroat shell replacement arena and elsewhere. Is there any real way to protect GPL'ed code that has no interdependencies and abstracts away all the implementation details (as good OO code should)? I'm not as concerned about license violations as some, but how do I put the other devs' minds at ease? "
This discussion has been archived.
No new comments can be posted.
Abstract Programming and GPL Enforcement
|
Log In/Create an Account
| Top
| 219 comments
(Spill at 50!) | Index Only
| Search Discussion
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.

Chatching Cheaters (Score:3)
moderate me down for OT :) (Score:3)
I finally was able to get on the site. While it is cool what the project is.
What I am looking for (wishful thinking
I am more concerned or interested in some sort of global universal coding project in which a lowest common denominator set of basic Operating System functionality is supported.
This is *different* from Linux or FreeBSD or any other full blown Operating System in the sense that it is both smaller than an Operating System, and most likely sits on top of Operating System.
What I mean by is a small universal library, that gets accurate clock (system timer), that handles directory and data streaming services.
I appear to misunderstand both "shell" (a literal GUI shell, and not an "abstraction shell or layer"), and interface (visual interface, and not "interface into Operating System / hardware / functionality").
For everyone who shall respond to this as: just support "X" Operating System. That is the point.
Apologies for misunderstanding. And moderate me down darn it!
P.S. They are then in fact in the *same* market as Operating System / Linux. They shall have the same "technical support user-friendliness manpower" problem of competing against commercial houses as they do. Thus, some of my above advice shall be more difficult to apply.
It is *easy* to support code for engineers.
It is *too much work* to support "low literacy users" like how can I customize my widget to a different color?
P.P.S. Isn't it annoying or funny Operating System and Open Source have the same initials?
Sun-Blackdown thing (Score:3)
If Blackdown is a bit saddened and deceived by the whole affair, they could have seen it coming. Sun was entirely within its rights through the whole thing. It also took advantage of Blackdown, but the business world exists on principles of bad faith and this is no exception.
--
Re:I worked for a company that did this (Score:3)
I know this particular paragraph refers to your own work, but in the context of your previous paragraph you do realize that bit BSD and the X Consortium released their code under licenses that specifically allowed this to happen? And they probably understand licensing issues as well as anybody at the FSF. So it's probably safe to assume that the sentiment expressed (that of some schmuck making money off your work is a sucky thing) is probably not one shared by the people in your examples.
Re:Can you DO that? (Score:3)
It's like writing a macro program, to automate system usage, and having the author of a program write to you demanding that you pay him royalties to have your program mimick keyboard/mouse events in his application.
If you write an application that depends on a GPLed program, and won't run with a replacement, then it's likely going to infringe. But if you write a program, like a compiler front-end, and it simply has the option to use a GPLed compiler, among others, then it doesn't infringe.
Similarly, if you wrote a WM replacement for win95 and it has the ability to use GPLed components for Litestep, without depending on those, and without using GPLed Litestep code in doing so, it wouldn't infringe on the GPL.
A user of a program can only infringe on the GPL by distributing a binary without source, or by using GPLed code and not following the license. Anything else they do is kosher. If I wanted to download GCC and write extensions to it, or use it in a non-GPLed wrapper, this would be fine, regardless of how I used it. Only if I released this would it change.
Thus, if you release a program that *can* use GPLed components, you're not responsible for the actions of a user, if they choose to install those GPLed components, or make the whole package dependant on them in some way.
This assumes that your package has other concievable uses, than JUST a wrapper for the GPLed code.
An example would be photoshop filters. Photoshop could write the filter interface such that it could read call binary filters from other programs, and if one of those filters was GPLed, photoshop wouldn't be in violation. But, if photoshop was written such that it required the graphics core from GIMP to even work, then it would be a violation.
You've got it backwards (Score:3)
Anyway, since I'm posting anyway, I'll put in my $.02. Knowing that someone else has stolen your GPL code could be very difficult. If you know, though, you can take legal action. One option would be to sign the copyright over to the FSF, in which case they will take responsibility for bringing violators to court.
Hypocrisy (Score:3)
This is hypocritical. Interfaces should be open -- to open source developers, to closed source developers, to everyone. If someone -- anyone -- wants to use them, he or she should be able to do so.
Fortunately, interfaces -- unlike code -- are not subject to copyright. The GPL cannot and will not protect them any more than the Microsoft EULA.
What's scarier, though, is the extremism and hypocrisy we see here. Followers of Stallman -- whose agenda already includes driving commercial software companies out of business via anti-competitive practices -- appear to want to adoptyet another leaf from Microsoft's playbook in their attempt to destroy commercial programmers' livelihoods and businesses. Why is it more ethical for the FSF to keep its interfaces proprietary or to run worthy programmers out of business than it is for Microsoft to do this? The answer: It's not. As a project leader, the author of the message which started this discussion should maintain high ethical standards and refuse to yield to such an agenda.
--Brett
You can, but you probably don't want to. (Score:3)
I'm going to argue wrt UK law, but US law (at least in some circuits) is pretty similar, if a little more developed.
It is perfectly possible to protect interfaces (especially APIs) in the way you suggest, and I don't see why the GPL shouldn't allow you to enforce that protection, though it would probably be easier if there was an explicit notice about APIs and other interfaces being covered.
Relevant cases in the US include (he said, reading from his lecture notes
That said, actually claiming this protection is problematic: protectable expression is subject to a number of tests, and there are several ways in which the defence can argue that the expression they copied isn't protected (including functional expression in the US, but not in the UK), in addition to the inevitable problems involved in showing that copying took place.
Having said that, my advice (though IANAL, and this isn't legal advice of any kind, just my opinion) would be not to bother: relying on emerging concepts in IPR is a high-risk strategy to start with, you're unlikely to want to sue anyway, if you do the damages aren't likely to be high (the defence is likely to argue that since you gave your software away, you have incurred no loss by their action - it probably won't fly, but it might make the judge think), and it's bad manners for the OS movement as a whole to look at commercial interfaces (eg. to lex and yacc) and copy them, then sue the commercial world for copying our interfaces.
However, the biggest reason that you probably don't want to go for this sort of protection is fairly simple: if you protect your interfaces like this, you have to admit that other people can too: a decision in your favour would set a precedent that things like the Win32 API can be protected (so all Win32 programs need to be licenced by Microsoft - there are defences to this which we won't get into, but it's probably going to be ugly even if they are made out). It would also mean that, for example, drop-in replacements for pretty much any library would need to be licensed, and that wouldn't be pretty at all - the GPL'd Qt clone and Lesstif would be two fairly obvious casualties.
In my view, this whole idea of non-literal copying applied to computer programs is a disaster and should be removed by legislation (the EU directive on the protection of computer programs starts to do this, but doesn't seem to go far enough). Encourage it, and one day (probably fairly soon), you'll be the one being sued for writing Hello, World.
This sounds too much like an API copyright. (Score:5)
Thanks
Bruce
good idea (Score:4)
The brief description appears to be Very Good Thing. It shall increase the number of applications and games on more OS's.
If it becomes phenomenally successful, your participants would have been instrumental to some large positive contributions to application spread.
Would this "historical" motivation be suficient?
// GPL is the only way
The precise reasons why all the commercial cross-UI projects fail / fall short is
The only way such a layer can be constructed is through GPL.
There are too many platforms, each of those platforms upgrades (downgrades
Any commercial limited-man team (versus the infinite manpower of GPL code resource) shall eventually be outstripped.
GPL is the only chance for a successful implementation of this.
I myself am looking forward to it both as user, and as coder.
Don't even think of anyway to "protect" commercial interests. The moment any part of it becomes "closed" (even in the form of "cannot be modified until after inconvenient beureaucracy") would hamper or destroy this project.
You shall succeed where commercial apps precisely and only because of open-ness.
// Commericial : higher level applications
How do you protect yourself against higher level applications (like games, database applications) that co-opt your code *freely* to provide our commercial applications with your functionality?
1. Credit and Appreciation
We commerical users of GPL code shall do what we always do. Accord code authors and groups with proper credit. Demonstrate our appreciation with thanks.
2. Donation
We commercial users shall thank you, after your code module demonstrates sufficient robustness, by donating actual development budget, to further fund your work.
There is precedence for this, and I do not suspect we shall change.
I shall watch your project very closely, and if I do see many other commercial developers or peers making good use of it in the future, I shall personally goad such peers into donation.
The same speaks for me. If I personally find your code base highly helpful to my commercial projects, I shall contribute what I can, even non-financially, to ensure the continual growth and support of your group.
// Commerical : lower level implementations
How do you protect yourself from commercial developers of low level layers?
The answer is you don't have a thing to worry from them.
1. GPL
That you are GPL and open, and they are closed and have limited manpower, shall easily cause your product (if organized properly, and if sufficient good code is contributed) easily to become technically superior and robust.
As I exposit above, there is no way any commercial company can keep up with all the versions of all the platforms. It shall bankrupt their payroll before this happens.
You *are* at a technological advantage.
2. Free or Pay
What if they just *copy* your layer verbatim and sell it for a profit?
As my understanding, this is exactly what GPL or Free Software is about! People are free to make profit off the code.
How shall your coders protect yourself?
Easy.
Be available to offer good friendly support to "users" (most likely higher level developers like us).
As *competitor* with the above commercial plagiarizer, you are already at an advantage:
1. Your product is free. Theirs cost money.
You are winning on the cost / price competition.
2. Your product can potentially have better technical support than theirs, if you do it right.
You have the resource of the original coders of the modules to support application developers.
They merely have plagiarizers or interpretors. Or a phone technician who did not even work on the code.
You actually have a better chance of this *protection* than Linux.
The average user or target market of Linux are lower literacy non-coders who need a lot of hand-holding ( and all the users who don't belong this category are already using Debian and not Red Hat
The target market or user of your layer are high level application technology literate commerical coders like myself, who are "easier" to support.
The scope of what you need to answer or help, would not run as wide a gamut as an entire Operating System.
// Project Scope Suggestion
I have been thinking the same thing on a much smaller scale for a very small subset of OS services that are needed by most game applications.
If this project is early on, may I suggest a smaller scope of Operating System Services?
In fact I can submit you privately a short spec of a small handful of *essential* functionality.
Besides the obvious personal bias that I am a commerical game developer, there are some gains for you as well:
1. A completed small project is better than a non-completed larger entity.
If done modularly and correctly, such completed small project can easily be grown and extended to its final ambition.
You can get to your technical proof of concept quicker. Ensuring both momentum and success.
2. Test Bed
By building your first iteration to a set of common functions, that already have quite a few applications waiting to ride on top of them, you have the fastest means to a nice group of users.
This again helps to smooth out kinks, track down bugs, proof in the pudding, kind of feedback that is hard to get by writing a "lower layer" in a "user-less" vaccuum.
// Disclaimer
Your site had been
The above is only based on what I can guess from your summary. Apologies to any misunderstanding.
Linux Contains Microsoft Code!! (Score:4)
In fact, it's easy to tell whether Linux contains code written by Microsoft!! The "strings" command outputs "printable" strings it finds in a stream of (binary) data; "/proc/kcore" is, in most GNU/Linux systems, a file that represents the current state of the kernel's "core", or RAM; and "grep" outputs lines containing the string on the command line that it finds in its input.
If you try the command below under Linux, you are asking for a printout of all strings containing "Copyright 2000 Microsoft" found in the your computer's RAM -- which includes the Linux kernel itself!
And, on my computer, which runs Red Hat Linux 6.1, it prints out plenty of lines before I interrupt it with Control-C!! Try it!! Doesn't it show that Linux contains W2K code?
(Yes, this is an old trick. ;-)
You are misreading GPL (Score:3)
It is still possible for someone to a) release the code and b) have a bad license on it, one that the GPL forbids. It is then up to the copyright holder(s) to deal with the legalities, as the user has violated their license agreement (the GPL).
Repeat.. this does NOT mean that code is automatically GPL'd because it includes GPL. It just means that it can only be legally distributed under the terms of the GPL.
include a hidden trigger (Score:4)
What you need to do is include a highly obfuscated trigger in your code. When a series of complicated and rare actions execute through code, a trigger message is displayed proclaiming "This code written by ABC and licensed under the GPL". That would be irrefutable proof of copying.
I believe the legal criterion to establish plagiarism is replicated *errors*. Another option is to include an intentional but, again, very obfuscated bug in your code. Either method should demonstrate beyond doubt that their product is based upon yours.
-konstant
Yes! We are all individuals! I'm not!
I worked for a company that did this (Score:3)
A few years back I worked for a software company that wrote mostly Windows specific network application software.
Well, I know for a fact that they would just take most of the MIT X server code and incorporate it into their X Server product (To be honest, I don't know how/why/etc. they did this because I wasn't in that software group and I really didn't care at the time). But their DNS server was definitely almost entire BSD code...file for file...except for the source files that implemented the UI and the Windows Service interfaces. There were probably a few more applications that had this crap in it too but those were the only ones I saw for sure during my tenure with them.
Nobody ever said or asked anything about their practices as far as I know so unless you go out and actively look for things that might be yours not too many people are going to care to look for this. It really sucks since you put in all the effort and then some schmuck that runs a sweat shop programming company makes money off of you. If anything, that's what would burn me about it happening.
===============
"All I ask is for a chance to prove that money doesn't make me happy."
Barriers to production (Score:3)
I'm not suggesting, I'm stating. And yes, historically, it is true--there is no barrier to plagiarism in intellectual property law. The whole point of the patent system is to encourage plagiarism. The concept is called "derivative works."
For example, suppose that you come up with a better method for stamping sheet steel (this happened in the 1920s). I've been working on the same problem, but taking a much different approach. I read your patent application (which is public information) and the lightbulb goes on--I have the solution, and my new solution is even better than yours. I rush to the Patent Office and file a patent. The world, recognizing a better mousetrap, beats a path to my door. I get rich--but because my patent depends upon yours (and identifying those dependencies is part of the patent process) you get rich too. You and I get rich--but society as a whole reaps an enormous benefit. Since we've improved metal stamping technology automobiles can now have enclosed bodies and still cost less to build. Aircraft wings can be assembled from stamped parts, rather than be hand-made from wood and fabric. Consumer products will drop in price--a whole cycle of economic activity will take place due to our technological innovation. (True fact: simultaneous innovation in cold-rolled steel and steel-stamping technology was one of the very few pieces of good news in economics in the 1930s.)
My point, which I think you misunderstood, is that even if someone were to try to plagiarize an invention without licensing it, typical barriers to production effectively prevented it. I know how ABB's continuous casting process works--so what? I can't set up a continuous caster in my back yard. With software there are no such barriers--if you have the source code to Bank A's consumer lending software you can easily sell a consumer lending solution to Bank B without ever getting caught. (In fact, many consulting companies do this all the time--they write a solution for a client, then sell the same solution to the client's competitors.)
Without intellectual property protection (which is what the GPL amounts to) there is no legal recourse to somebody plagiarizing your code. That was my point.
Re:Piracy not the cause (Score:3)
Which means that software innovation in China isn't happening. But is it because all of the Chinese are poor?
(Been to China lately?)
India has significantly greater poverty than China--but India has a booming software industry. (Just consider how many tens of thousands of Indians are in the U.S. on H1B visas.) Why is software innovation booming in India, but not in China? (And why, for that matter, is software booming in Taiwan, which forty years ago was poorer, and which has zero natural resources?)
This is Macroeconomics 1A material--intellectual property rights are the basis for technological innovation, which is the basis for economic growth.
lawyers, source, and dangerous things (Score:4)
Sure you can sue someone for taking your GPL code and incorporating it into a proprietary package or system. It's not stealing; you can't pursue that avenue. It is a license violation, and you could sue for that. But even better would be to take the resulting proprietary product, decompile it, and post the code publicly with specific documentation that it is now GPL code itself.
Some thoughts about this:
- The company will surely try to sue you and/or get an injunction. But then again, you were thinking about spending time in court anyway suing them, and you can surely countersue for costs and time lost. If you did your homework documenting that the code is a derivative of yours and that you were entirely within the bounds of the license that they adopted by using your code, you stand a good chance of having the case thrown out.
- By releasing their GPL code for them, you expand the market for implementation and support services. Since it's a derivative of your code, you stand to benefit from it because you're more familiar with the code. Therefore it's mostly a good thing.
This underscores the critical requirement for the legality of reverse-engineering. If click-licenses take the essential right to examine what you have purchased away from you, you have lost the right to know when or if you have been violated as a consumer or as a competitor. That's a completely unacceptable state of affairs: Imagine you buy a car with a 2.5L engine and the mfr puts a clause in the purchase agreement that licenses you the engine when you purchase the physical media of the frame and body -- and precludes you from disassembling the engine to see if they really gave you a 1.9L HO engine for which they stole the design from a competitor. It would be ludicrous, yet we accept the same arrangement in software. Why is Ferarri not worried that Chevrolet will steal their engine designs? Why are architects ok with giving their innovative structural designs to the public records office at City Hall? Why doesn't Makita worry that Dewalt will reverse-engineer their new compound-slide saw and put out a derivative work? Because these are all in mature enough industries where people realize that there's already ways to prevent misappropriation of technology (in the current legal context) without placing onerous legal restrictions on the consumer.
Not to defend them, but one can obtain patents to protect novel algorythms and innovative software. Why hide code? For example, why doesn't Microsoft publish the source for Word and sue the hell out of anyone that inappropriately uses it? One would think that the best way to defend a patent would be to openly establish ones' work as prior art by publishing the source just as every car comes with an openable hood.
Jon
It's Open, Stupid. (Score:4)
You could produce a manual which clearly describes the components and interfaces, and get a tiny income by selling it to that handful of developers who will be creating new modules.
You could make what you're supplying so good that nobody will want to replace it.
You could encourage replacement of components and focus on providing good parts for those components. Such as assuming that your user interface isn't the best, but you've decided that you're just making a user interface which is so flexible that it will be tuned by others to do what they need.
Re:You Can't--That's the problem... (Score:3)
First, the question of China and intellectual property. This is a settled question in the history of economics: there was no such thing as intellectual property protection before the mid 1700s in Britain. The development of intellectual property protection--specifically the monopoly rights to your creation--was the basis for the Industrial Revolution. The nations that industrialized early were those nations that adopted intellectual property protections (such as the U.S.). Those that did not adopt IP protection (France, the German states) were left behind. They did not begin to catch up until they adopted protections for intellectual property.
Poverty in China is no reason why there is no Chinese software industry--there is plenty of poverty in India and Pakistan, but there are booming software industries in both countries. Remember that before Ed Yourdon was crying wolf about the Year 2000, he was crying wolf about the threat from cheap labor in India. (And many of us who have worked in IT for a long time can name former clients or employers who outsourced all their programming to Indian firms.) What's the difference? India and Pakistan both protect intellectual property rights. China doesn't.
If you want to look at a broader comparison, consider East Germany vs. West Germany; North Korea vs. South Korea; Singapore vs. Malaysia; or practically anybody in Asia vs. Indonesia. Technological innovation boomed in West Germany, driving the booming economy--to the extent that the Third World War that we were brought up to expect didn't happen because West Germany more or less just bought East Germany. It wasn't a war--it was a white-knight takeover. Technological innovation in West Germany was protected by intellectual property rules, it was not protected in East Germany. Without an impetus to innovation, nobody in East Germany felt a burning desire to innovate. The same situation exists in all the other countries I listed: forty years ago there was no economic distinction between the pairs of countries I mention. The country that has prospered has done so through technological innovation. If the other country (such as Indonesia) has prospered at all, it is largely a result of the extraction of natural resources and the exploitation of cheap labor.
Intellectual property protection begets technological innovation. Technological innovation begets economic progress. You can have technological innovation without IP protection--but the record of history is brutally clear: without IP protection the rate of technological innovation is dramatically lower.
(This, incidentally, is a major part of the World Trade Organization's dialogues with the People's Republic of China. The industrialized West wants the PRC to develop strong intellectual property rights to encourage technological innovation. To many people it looks like the U.S. is trying to jail people bootlegging copies of Windows. What those people, including the PRC's leadership, don't get is that if and when somebody develops a Chinese OS that's better than Windows, Microsoft will instantly become the #2 player in the game. Way more people speak Chinese than English.)
Re:The real remedy for GPL... (Score:3)
Plantiff: they used my GPL code in their closed source code
Defendent: yes we did
Judge: Mr. Plantif, what is your lost revenue due to this theft?
Plaintiff: Based on their selling price of $50 dollars a copy, of which 25% of my code is used, my lost revenue is $12.50 ($50*.25) per copy they have or will sell. (Opportunity cost being defined as the money lost by NOT selling my code). Total loss $62,500.00.
Judge: I rule for the plaintiff in the amount of $62,500.00.
At least that is the way things should work. You have to remember that in economics and law the value of forgone opportunities is just as real as cash in the pocket.
'Stealing' materials... (Score:3)
The thing I don't know: has the GPL ever been legally challenged? (i.e. has a company ever been sued for 'stealing' GPL'ed materials?) Seeming how this project revolves around a Win32 platform, I could easily imagine M$ lifting the best parts of the redesigned interface and billing them as their own. ('Freedom to Innovate').
If having your code 'lifted' is a concern, I might almost try to find some form of legal advice about this.
Another thing I've always wondered about: how does existing copyright law apply to "open" software? I remember Apple suing M$ over the use of the Win 3.x interface, but that case was settled out of court. (Any legal-type geeks out there?)
Can you DO that? (Score:5)
If I understand your project correctly, then you might not be able to release this thing, at least not under the GPL.
IIRC, use of a GPL interface, unless explicitly declared otherwise à la Linus' amendment to the GPL for Linux, generally means that the using code must also be covered by the GPL.
Historical: NeXT wanted to use gcc as their compiler, so they wrote an obj-c frontend to link to gcc statically. RMS told them that that wouldn't get around the GPL's terms, so they put the whole thing under the GPL.
Recent: I wanted to use a few Sun Java libraries in writing a GPL'd frontend for an IMAP client. RMS told me this was not allowed -- even dynamic linking is covered by the GPL.
IANAL, but you may not be able to use the GPL. This sounds like a job for the LGPL, but talking to the FSF about this would definitely be a good idea.
Cheers.
I don't see how you can (Score:4)
Firstly, there's the fact that for a freely distributed, GPL'ed work, you yourself lose nothing, those to whom you distribue lose nothing, and those who would respect your license lose nothing. There will always be freeloaders, and there will be freeloaders no matter which license you use, even a proprietary one. If you are using the GPL for the right reasons, the benefit of placing free - as in libre - code in the public sphere outweighs the irritation of having ne'er do wells use your code.
Secondly, to create a distinctive piece of software, the advantage from using GPL'ed code is greatly overweighed by the potential for legal action. A lawsuit can kill any product and even any company; the expense of a clean-room rewrite of a tainted product is so much greater than the potential benefit from using restrictively licensed code. Any corporate lawyer could make this call instantly, although I have less faith in PHB's and even less on individual coders. Still, I doubt that your prodct will be thoroughly exploited; snippets yes, the whole thing, no.
--
"Derivative works" is fuzzy & hard to Detect. (Score:3)
Detection is another problem. How are you going to know they used your code? They don't publish theirs! You could always try to figure out what compiler & options they used (but watch that EULA!], compile your code that way, and compare.
Very tough.
Fortunately, once you really think they did steal GPL code and you're willing to start a lawsuit, things paradoxically get easier. IANAL, but you have subpoena power for depositions and discovery. They will have to produce their source code, and employees will have to answer were it came from.
-- Robert
You Can't--That's the problem... (Score:4)
You and I and the entire SlashDot community might argue about whether such plagiarism might happen--but the simple facts of history are brutally plain: without intellectual property protection that kind of plagiarism practically always occurs.
Example: consider the People's Republic of China. The PRC has paid lip service to intellectual property issues, but fundamentally there isn't any such thing. When was the last time you bought (or heard of) a piece of software developed in the PRC? It isn't because the Chinese are stupid--far from it. The ranks of American software firms (and the membership of SlashDot, I'm sure) are chock full of ethnic Chinese, and Chinese emigrants. But because anybody can peek at your work and swipe the results--and laugh at you while he's headed for the bank--most people decide that there is little reward for innovation. What innovation there is tends to be "protected" by some kind of secrecy scheme, or done because the innovator derives personal pleasure from giving his creations away.
This is a painful lesson to learn--but this is simple history, and simple economics. In some technologies there have been significant barriers to plagiarism (I can plagiarize ABB's technology for continuous-casting sheet steel--but unless I have $100 million for the machinery, not to mention sales contracts with Ford, I can't use their invention) but in software there are no barriers at all. If I can read your source code, I can use it. I may not copy it--I might just grasp the ideas and incorporate them in my next product design. And there is practically no way to prevent that from happening. The only way to protect the work that you have done (and to profit from it) is to seek refuge in the rules of intellectual property.