This project has moved and is read-only. For the latest updates, please go here.


Topics: General Topics
Nov 12, 2007 at 5:59 PM
Okay, I read and re-read the licensing stuff and I still don't get it. All want to do is use the library. If I use that in our commercial product, I don't want to be required to distribute or more importantly expose our product source to anyone.

So is that license saying that if I just use it, I have no other obligations?
Nov 13, 2007 at 2:36 AM
<Not A Lawyer>

My $0.02: licenses are really important, so personally I'd take the time to "get it." Wikipedia actually has pretty comprehensive explanations of all the difference licenses that are out there (the major ones, anyways). Here's the page on LGPL:

...basically, yes, you can use it in your commercial product and not distribute your source code, assuming you meet a few criteria outlined in section 5 of the LGPL. Basically, section 5 states that it must be possible for the software to be linked with a newer version of the LGPL-covered program (in other words, you must be able to drop a new version of SharpMap alongside your program and have it work). The implication here is that the LGPL-program isn't physically contained within your program, but a separate entity that you're merely linking to at runtime.

</Not A Lawyer>
Nov 17, 2007 at 9:07 PM
You may use it in binary form using standard .Net assembly referencing however you would like.

If you make any additions or modifications to the SharpMap source code, you are obligated, under the terms of the license, to contribute those changes back to the SharpMap project. Of course, any help you can give to make the project better is greatly appreciated by all involved!
Oct 31, 2008 at 8:55 PM
OK I have a somewhat more complex question.

I needed to be able to render vectors to an image.  So I started by copying the VectorRenderer class, but ripped out all the stuff dealing with the map object (I just have an IEnvelope describing the geographic bounds of the image).  I also changed all the references from SharpMap geometry objects to GeoAPI geometry objects.  I also added more methods since that wasn't everything I needed.

So I am just using "most" of that one file (plus two methods it used from other files).  I have modified it heavily from its original state.  Does my project now count as a modified version of the library?  Or is this merely fair use of the available source code as a template for what I'm trying to do?

If this counts as a modified version of the library I'll just have to rewrite the code from scratch, since this is a project for a client and there is no way it's going to be LGPL licensed (which is I think what the LGPL requires for modified versions).
Oct 31, 2008 at 9:15 PM
Hey Jeff,

Yes, this is the correct interpretation of the license: any modification of the source means that that source is also bound by the LGPL. Copyright protection is restricted, however, to a specific manifestation of an idea, so the ideas in SharpMap are not copyrighted: you can read the code, get the ideas it manifests, and write code which does the same thing.

On a related issue, what to SharpMap users/contributors think about changing the license to something a bit more permissive, like BSD, MIT or MS-PL?
May 29, 2013 at 9:24 PM
Does creating new layer types come under changes to source code?

Or is it literally just changing anything which then gets compiled into the binaries?

May 29, 2013 at 9:27 PM
That depends on where you create the layertypes.
  • If you create the layers in a separate assembly you will just link against the LGPL binaries which is OK.
  • If you add the layers to the SharpMap-assembly, you will be enforced by the LGPL-license to share your work under some circumstances.
If the layers are of general interest, we would be glad to have them in the SharpMap code :-)
May 29, 2013 at 9:38 PM
To be honest probably a bit of both. Some layer types i will probably upload, but some might be a bit more niche and possibly require access to corporate data.
May 29, 2013 at 9:41 PM
As long as you keep them in a separated assembly and are only refering the SharpMap assembly from them you should be fine.