Copyright and Licensing - rosco-pc/propeller-wiki GitHub Wiki
I've Found some Propeller Code, now what?
As annoying as the idea is, the reality is all computer code comes with both a copyright and a license. For those not having any real experience with this, Here's a summary of a recent forum thread on this topic, that should leave you with a fairly good idea of how things work and what you need to do, if you want to use / incorporate other code into your own work.
Copyright
The author of a creative work automatically has copyright, it happens at the moment of creation. Copyright is essentially having a say over what is permissible where derivative works, or distribution is concerned. Derivatives are works that embody the authors work, in whole, or in part, to form a new work. Distribution is essentially duplication of said work, from one party to another. Use of the work, almost always involves both of these things. (one copies code from storage to memory, in order to execute, for example.)
License
Is essentially the terms of use, as dictated by the author. Best form is this: One does not use software one didn't write, without a license. That's a really easy way to sort this stuff out. Everything has a license of some kind! (I, as the initial author of this Wiki page, never knew this early on!) All anybody needs to do is be able to cite the license they are operating under, or put another way, that grants their entitlement to the work in question. Easiest way is to give credit, and cite the source for the license there.
In a nutshell, it's best to do some work to figure out what the license on found code is, or just contact the author for clarification and potentially permission. Having done this, good form means giving credit to the original author, and a reference to the license granting your use, or a statement to the effect of: "Used with Permission". Others then, seeing your completed work, understand what is yours, what isn't, and how you came to be in a position where the building and distributing of it is authorized.
Distribution really is the key element in all of this. If one does things on their own machines, for their own personal purposes, this stuff can be largely ignored. Once one moves beyond that, it's important to work through this stuff, if things are not clear.
Code found in the Parallax Object Exchange, comes with the MIT license. In this case, it's really easy! Just credit the author, and cite the object exchange, and you are good to go. Do what you will, but do also consider putting something into the pool for others to enjoy in like kind. The Object Exchange used to have a "Public Domain" like license scheme. For a short while, you may well find code not yet MIT licensed. Read the program headers, and or README, or LICENSE files to know what the terms are.
If you have already obtained code from the Object Exchange, and it was licensed under the old terms, that license still applies. This change is really about preserving copyright for the owners, and giving credit where credit is due, while at the same time permitting a wide range of permitted uses.
eg: Magic Bubble code V 2.1 by Bob the Coder, obtained and used under the MIT license, Parallax Object Exchange, 2008
Code found elsewhere is more grey. Best practice is for authors to state their license terms, either directly, or by reference to a known and established license, in the program header, so that others may know the default terms of use.
Sometimes you will see this, other times you won't. You also will see the license in a separate file, with a name like README, GPL, license, etc... It just varies, with some people not caring enough to worry about any of it, to others fairly concerned about commercial use. If you can't easily sort it out in a few minutes, it is time well spent with a brief contact with the author to get permission or maybe just clarify the license intent.
Such a contact can be really simple. Use a forum PM, e-mail, IM, or something and just let the author know what you are wanting to do. "Hi, this is Joe and I'm working on the Propeller. Is it ok if I release a modified version of your [whatever] code that works with my kind of development board / set-up?"
Once that exchange has happened, then it's just a matter of a credit line, somewhere in your program header, thus:
Super sensor driver V1.x modified with permission from [email protected]-(their-real-name-maybe), 2008 Keyboard driver V3.0, BSD licensed, contributed by [email protected], 2007
You may find code on an authors web page. If this is the case, generally they will state their terms there, or provide contact info. If the code is in a repository of some kind, code bodies are typically categorized by their functionality and license type. You can consult the repository FAQ, and generally read the licenses directly, as they are normally established ones, such as GPL, BSD, Creative Commons, etc...
At this time, the most common cases for finding code are here in the Wiki, Parallax Forum postings (ask authors about those --everybody is cool about it), and the Parallax Object Exchange.
Generally speaking, most people who contribute code on-line have some understanding of how complex or confusing these matters can be. Contacting them is perfectly OK, and welcome! Worst case, you gain an understanding of what your options are and can make solid choices from there. Best case, you make a friend or two! It may seem problematic to track these things down, and generally, that perception is reality. All that can be said on the matter is it gets easier after the first time.