6

I have written a small Java program which i'd like to distribute on my website. I have used a few external librarys which declare following licences: Apache License (2.0), LGPL and one API doesn't declare any licence.. It's open source though.

I have spent a lot of time and effort developing my program. That's why I thought of distributing the software so that only donators (no matter how much or little they donate) can use it to it's fullest extent. Non donators get to see a nag screen now and then with a suggestion to donate and can only download one file at a time instead of simultanious downloads. (Yeah my program does some downloading)

Can I do that without getting legal issues? On one hand I would like to distribute the complete source of my project but on the other hand that would render the limitation of functions for non-donators useless, because they could simply remove the part with the serial nr check and redistribute my software..

Under what licence should i distribute my program?

Aaronaught
  • 44,523

5 Answers5

7

First of all: You shouldn't lie your "costumers". If only donators can use all features, its not a donation, its a regular payment.

LGPL stricly allows to be used in non-free applications, Apache License I don't know. At least you should clear the API license. Just to say "Its open source" doesn't tell you, what you are allowed to do with it. Mail the maintainer and ask him.

Of course I don't know your application. Maybe you can split it into to parts, where one is published under an OSS-license and the other part is the paid one.

2

Can I do that without getting legal issues?

Sure, open source does not mean free (though it often is).

But you can not use the GPL license. Just use the average shareware license.

http://en.wikipedia.org/wiki/Donationware#Notable_examples

1

As long as you link dinamically to the LGPL-ed library you can do almoust anything with your program, includeing selling it or putting nagging screen to it. The apache license is much less strict then the LGPL. If you link statically to the LGPL-ed API you can still distribute it, but only with source code. You need to give the source to whoever buys your software. So you can't give your program without the source to anyone, thus a nagging screen is a non-sense, one can take it out and recompile it, a good example for this is FlowPlayer.

I recommend writing a new license if you want to use your own rules.

EDIT: For Java there's no such thing as static or dynamic linkage, everything is linked somewhat dynamically, yet not fully. As the writer of the license, Dave Turner said, the linking method used by Java (the use of the 'import' keyword) falls under section 6 of the license. This means you must provide a way to the user to change the version of the library you used, also reverse engineer it to debug his changes. So you don't need to give away the source, neither you need to give description of the internals of your program, but you can not deny the users to reverse engineer it (which contradicts most proprietary licenses). You still need to provide the source of library. So basically you can sell your program to non-programmer people, or who are not smart enough to decompile your program and remove the nagging.

I'm not sure, but I think other's can also publish a modified version of your program, ex.: a coder takes your limited version, decompiles, removes every limitation, compiles it and publishes your work. Don't be fooled of the idea that no one will bother doing that, I did something like this (I wrote something like, because I modified and republished an LGPL-ed program). People can go far enough when there's about money.

You might also want to write your own license where you can specify what parts of the code can not be changed if reverse engineered (ex. The User is permitted to reverse engineer the Product, but can not modify sections in the code marked with *insert mark here*), this way blocking them to remove the nagging/limitations.

0

Simple answer is check the fine print, there are licenses which claim if you use their stuff you should also make your code open source..

Long as this is not the case, you arent obliged to provide source, nor give it for free..

BugFinder
  • 301
0

Those two licenses do allow you to redistribute a derived application under almost any license, but at the same time, you must respect the terms of those licenses.

That means, for the LGPL licensed work, you must make the source code available for it in it's entire, plus any modifications you make to it. You can modify the LGPL library, but those modifications must be distributed in source form. However, when you link to an LGPL library, you are not required to make the linked work LGPL - you can distribute it under the license of your choice.

Dynamic linking or static linking are both allowed, but it must be possible for the user of your application to swap out the LGPL library for one of thier own. Dynamic linking is usually used to make this simpler. If you are static linking and don't want to distribute your source code - you must distribute the compiled object files for that code so that someone can link their own.

The apache license is even less restrictive than the LGPL. You can take Apache code and embed it directly into your application, or link it - and still distribute your code under a license of your choice.

@Hovertruck is mistaken by saying that you cannot use the GPL - infact, you can. The LGPL explictly allows relicensing of the work under the GPL. You can also license Apache derived work under the GPL.

A possible licensing strategy for you to use is to distribute a "reduced" version of your application under the Apache license (or other similar), and distribute a more compilete version under a proprietary license of your choice.

Mark H
  • 2,538