views:

205

answers:

9

I'm all new to the open source free software thing, but any way I'm going into it pretty well (I guess!!).

Now the thing is: in the way to distribute my program, I'll have to distribute my source code, so it will be a (.gz) with an installer for sure, or maybe a (.deb).

My questions are:

  1. (I know this is a silly one, but I'm new here) How can I make sure that no one will take my source code and use it as theirs, I mean the program is free, but do I need some kind of proof that this thing was written by me?

  2. What kind of an open source license should I put on the program? (considering that I'm using Debian, Ruby, Cron, Partimage, Qt4)

A: 

Use the GPL - http://www.gnu.org/licenses/gpl.html

Include that with your source code.

Here's a guide on how to use it - http://www.gnu.org/licenses/gpl-howto.html

Nate Shoffner
If your going to downvote, please give a valid reason, thanks.
Nate Shoffner
Take time to consider the implications carefully before selecting a license. Some, (including the GPL) place restrictions on use of the code by others, and this isn't always what you want. It maybe what you want, just make sure you have looked into it carefully.
Simon P Stevens
@Nate: I have. Don't take it too personally, I just think that the GPL comes with implications that need to be considered before using it. I prefer egon's answer which gives some options and reasons.
Simon P Stevens
Ok, no problem. I just hate when people down vote without reason.
Nate Shoffner
A: 

You can use MyFreeCopyright to show that you've copyrighted it. It's probably the easiest way.

What licence you should depends what you allow others to do with it.

  • GPL - general purpose, keep it free, only for open source community
  • LGPL - can be used in commerical applications if any improvements to the application/library are also free
  • MIT - free for all purposes if licence kept intact
  • Copyleft - do whatever you want with it
  • Creative Commons - several options, easier to understand
egon
+2  A: 

Your tags suggest that you want to distribute ruby software. You could distribute it as a gem via gemcutter.

And it's impossible to guarantee that no one will reuse your code as their own as not everyone follows the terms of licenses.

Tomas Markauskas
+1 Enforcing a license will likely cost tremendous money in lawer fees.
sharptooth
+4  A: 

There are lots of different open source licenses and many of them have minor differences. You need to decide what is important to you in how your code will be used and distributed by others.

There is a good comparison of some of the available licenses on Wikipedia.

From that list, you should also check out the wikipeida page on each license for details on their specifics.

the major ones you should take a look at are GPL, LGPL, MIT, BSD, Apache and Mozilla.

It's also worth taking a look at the various creative commons licenses. They offer some easily configurable options to build a license that suits you.

Be aware that some licenses like the GPL require that if anyone wants to work with your code, they must release under the same (or compatible) license. This can place restrictions on your code being used by commercial companies or in propriety software, so some people prefer a less restrictive license. This of course is entirely down to you, and how you would like your code to be used.

Simon P Stevens
+1  A: 

How can i make sure that no one will take my source code and use it as theirs, i mean the program is free

Maybe you don't want to open source it at all. You can still make it available for free even without the source.

If you open source it there is no way (and no sense in) preventing other people from using and changing your sourcecode with also makes it their sourcecode. So at that time it will not be "yours" anymore. At least not exclusively.

Foxfire
+1 Even an open source license with an attribution clause will not help - if someone makes a small improvement that makes the program 1 million times more useful the entire program will likely be attributed to that person by users, not to the original author.
sharptooth
A: 

You can use a source code obfuscator to make decompiled code hard to read. This is useful in situations where you don't want to make the source code public and want to make it hard for people to reverse engineer the code.

The point of using an open source license is that you distribute the source code with the program, so the two requirements are difficult to reconcile.

richj
A: 

Which licence you chose depends heavily on the license of the components you've used. As far as I can see, partimage is GPL, the others probably MIT or BSD and LGPL. You need to use a license that is compatible with all your components. So, if your project is (for instance) mostly an extension of partimage, you'd have to go for GPL.

If you want to go with the "Debian spirit" of things, GPL would also be a natural choice.

1) - is however impossible. That way lies DRM and heavy crypto-stuff. The only thing you can do is to put on a license and expect people to respect it. Or, of course, take things to court whenever you notice anyone breaking the license - expensive and annoying.

olemd
A: 

There is only one way to ensure know one uses your sourcecode as theirs. Don't publich your sourcecode. But judjing from the way you wrote your question, this is not an option for you.

Licences

Be avare. No free software license, inhibits any person to do whatever they want to do with your sourcecode, as long as they don't publish it.

The right license for your project depends on your intention on sharing:

  • If you just wan't your name to be remembered in every derivative, nomatter whether the derivative is free or properitary, use a BSD-style license. But be aware. Even microsoft would be allowed to include your code in their new windows version without telling you. There are several of these license (BSD, MIT, MPL, ...). There is a list of them at http://en.wikipedia.org/wiki/BSD%5Flicenses#BSD-style%5Flicenses.
  • If you want to ensure, that all derivatives of your software are also free. You could use the GPL. The GPL forces all derivatives to also be GPL.

GPL

There are several variants of the GPL with different restrictions:

  • AGPL any derivative which uses your code must be published under the AGPL. Even if the derivative is only accesible vie network (for example if I modify your http server and it runs on my server), it must be published under the AGPL.
  • GPL any derivative which uses your code must be published under the GPL or AGPL. Even if they only use your code as a library
  • LGPL any derivative which uses directly your sourcecode must be published under the LGPL or GPL or AGPL. If somebdy just uses your library withouth packing it with his own project, he can use whatever license he want's.

So if you use GPL software and partimage is GPL software, you have to use GPL as license for your software. I persanaly prefer the AGPL.

Be aware: The GPL only says you have to give the sourcecode to those, you gave the program. So if somebody is selling his derivative, he only has to give you the sourcecode, if you buy the program.

johannes
A: 

1) Once you distribute software you automatically start leaving evidence of ownership around. Open Source software archives are mirrored, several organizations maintain archives of public mailing lists and other pieces of the Internet. Distributed version control means that the whole history of a project can be held by lots of people.

Linus Torvalds joked that real men don't backup, they just upload their stuff and let the world mirror it.

In practice, it's more likely that few people will use a piece of software, rather than anyone will care enough to pass it off as their own.

2) You must use a license that complies with the terms of the licenses of the software that you are reusing. This is why the GPL is called viral - if you write software that directly links to any piece of GPL software you must use the GPL for your code, or get an exemption from the copyright holder.

If you have a free choice, I would suggest using the MIT license, because this is the standard license for Ruby code. It is very short and readable.

Stuart Ellis