FAST C++ open-source contribution

Imported from previous forum

Hi,

Morgan Stanley has developed lightweight C++ implementation that supports most of the encoding/decoding features of FAST protocol. The implementation also supports loading FAST configuration from an XML file.

We would like to contribute this C++ code as an open-source contribution under the terms of public GPL license - so that any subsequent changes would have to be made in the source code form (not just binary extension). GPL is the requirement for a number of reasons, not only from our own code perspective but also because other opensource libraries (such as libxml) come under GPL and may be incompatible with license(s) that allow changes without releasing the actual source code.

Is it possible to make a contribution under GPL license (as I described above), or is the FPL license required for any such a contribution?

Thanks very much,
Dimitry

Hi Dimitry,

AFAIK libxml2 is licensed under the terms of the MIT license. As for GPL it does not the best choice for libraries. If I were you I would use LGPL.

Thanks,
Konstantin.

Hi, Konstantin,

thanks for the suggestion, LGPL sounds like a better choice.

Dimitry

Hi Dimitry,

AFAIK libxml2 is licensed under the terms of the MIT license. As
for GPL it does not the best choice for libraries. If I were you I
would use LGPL.

Thanks, Konstantin.

Dimitry,

I appreciate your willingness to help the community.

The license we used on the original contributions were based on the W3C license, which gives users a lot of freedom not to share.

The GPL restricts the way your code can be used, LGPL is somewhat less restrictive but still requires source code for the library (including any changes) to be offered whenever the library is re-distributed.

That said, I think you should use the license that you and your organisation are comfortable with.

Thank you for contributing,
Rolf

Hi,

Morgan Stanley has developed lightweight C++ implementation that
supports most of the encoding/decoding features of FAST protocol.
The implementation also supports loading FAST configuration from
an XML file.

We would like to contribute this C++ code as an open-source contribution
under the terms of public GPL license - so that any subsequent changes
would have to be made in the source code form (not just binary
extension). GPL is the requirement for a number of reasons, not only
from our own code perspective but also because other opensource
libraries (such as libxml) come under GPL and may be incompatible with
license(s) that allow changes without releasing the actual source code.

Is it possible to make a contribution under GPL license (as I described
above), or is the FPL license required for any such a contribution?

Thanks very much, Dimitry

Rolf, thanks for the response.

It sounds that the license is not an issue, and it sounds that LGPL might be the most appropriate. What would you recommend in terms of software distribution (assuming that we make tar containing source and necessary make instructions)?

Thanks again,
Dimitry

Dimitry,

I appreciate your willingness to help the community.

The license we used on the original contributions were based on the W3C
license, which gives users a lot of freedom not to share.

The GPL restricts the way your code can be used, LGPL is somewhat less
restrictive but still requires source code for the library (including
any changes) to be offered whenever the library is re-distributed.

That said, I think you should use the license that you and your
organisation are comfortable with.

Thank you for contributing, Rolf

Hi,

Morgan Stanley has developed lightweight C++ implementation that
supports most of the encoding/decoding features of FAST protocol.
The implementation also supports loading FAST configuration from an
XML file.

We would like to contribute this C++ code as an open-source
contribution under the terms of public GPL license - so that any
subsequent changes would have to be made in the source code form (not
just binary extension). GPL is the requirement for a number of
reasons, not only from our own code perspective but also because other
opensource libraries (such as libxml) come under GPL and may be
incompatible with license(s) that allow changes without releasing the
actual source code.

Is it possible to make a contribution under GPL license (as I
described above), or is the FPL license required for any such a
contribution?

Thanks very much, Dimitry

I’ll check with the webmaster and revert asap.
/Rolf

Rolf, thanks for the response.

It sounds that the license is not an issue, and it sounds that LGPL
might be the most appropriate. What would you recommend in terms of
software distribution (assuming that we make tar containing source and
necessary make instructions)?

Thanks again, Dimitry

Dimitry,

I appreciate your willingness to help the community.

The license we used on the original contributions were based on the
W3C license, which gives users a lot of freedom not to share.

The GPL restricts the way your code can be used, LGPL is somewhat less
restrictive but still requires source code for the library (including
any changes) to be offered whenever the library is re-distributed.

That said, I think you should use the license that you and your
organisation are comfortable with.

Thank you for contributing, Rolf

Hi,

Morgan Stanley has developed lightweight C++ implementation that
supports most of the encoding/decoding features of FAST protocol.
The implementation also supports loading FAST configuration from an
XML file.

We would like to contribute this C++ code as an open-source
contribution under the terms of public GPL license - so that any
subsequent changes would have to be made in the source code form
(not just binary extension). GPL is the requirement for a number of
reasons, not only from our own code perspective but also because
other opensource libraries (such as libxml) come under GPL and may
be incompatible with license(s) that allow changes without releasing
the actual source code.

Is it possible to make a contribution under GPL license (as I
described above), or is the FPL license required for any such a
contribution?

Thanks very much, Dimitry

Dimitry, a great book on the subject is “Producing Open Source Software” by Karl Fogel.

At first this might seem like overkill for what you’re looking to do, but the book (available online under ‘open copyright’) does an excellent job of discussing the operation of an open source project.

The book has a very useful section on choosing version control & bug tracking systems.

~sean

Rolf, thanks for the response.

It sounds that the license is not an issue, and it sounds that LGPL
might be the most appropriate. What would you recommend in terms of
software distribution (assuming that we make tar containing source and
necessary make instructions)?

Thanks again, Dimitry

Sean,

thanks for the info, I will look at it.

Dimitry

Dimitry, a great book on the subject is “Producing Open Source Software”
by Karl Fogel.

At first this might seem like overkill for what you’re looking to do,
but the book (available online under ‘open copyright’) does an excellent
job of discussing the operation of an open source project.

The book has a very useful section on choosing version control & bug
tracking systems.

~sean

Rolf, thanks for the response.

It sounds that the license is not an issue, and it sounds that LGPL
might be the most appropriate. What would you recommend in terms of
software distribution (assuming that we make tar containing source and
necessary make instructions)?

Thanks again, Dimitry

If FPL cannot host it, you can easily host on Google Code (Google Code Archive - Long-term storage for Google Code Project Hosting.) or SourceForge.

Sigurd

Dimitry, a great book on the subject is “Producing Open Source Software”
by Karl Fogel.

At first this might seem like overkill for what you’re looking to do,
but the book (available online under ‘open copyright’) does an excellent
job of discussing the operation of an open source project.

The book has a very useful section on choosing version control & bug
tracking systems.

~sean

Rolf, thanks for the response.

It sounds that the license is not an issue, and it sounds that LGPL
might be the most appropriate. What would you recommend in terms of
software distribution (assuming that we make tar containing source and
necessary make instructions)?

Thanks again, Dimitry

I got some feedback off-line and it seems that LGPL and C++ libs may
be problematic. I suggest you check:

http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html

Best,
Rolf

Rolf, thanks for the response.

It sounds that the license is not an issue, and it sounds that LGPL
might be the most appropriate. What would you recommend in terms of
software distribution (assuming that we make tar containing source
and necessary make instructions)?

Thanks again, Dimitry

Dimitry,

I appreciate your willingness to help the community.

The license we used on the original contributions were based on
the W3C license, which gives users a lot of freedom not to share.

The GPL restricts the way your code can be used, LGPL is somewhat
less restrictive but still requires source code for the library
(including any changes) to be offered whenever the library is re-
distributed.

That said, I think you should use the license that you and your
organisation are comfortable with.

Thank you for contributing, Rolf

libstdc++ is licensed under the terms of GPLv2 license with “runtime exception” that is explained in FAQ form:
Q: So any program which uses libstdc++ falls under the GPL?
A: No. The special exception permits use of the library in proprietary applications.

But we are talking about LGPL license: GNU Lesser General Public License v3.0 - GNU Project - Free Software Foundation

The main difference between GPL and LGPL that LGPL-ed library can be used by non-(L)GPL program. This program can be distributed under any chosen license.

Wikipedia provides a good introduction to LGPL: GNU Lesser General Public License - Wikipedia

-Konstantin

I got some feedback off-line and it seems that LGPL and C++ libs may be
problematic. I suggest you check:

http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html

Best, Rolf

Konstantin,

AFAICT Q&A #2 says “… rendering the LGPL equivalent to the GPL”
in the case of a C++ library with inline functions and templates.

Q: How is that different from the GNU {Lesser,Library} GPL?
A: The LGPL requires that users be able to replace the LGPL code
with a modified version; this is trivial if the library in
question is a C shared library. But there’s no way to make that
work with C++, where much of the library consists of inline
functions and templates, which are expanded inside the code that
uses the library. So to allow people to replace the library code,
someone using the library would have to distribute their own
source, rendering the LGPL equivalent to the GPL.

Am I missing something here?

/Rolf

libstdc++ is licensed under the terms of GPLv2 license with
“runtime exception” that is explained in FAQ form:
Q: So any program which uses libstdc++ falls under the GPL?
R: No. The special exception permits use of the library in
proprietary applications.

But we are talking about LGPL license:
GNU Lesser General Public License v3.0 - GNU Project - Free Software Foundation

The main difference between GPL and LGPL that LGPL-ed library
can be used by non-(L)GPL program. This program can be
distributed under any chosen license.

Wikipedia provides a good introduction to LGPL:
GNU Lesser General Public License - Wikipedia

-Konstantin

I got some feedback off-line and it seems that LGPL and C++
libs may be problematic. I suggest you check:

http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html

Best, Rolf

Rolf, you are right. Sorry, I did not take it into account.

If the library uses templates it is impossible to replace the LGPL code with modified version without rebuilding. The only way is to add the same “exception”: use the library but make public all changes you did.

BTW, LGPLv3 contains the following section which I don’t understand properly:

"3. Object Code Incorporating Material from Library Header Files.

The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.

b) Accompany the object code with a copy of the GNU GPL and this
license document."

So it possible to use LGPL for C++ library but it is almost impossible to measure “ten or fewer lines” and “small macros”.

-Konstantin.

Konstantin,

AFAICT Q&A #2 says “… rendering the LGPL equivalent to the GPL” in the
case of a C++ library with inline functions and templates.

Q: How is that different from the GNU {Lesser,Library} GPL?
R: The LGPL requires that users be able to replace the LGPL code with a
modified version; this is trivial if the library in question is a C
shared library. But there’s no way to make that work with C++, where
much of the library consists of inline functions and templates,
which are expanded inside the code that uses the library. So to
allow people to replace the library code, someone using the library
would have to distribute their own source, rendering the LGPL
equivalent to the GPL.

Am I missing something here?

/Rolf

libstdc++ is licensed under the terms of GPLv2 license with “runtime
exception” that is explained in FAQ form:
Q: So any program which uses libstdc++ falls under the GPL?
R: No. The special exception permits use of the library in proprietary
applications.

But we are talking about LGPL license:
GNU Lesser General Public License v3.0 - GNU Project - Free Software Foundation

The main difference between GPL and LGPL that LGPL-ed library can be
used by non-(L)GPL program. This program can be distributed under any
chosen license.

Wikipedia provides a good introduction to LGPL:
GNU Lesser General Public License - Wikipedia

-Konstantin

I got some feedback off-line and it seems that LGPL and C++ libs may
be problematic. I suggest you check:

http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html

Best, Rolf

Hi Dimitry, Konstantin, everyone,

I would recommend dual licensing the software under the GPL and any other OSI-approved license that you are comfortable with and that is reasonably non-viral. For the latter you may wish to consider: MPL 1.1, APL 2, or perhaps simplest of all - BSD.

Dual licensing means that users can choose under which of the two licenses they wish to use the code.

  • For people who must use it under the GPL in order to achieve compatibility with other software, this choice is available.
  • For people who do not wish to be restricted by the GPL, the other license is also available.

Also, if I were you, I would not use the LGPL unless you really have to, since this can lead to confusion over what the L means.

Best wishes

alexis richardson

CohesiveFT

Rolf, you are right. Sorry, I did not take it into account.

If the library uses templates it is impossible to replace the LGPL code
with modified version without rebuilding. The only way is to add the
same “exception”: use the library but make public all changes you did.

BTW, LGPLv3 contains the following section which I don’t
understand properly:

"3. Object Code Incorporating Material from Library Header Files.

The object code form of an Application may incorporate material from a
header file that is part of the Library. You may convey such object code
under terms of your choice, provided that, if the incorporated material
is not limited to numerical parameters, data structure layouts and
accessors, or small macros, inline functions and templates (ten or fewer
lines in length), you do both of the following:

a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are covered
by this License.

b) Accompany the object code with a copy of the GNU GPL and this
license document."

So it possible to use LGPL for C++ library but it is almost impossible
to measure “ten or fewer lines” and “small macros”.

-Konstantin.

Konstantin,

AFAICT Q&A #2 says “… rendering the LGPL equivalent to the GPL” in
the case of a C++ library with inline functions and templates.

Q: How is that different from the GNU {Lesser,Library} GPL?
R: The LGPL requires that users be able to replace the LGPL code with
a modified version; this is trivial if the library in question is a
C shared library. But there’s no way to make that work with C++,
where much of the library consists of inline functions and
templates, which are expanded inside the code that uses the
library. So to allow people to replace the library code, someone
using the library would have to distribute their own source,
rendering the LGPL equivalent to the GPL.

Am I missing something here?

/Rolf

libstdc++ is licensed under the terms of GPLv2 license with “runtime
exception” that is explained in FAQ form:
Q: So any program which uses libstdc++ falls under the GPL?
R: No. The special exception permits use of the library in
proprietary applications.

But we are talking about LGPL license:
GNU Lesser General Public License v3.0 - GNU Project - Free Software Foundation

The main difference between GPL and LGPL that LGPL-ed library can be
used by non-(L)GPL program. This program can be distributed under
any chosen license.

Wikipedia provides a good introduction to LGPL:
GNU Lesser General Public License - Wikipedia

-Konstantin

I got some feedback off-line and it seems that LGPL and C++ libs
may be problematic. I suggest you check:

http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html

Best, Rolf

IMHO, GPL with runtime exception is “reasonably non-viral”.
/Rolf

Hi Dimitry, Konstantin, everyone,

I would recommend dual licensing the software under the GPL and any
other OSI-approved license that you are comfortable with and that is
reasonably non-viral. For the latter you may wish to consider: MPL
1.1, APL 2, or perhaps simplest of all - BSD.

Dual licensing means that users can choose under which of the two
licenses they wish to use the code.

  • For people who must use it under the GPL in order to achieve
    compatibility with other software, this choice is available.
  • For people who do not wish to be restricted by the GPL, the
    other license is also available.

Also, if I were you, I would not use the LGPL unless you really
have to, since this can lead to confusion over what the L means.

Best wishes

alexis richardson

CohesiveFT

[ original email was from Rodrick Brown - rbrown@ballistasec.com ]
> IMHO, GPL with runtime exception is “reasonably non-viral”. /Rolf

Hi Dimitry, Konstantin, everyone,

I would recommend dual licensing the software under the GPL and any
other OSI-approved license that you are comfortable with and that is
reasonably non-viral. For the latter you may wish to consider: MPL
1.1, APL 2, or perhaps simplest of all - BSD.

Dual licensing means that users can choose under which of the two
licenses they wish to use the code.

  • For people who must use it under the GPL in order to achieve
    compatibility with other software, this choice is available.
  • For people who do not wish to be restricted by the GPL, the other
    license is also available.

Also, if I were you, I would not use the LGPL unless you really have
to, since this can lead to confusion over what the L means.

Best wishes

alexis richardson

CohesiveFT

Dimitry I strongly suggest you look at the BSD or Apache style licenses.

The BSD License allows proprietary commercial use, and for the software released under the license to be incorporated into proprietary commercial products. Works based on the material may even be released under a proprietary license (but still must maintain the license requirements). Some notable examples of this are the use of BSD networking code in Microsoft products,[2] and the use of numerous FreeBSD components in Mac OS X.[3] It is possible for something to be distributed with the BSD License and some other license to apply as well. This was in fact the case with very early versions of BSD itself, which included proprietary material from AT&T.

If you go back and read what Dimitry wrote in his first post:

“We would like to contribute this C++ code as an open-source
contribution under the terms of public GPL license - so that
any subsequent changes would have to be made in the source
code form (not just binary extension).”

Quid pro quo,
/Rolf

Dimitry I strongly suggest you look at the BSD or Apache style
licenses.

The BSD License allows proprietary commercial use, and for the
software released under the license to be incorporated into
proprietary commercial products. Works based on the material may
even be released under a proprietary license (but still must
maintain the license requirements). Some notable examples of
this are the use of BSD networking code in Microsoft products,
[2] and the use of numerous FreeBSD components in Mac OS X.[3]
It is possible for something to be distributed with the BSD
License and some other license to apply as well. This was in
fact the case with very early versions of BSD itself, which
included proprietary material from AT&T.

Everyone, thanks very much for detailed feedback. I see that my post generated quite a discussion…

Rolf is absolutely correct, though - whatever license we will choose we would like to preserve that requirement that the future contributions are available in the source code form. So, it looks that the only choice is between GPL and LGPL although I admit that will have to do more research.

Dimitry

If you go back and read what Dimitry wrote in his first post:

“We would like to contribute this C++ code as an open-source
contribution under the terms of public GPL license - so that any
subsequent changes would have to be made in the source code form (not
just binary extension).”

Quid pro quo, /Rolf

Dimitry I strongly suggest you look at the BSD or Apache style
licenses.

The BSD License allows proprietary commercial use, and for the
software released under the license to be incorporated into
proprietary commercial products. Works based on the material may even
be released under a proprietary license (but still must maintain the
license requirements). Some notable examples of this are the use of
BSD networking code in Microsoft products,
[2] and the use of numerous FreeBSD components in Mac OS X.[3] It is
possible for something to be distributed with the BSD License and
some other license to apply as well. This was in fact the case
with very early versions of BSD itself, which included proprietary
material from AT&T.

Hi Dimitry,

I think it is a great initiative, but I would also point out that if you go the path of GPL (or even LGPL) you will exclude many commercial organizations from contributing at all, as the GPL license is unacceptable for many commercial projects (oh, the irony).

Thus, this becomes somewhat counterproductive, as organizations that might be interested in contributing to the project would rule out the use of your software solely based on the license agreement and would thus be excluded.

I would try to find an OSI approved license that requires foldback but does not require open sourcing of the whole application (C++ templates or not)… Otherwise perhaps you should roll your own based on one of the really free licenses (like BSD), but just add a clause requiring foldback of changes, then it would be useful for a much larger audience…

Cheers,

Joakim

Everyone, thanks very much for detailed feedback. I see that my post
generated quite a discussion…

Rolf is absolutely correct, though - whatever license we will choose we
would like to preserve that requirement that the future contributions
are available in the source code form. So, it looks that the only
choice is between GPL and LGPL although I admit that will have to do
more research.

Dimitry