I wrote a library and I would like to make it open-source, but I am afraid of others stealing it and taking ownership of it. I am very new to licensing software.
What should I do and what are the steps in licensing my software.
I wrote a library and I would like to make it open-source, but I am afraid of others stealing it and taking ownership of it. I am very new to licensing software.
What should I do and what are the steps in licensing my software.
If it's open source, you are relying on the honour of the people who use it, whatever form of preamble you put in each file and include with the distro bundle.
You probably want to start with the OSI licensing page.
Well the first step is choosing what licence you want to release your software under. The Open Source Initiative has a useful page listing a lot of them and there's a good comparison on the KDE web site. There are lots of different options - you need to work out what you're happy for other people to do with your code. Are you happy for it to be included with commercial applications without the source code? Modified without changes being contributed back?
Then you just need to work out what the licence requires - you may just need to include a licence.txt
file with the software, or apply a comment at the top of each source file.
Find an appropriate hosting site which is happy to use that licence, and you're away.
GNU Library License
Read LGPL.
Alternatives
There are many other licenses from which you can choose.
Application
Usually it is sufficient to include documentation in the header of all source files that refers to the licensing conditions. As well, it is common to include a text file containing information about how the software can be used.
Software Theft
Once publish your software under an open-source license, typically that grants everyone the right to use the code for any purpose they desire. Normally you needn't be concerned because that is the point of releasing the source code. In fact, you want to encourage others to take your software and use it. Something that is given away for free cannot be stolen.
Ownership
The real concern here, in my mind, would be people taking the software and claiming it as their own. It happens (DVD Jon, Microsoft, and SCO to name a few), and there is not much people can do about it.
If your concern is about people branching your software to create other versions, that seems more like cause for celebration. It implies that your software has been well received, so well that other people want to take it in directions that they feel solve a different niche of problems. This should be encouraged.
No matter what happens, though, you will retain ownership of whatever you produce under copyright law (at least in Canada and the United States).
Remember to consult your friendly neighbourhood IT-specialized lawyer for advice.
Custom License
Also, even if you release the source code under an open-source license, it does not mean that that is the only license you may associate with the source code. It is entirely possible that someone will approach you requesting different terms. For example, they might want to create and share a proprietary solution that uses your technology, without having to release their changes to the world. You might choose to offer them a commercial license under mutually agreeable terms and conditions.
Be careful, though: third-party contributions donated to your project, under the terms of the open-source license, are not yours to distribute under a different, custom license. If you want the flexibility of creating a custom license, you must have the ability to identify and extract your personal contributions.
If you make your code open source, you are explicityly allowing other people to do pretty much anything they want with it, with in the case of GPL some restrictions on what they must do ifv they choose to distribute it. This is not "stealing". If this worries you, don't make it open source.
If you want the source code to remain free but you don't require the software using your library to be free, you should use the LGPL library. Link
Otherwise, if you want the software using your library to be free, go for the classic GPL. Link
If you are afraid people can steal your work, well, maybe free licences aren't for you :-)
Instead of stealing them, they may use your code, enhance it, redistribute it etc. If you don't know much about this philosophy read here
When you licence your library you still retain the copyright. The licence governs what people can and cannot do with the library. You can select from many different open source licences. Without knowing anything about how your library is intended to be used, I'm going to make the assumption that it needs to be compatible with a proprietary licence.
I strongly encourage you to read the terms of these licences.