Re: [Mono-dev] Using Mono Assemblies under terms of LGPL

2010-03-03 Thread Jacques Beaurain
Hi,

Thanks for the response but this does not solve my issue...

On Tue, Mar 2, 2010 at 4:12 PM, Jonathan Pryor jonpr...@vt.edu wrote:
 On Tue, 2010-03-02 at 12:21 -0500, Jacques Beaurain wrote:
 ...  The issue that we face is
 that this assembly is not signed and we need to be able to place the
 assembly in the GAC of Microsoft Windows systems. What is the
 recommended way to handle this situation?

 In particular we are interested in the GNU.Gettext.dll assembly.

 Er, what?  I don't see this assembly in my GAC (both the distro-provided
 and my trunk installation), nor do I see a GNU.Gettext.dll assembly in
 my source tree.  Where are you seeing this assembly?


It is in the lib tree of the current Mono release build. My guess is
that the build process builds it by pulling in the gettext sources.

 To answer the original question, the answer is: don't.  For the love of
 all that is good and holy, don't strong-name an assembly that isn't
 strong-named and install it into the GAC.

 Strong-naming is an indication that the API won't change in an
 incompatible manner, possibly ever.  Upstream likely won't even know you
 did this, will eventually break API, and cause all manner of pain.

 (Case in point: Mono has two separate copies of SharpZipLib because they
 changed their API in an incompatible manner.  I don't know who
 strong-named it -- i.e. was it it Mono being bad, or were they screwing
 things up -- but it's not a good situation to be in.)

 YOU have sources and a compiler toolchain.  If you need a strong-named
 assembly, fold it into your own assemblies and strong name *those*, so
 that responsibility for maintaining API compatibility is clear.

This is exactly the issue, the assemblies that need to use it is
strong named already and can only reference strong named assemblies. I
would love to fold the functionality into  my own assemblies but are
not allowed to do so under the terms of the LGPL. Anyway my solution
is gravitating to not using this assembly at all and using interop to
the unmanaged gettext libraries instead which should allow us to abide
by the LGPL terms.


  - Jon




Jacques
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Using Mono Assemblies under terms of LGPL

2010-03-03 Thread Robert Jordan
Hi,

On 03.03.2010 11:44, Jacques Beaurain wrote:
 YOU have sources and a compiler toolchain.  If you need a strong-named
 assembly, fold it into your own assemblies and strong name *those*, so
 that responsibility for maintaining API compatibility is clear.

 This is exactly the issue, the assemblies that need to use it is
 strong named already and can only reference strong named assemblies. I
 would love to fold the functionality into  my own assemblies but are
 not allowed to do so under the terms of the LGPL. Anyway my solution
 is gravitating to not using this assembly at all and using interop to
 the unmanaged gettext libraries instead which should allow us to abide
 by the LGPL terms.

As Jon already stated: the library seems not to be part of Mono.
Where did you find it?

Anyway, if the library is LGPL and you need to strongname it
then you'll have to publish the public key.

If you don't publish the key, the same strongname cannot be
rebuilt and the library cannot be replaced.
This basically means that you'd violate the LGPL which enforces
that the library can be replaced at any time and by anyone.

Robert

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Using Mono Assemblies under terms of LGPL

2010-03-03 Thread Rafael Teixeira
For starters some background info:

http://www.mono-project.com/I18nGettext  -- Show how to use GetText# which
exposes an Gnu.GetText namespace and thus presumably should package such a
Gnu.GetText.dll as discussed in this thread.

Perusing the released sources of gettext (gettext-0.17.tar.gz), I've found
that GNU.Gettext.dll is built from it (excerpt from
gettext-0.17\gettext-runtime\intl-csharp\Makefile.am):

GNU.Gettext.dll: intl.cs
$(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ $(srcdir)/intl.cs

So it is not part of Mono, and probably it is just some byproduct of some
native packages dependencies, as you guessed.

More relevant to this discussion is that the license from intl.cs is GPL
2.0, without mention of a linking exclusion clause

 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Library General Public License as published
 * by the Free Software Foundation; either version 2, or (at your option)
 * any later version.

So your app should be GPL-licensed to comply, which is an even worse
situation for you.
I recommend you to implement your own catalog reading code, reading from the
documentation (sic) of the .po format, and then if you could open source it
under a more sensible license such as MIT/BSD or at least MS-PL it would be
very nice.

Using Mono.Posix will leave you with a native lib dependency with a
GPL+Linking exclusion license, which is probably not that much desirable,
but at least Mono.Posix you can either sign it yourself or just copy-paste
the small wrapper class (Mono.Unix.Catalog) in your own lib as it is MIT/BSD
licensed.

Hope it helps,

Rafael Monoman Teixeira
---
To be creative means to be in love with life. You can be creative only if
you love life enough that you want to enhance its beauty, you want to bring
a little more music to it, a little more poetry to it, a little more dance
to it.
Osho


On Wed, Mar 3, 2010 at 7:44 AM, Jacques Beaurain jacques.beaur...@gmail.com
 wrote:

 Hi,

 Thanks for the response but this does not solve my issue...

 On Tue, Mar 2, 2010 at 4:12 PM, Jonathan Pryor jonpr...@vt.edu wrote:
  On Tue, 2010-03-02 at 12:21 -0500, Jacques Beaurain wrote:
  ...  The issue that we face is
  that this assembly is not signed and we need to be able to place the
  assembly in the GAC of Microsoft Windows systems. What is the
  recommended way to handle this situation?
 
  In particular we are interested in the GNU.Gettext.dll assembly.
 
  Er, what?  I don't see this assembly in my GAC (both the distro-provided
  and my trunk installation), nor do I see a GNU.Gettext.dll assembly in
  my source tree.  Where are you seeing this assembly?
 

 It is in the lib tree of the current Mono release build. My guess is
 that the build process builds it by pulling in the gettext sources.

  To answer the original question, the answer is: don't.  For the love of
  all that is good and holy, don't strong-name an assembly that isn't
  strong-named and install it into the GAC.
 
  Strong-naming is an indication that the API won't change in an
  incompatible manner, possibly ever.  Upstream likely won't even know you
  did this, will eventually break API, and cause all manner of pain.
 
  (Case in point: Mono has two separate copies of SharpZipLib because they
  changed their API in an incompatible manner.  I don't know who
  strong-named it -- i.e. was it it Mono being bad, or were they screwing
  things up -- but it's not a good situation to be in.)
 
  YOU have sources and a compiler toolchain.  If you need a strong-named
  assembly, fold it into your own assemblies and strong name *those*, so
  that responsibility for maintaining API compatibility is clear.

 This is exactly the issue, the assemblies that need to use it is
 strong named already and can only reference strong named assemblies. I
 would love to fold the functionality into  my own assemblies but are
 not allowed to do so under the terms of the LGPL. Anyway my solution
 is gravitating to not using this assembly at all and using interop to
 the unmanaged gettext libraries instead which should allow us to abide
 by the LGPL terms.

 
   - Jon
 
 
 

 Jacques
 ___
 Mono-devel-list mailing list
 Mono-devel-list@lists.ximian.com
 http://lists.ximian.com/mailman/listinfo/mono-devel-list

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Using Mono Assemblies under terms of LGPL

2010-03-03 Thread Jacques Beaurain
Hi,

Thanks for all the replies. Signing the assembly and making the
private/public key available was one option we were considering, but I
think the final and easiest solution is writing our own assembly with
native interop to libintl.

Interestingly the gettext documentation does not state the license for
the GNU.Gettext.dll assembly
(http://www.gnu.org/software/gettext/manual/gettext.html#Licenses) and
Rafael pointed out that the actual source code was marked GPL. I am
questioning whether this was intentional since that assembly pretty
much performs the same function as libintl (which is why I assumed it
will also be LGPL).

Cheers,

Jacques
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Using Mono Assemblies under terms of LGPL

2010-03-03 Thread Jonathan Pryor
On Wed, 2010-03-03 at 10:16 -0500, Jacques Beaurain wrote:
 I think the final and easiest solution is writing our own assembly with
 native interop to libintl.

We already have such a thing: Mono.Unix.Catalog, in Mono.Posix.dll,
which is MIT/X11 licensed (no LGPL worries) and is already strong-named
(and thus can be installed into the GAC):

http://go-mono.com/docs/index.aspx?link=T:Mono.Unix.Catalog

You'll still need to place INTL.DLL into %PATH% (or some other location
so that LoadLibrary() will find it); Catalog just wraps INTL.DLL.

 - Jon


___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Using Mono Assemblies under terms of LGPL

2010-03-02 Thread Jonathan Pryor
On Tue, 2010-03-02 at 12:21 -0500, Jacques Beaurain wrote:
 ...  The issue that we face is
 that this assembly is not signed and we need to be able to place the
 assembly in the GAC of Microsoft Windows systems. What is the
 recommended way to handle this situation?
 
 In particular we are interested in the GNU.Gettext.dll assembly.

Er, what?  I don't see this assembly in my GAC (both the distro-provided
and my trunk installation), nor do I see a GNU.Gettext.dll assembly in
my source tree.  Where are you seeing this assembly?

To answer the original question, the answer is: don't.  For the love of
all that is good and holy, don't strong-name an assembly that isn't
strong-named and install it into the GAC.

Strong-naming is an indication that the API won't change in an
incompatible manner, possibly ever.  Upstream likely won't even know you
did this, will eventually break API, and cause all manner of pain.

(Case in point: Mono has two separate copies of SharpZipLib because they
changed their API in an incompatible manner.  I don't know who
strong-named it -- i.e. was it it Mono being bad, or were they screwing
things up -- but it's not a good situation to be in.)

YOU have sources and a compiler toolchain.  If you need a strong-named
assembly, fold it into your own assemblies and strong name *those*, so
that responsibility for maintaining API compatibility is clear.

 - Jon


___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list