OCC license

Hi All,

Can I link OCC with my app statically, without opening the source of my app? I would love to contribute to OCCs development, however, I don't wan't to open my applications source code.

Istvan

Daniel Brunier-Coulin's picture

For not opening the source code of your application, you must use OCCT without modifying the libraries, that is, dynamically link your application to OCCT through the provided shared library (.so or .dll). Indeed, linking statically requires to provide either your source code or your linkable object files.

Daniel

Roman Lygin's picture

Hi Daniel,

Sorry - this is incorrect statement. Nothing in the current public license requires either of these conditions - using unmodified version or dynamic linking.

There are currently no conditions in the license that would trigger disclosing the source code of the user application.

"For greater certainty, it is expressly understood that You may freely create Derivative Programs (without any obligation to publish such Derivative Program) and distribute same as a single product. In such case, You must ensure that all the requirements of this License are fulfilled for the Software or any portion thereof."

Thank you,
Roman

Daniel Brunier-Coulin's picture

You are absolutely right, thank you for correcting me, Roman.

Indeed - I'm probably victim of a Freudian slip - I've described the requirement of LGPL. This is where our license differs from LGPL. So, Istvan, the answer to your question is yes: statically linking your application to OCCT does not require to open your source code.

Daniel

Roman Lygin's picture

Thanks for the confirmation, Daniel.

Static linking indeed, by default, triggers the derivative work to become LGPL'ed. There is also vague area regarding templates and inline functions in LGPL. That is why some libraries (like Qt) come with explicit extensions clarifying that such cases do not trigger LGPL.

As for modifications, LGPL requires that modifications must be made available under the LGPL license on a free basis. The derivative work, if linked dynamically, still does not need to be LGPL'ed. That is, the library remains LGPLed, while the client's code - not necessarily.

Roman

István Csanády's picture

Great, thanks, then soon I will be an active contributor to OpenCASCADE. :)