License Agreement

General help: new users, installing the Ecere SDK, using the IDE to compile and run applications.
Post Reply
D.Bane
Posts: 78
Joined: Thu Jul 29, 2010 2:51 pm

License Agreement

Post by D.Bane »

Hi.

I did not know where exactly to post this so I hope that I am doing it in the right place.

I wanted to ask this question for a long time now and always end up reading the topics on forum and forgetting to do this.

The License Agreement, license, rights, etc.

What is it required from anyone selling or giving application that are based on the Ecere framework to do?

While I am not in a present need for this, I would like to know for the near future, as I would not like to break the license.

Are there files to be presented with the applications, I guess the ecere.dll needs to stay with its name, etc.

Basically, what I would like to know (and believe that many other could benefit from knowing - as I know a lot of companies that are using open source but remove the files they should not even change) is exactly what is asked from us when we present an application to the market (as free and as commercial, if there is difference).

// The conclusion based on responses from Redj and Jerome (so you know it is Good :) //

What you need to do/include in any type of applications you are creating:
  1. If someone was to give source code of the Ecere, he/she should leave practically everything they get with the Ecere, when downloaded. The important thing is that file LICENSE at the root of the downloaded folder is placed in a clearly noticeable place. (copyright notice, this list of conditions and the following disclaimer)
  2. When the application is made it should have the licenses files included documentation if any or in license agreement. Also depending on the application created (GUI or console) as well as the parts of code used the programmers as well as the systems the code is operating (see this post by Jerome to know more) should include the licenses of those libraries as well (at the end I will add all the libraries mentioned so far). This can all be achieved by simply including the LicensesDialog class in the made application or setup which should have all the needed licenses shown as well.
You are required to acknowledge the usage of the next libraries with links to their licenses:
  1. Ecere SDK / Ecere Framework
  2. libjpeg library
  3. giflib library
  4. freetype
  5. harfbuzz (see Jerome's post for what should be enough) as it states under GPL license on the website and Old MIT on other part of website.
Not requested but nice to do:
  1. Link to ecere website (since you always answer posts with more then what was the actual problem - suggestions, examples, etc. it is at least what could be done)
  2. acknowledge zlib,
  3. acknowledge Tango icons (icons and palette are in Public Domain, icon naming utilities in GPL)
  4. acknowledge libpng,
  5. acknowledge UPX (if you use the Compress option in Project Settings)
So that should be it. If I notice, or anyone other notices that there should be a change in this post lists just post about it and I will update this first post.

All the best,
D.Bane
Last edited by D.Bane on Sun Feb 12, 2012 7:43 pm, edited 1 time in total.
No army is to big, if the heart is beating strong.
There's no bad luck, it's just easier to blame someone else.
redj
Posts: 105
Joined: Sun Jan 17, 2010 10:03 am

Re: License Agreement

Post by redj »

hey D.Bane

you can view the Ecere SDK license in the ecere/ecere.epj using a text editor or using the IDE. To see the license in the IDE, use the menu Project -> Settings and then click on the Project tab.

you can see the license at https://github.com/ecere/sdk/blob/master/LICENSE as well.

I've used some code that Jerome wrote and added a LicensesDialog in extras/ (commit) and a sample demonstrating it's use in samples/misc/licensing/ (commit).

those commits are on my personal repository forked from the official repository but Jerome should pull all this in a few days.

cheers!

-redj
D.Bane
Posts: 78
Joined: Thu Jul 29, 2010 2:51 pm

Re: License Agreement

Post by D.Bane »

Hi Redj.

Great, so we basically would need to add the LicensesDialog class to be shown right? I thought that there may be more like this..

When you produce an exe most probable thing would be to pack it with documentation as well.
So next to the someApp.exe and someAppInstruction.pdf, we need to have

libecere.so / ecere.dll
libecereCOM.so / ecereCOM.dll
libEDA.so / EDA.dll

We should also put EcereLicence.txt?

And should something like (if I understood correctly)
Copyright (c) 1996-2009, Jerome Jacovella-St-Louis
Copyright (c) 2005-2009, Ecere Corporation
be placed in documentation at some point, together with zlib, libpng, libjpeg, giflib, harfbuzz, freetype, GCC/MinGW, GDB, UTX... licenses?

I just want to make sure to have all details when I will need them :)

Thank you,
Bane.
No army is to big, if the heart is beating strong.
There's no bad luck, it's just easier to blame someone else.
redj
Posts: 105
Joined: Sun Jan 17, 2010 10:03 am

Re: License Agreement

Post by redj »

D.Bane wrote:Great, so we basically would need to add the LicensesDialog class to be shown right? I thought that there may be more like this..
when you distribute an application, it's nice if you can show the license and say that your application is based on Ecere SDK maybe even with a link to ecere.com but all you really have to do is distribute a perfect copy of the license for ecere somewhere with your application. Either in the application itself or with the distributed files. any other required license should be included as well.

note: we could upgrade the licensing sample to showcase this best practice of showing the Ecere SDK logo and the "This application is based on Ecere SDK" message, etc...
D.Bane wrote:When you produce an exe most probable thing would be to pack it with documentation as well. So next to the someApp.exe and someAppInstruction.pdf, we need to have

libecere.so / ecere.dll
libecereCOM.so / ecereCOM.dll
libEDA.so / EDA.dll

We should also put EcereLicence.txt?

And should something like (if I understood correctly)
Copyright (c) 1996-2009, Jerome Jacovella-St-Louis
Copyright (c) 2005-2009, Ecere Corporation
be placed in documentation at some point, together with zlib, libpng, libjpeg, giflib, harfbuzz, freetype, GCC/MinGW, GDB, UTX... licenses?
btw, you can distribute applications based on Ecere SDK as a single executable file if you statically link them. In which case you would not be distributing libecere.so/dll, libecereCOM.so/dll and libEDA.so/dll.

it's probably a good idea to include EcereLicense.txt and OtherLicense.txt but I think for the licenses that we care about here you only have to somehow include them in your distribution. so if you include the LicensesDialog, you would be covered. it would also be fine if you include the license files and do not use the LicensesDialog.

I don't think you need to include the copyright notice in the documentation. it can be nice if you choose to reproduce the licenses in the documentation as well but that's optional.

the key thing is that you have to comply with the terms of each individual license. you could simply include in your distribution the license file for each component that your application uses and you would most likely be in compliance. that is, of course, unless you do something a license says you can't do.

for your purpose you need to include the licenses for zlib, libpng, libjpeg, giflib, harfbuzz, freetype and upx (only if you use the Compress option in Project Settings) and of course the ecere license. and that's for a GUIApplication... if you want to distribute a console application, fewer licenses could be required.

we will improve LicensesDialog with the missing licenses soon enough I'm sure.
D.Bane wrote:I just want to make sure to have all details when I will need them :)
or course! and I'm sure Jerome will add something to this topic in a few days. :)

-redj
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: License Agreement

Post by jerome »

Hi D.Bane,

Just to clarify and sum things up:

1. The Ecere SDK is distributed under one of the most 'free' certified Open Source license, namely the revised BSD license
2. In addition to a copyright and a liability disclaimer, the revised BSD license has the following 3 conditions:

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
this list of conditions
and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer
in the documentation
and/or other materials provided with the distribution
.
* Neither the name of Ecere Corporation nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.

So, if you were to distribute the Ecere SDK source code, all 3 things must remain -- you just leave the whole ECERE/LICENSE intact.

If, as is more likely, you distribute the runtime library in binary form along with an application, either statically linked or as a shared library, the binary requirement applies. In this case you must include the license in the documentation and/or other material provided with the distribution.

Because the Ecere runtime library can make use of third-party components -- which may or may not be included as part of the library, e.g. depending on which features are enabled, and whether you are on Linux or Windows, on Linux it usually makes use of the preinstalled system libraries -- you may have to include additional licenses, as is demonstrated in the license dialog which Redj shared.

3. As for which runtime libraries must be included for your application to work, this depends on which features you are using. libecereCOM is a bare-bone eC runtime library, excluding the GUI toolkit, graphics, networking, etc., so you would only need to include this -- and only this -- if your application did not make use of any of those features. In general, you would only require libecere. If you make use of EDA, the Ecere Database Access layer, then you will need to distribute libEDA as well. As Redj pointed out, it is possible to build your application statically so that you can conveniently distribute it as a single executable file. I believe there is at least one post on the forums discussing this, and you will find, among others, a "static" configuration in the ecere.epj project file which will let you build libecere statically.

4. As for changing the name of the libecere library, you will not be able to do so without major trouble, as the eC runtime system loads up the module based on its name, and the filename will need to match.

Hope this helps! :D

Cheers,

Jerome
D.Bane
Posts: 78
Joined: Thu Jul 29, 2010 2:51 pm

Re: License Agreement

Post by D.Bane »

Hi,

Thank you both Redj and Jerome for the info.

Hm, I was thinking that it would be cool to be able to produce one application that would go on my USB without a need for dll's and I had noticed somewhere on the forum about the static linking it just never really clicked. :) So it can be even more interesting :)

I thought that it would not be possible to change the name so easily but someone asked me about that when I told them about EC and I wanted to see if I answered correctly.

OK so I will update the first post with the next info if it is correct.
Needed for all types of applications:
  1. If someone was to give source code of the Ecere, he/she should leave practically everything they get with the Ecere, when downloaded. The important thing is that file LICENSE at the root of the downloaded folder is placed in a clearly noticeable place. (copyright notice,
    this list of conditions and the following disclaimer)
  2. When the application is made it should have the same files included in its distribution and shown in the documentation if any. Also depending on the application created (GUI or console) as well as the parts of code used the programmers should include the licenses of those libraries as well (at the end I will add all the libraries mentioned so far). This can all be achieved by simply including the LicensesDialog class in the made application or setup(?) which should have all the needed licenses shown as well.
Not requested but nice to do:
  1. Link to a website (since you always answer posts with more then what was the actual problem - suggestions, examples, etc. it is at least what could be done)
Now another question regarding the 3rd clause:
"Neither the name of Ecere Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission".

- So if a firm/programmer is creating for example banners or some other kind of marketing papers/videos, they should ask if they could include in their marketing that the software was designed by using Ecere Framework as they could be using your fame to get fame for their product and could potentially damage your name, correct?

Other licenses that should get included:
  1. zlib,
  2. libpng,
  3. libjpeg,
  4. giflib,
  5. harfbuzz,
  6. freetype and
  7. upx (only if you use the Compress option in Project Settings)
Thank you both.
D.Bane.
No army is to big, if the heart is beating strong.
There's no bad luck, it's just easier to blame someone else.
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: License Agreement

Post by jerome »

Hi again D.Bane,

Yes the info in your last post is pretty much correct.

About the binary distribution, you do not need to package the 'LICENSE' file itself (or any other) elsewhere than embedded within your documentation and/or a License Dialog.

I just went through all the 3rd party license to make this as clear as possible:

Of the 3rd party licenses you mentioned, ZLib does not have a strict requirement, but you're still welcome to credit it and include its license, as it says:

1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.

UPX does not have a strict requirement to credit them. UPX is distributed under the GPL, with special exceptions that makes it possible to use UPX unmodified to compress any executable, even if their source code is not released under a license compatible with the GPL. Again, you're welcome to credit UPX if you make use of the compression

libpng: If you use this source code in a product, acknowledgment is not required but would be
appreciated.

SQLite: If you make use of the EDA/SQLite driver, you may wish to acknowledge the SQLite project as well, although the source code is in the public domain.

Tango icons should also get credited (It is under a Creative Commons Attribution-ShareAlike license) UPDATE: I just checked their website ( http://tango.freedesktop.org/ ) and I think they changed it to be public domain (but they still encourage an acknowledgement)

giflib: The license states the copyright notice and permission should be included in distribution of the software. I assume this means it should get credited as well, perhaps not necessary if you link against the system's gif library (not the default on any platform with Ecere right now, as it includes 'ungif', a stripped down version that can only decompress gif).

libjpeg: acknowledgement is required.

freetype: This is released under a dual GPL/FTL license. The FTL license requires you to credit them.

harfbuzz: This was previously released under the FTL then a mess of multiple licenses, now it has a license that states:

Permission is hereby granted, without written agreement and without
license or royalty fees, to use, copy, modify, and distribute this
software and its documentation for any purpose, provided that the
above copyright notice and the following two paragraphs appear in
all copies of this software.

However there are many copyrights through the source files, but not copyright in the top COPYING.txt file, so I'm not sure what the copyright should read.
Perhaps something like this would do:

Copyright (C) 2000-2008 The HarfBuzz Project and Contributors

Dynamic linking
Dynamic linking (.dll / .so) has always been a gray area with open source licenses. It does not allow the use of a GPL dynamic library from a non-GPL compatible application (But the LGPL allows it).
It's even grayer when dealing with run-time 'optional' linking , e.g. with dlopen/LoadLibrary.
Some people used to argue it could be used with GPL program, if the added functionality by the dlopen'ed library was not core functionality of the application (e.g. plugins). However I think the GPLv3 'fixed' that.

Now none of these aforementioned 3rd parties are LGPL or GPL (except for Freetype, which can either be GPL or their own FTL).
But since your application 'makes use' of those libraries, even though the software itself is not distributed with it (e.g. it's already installed on the user's system), I believe an acknowledgement is still required.

So to sum it up, you need to acknowledge:
Ecere(hehe :D), giflib, libjpeg, freetype, harfbuzz

Be nice and acknowledge as well:
zlib, libpng, tango, upx (if compressing)

FreeType/HarfBuzz is essential on Linux, as it's the only way Ecere will render text.
But on Windows, in GDI mode, Ecere uses the GDI system unless you use alpha blending on your windows.
So it is possible to release a static binary on Windows that has no acknowledgement requirement other than Ecere itself, by building it without HarfBuzz/FreeType, without giflib and without libjpeg.(And say you really didn't want to acknowledge anything at all, you could talk me into it :lol:)

Hope it's clear now!!

Jerome
D.Bane
Posts: 78
Joined: Thu Jul 29, 2010 2:51 pm

Re: License Agreement

Post by D.Bane »

Thank you Jerome.

I will now change the first post.

All the best,
D.Bane.
No army is to big, if the heart is beating strong.
There's no bad luck, it's just easier to blame someone else.
Post Reply