Programación Grafica

Daniel Serpell daniel_serpell en yahoo.com
Jue Abr 28 15:06:23 CLT 2005


Hola!

El Thu, Apr 28, 2005 at 05:00:18PM -0000, Carlos Manuel Duclos Vergara escribio:
> Holas,
> 
[... codigo que deriva una clase ...]
> 
> el codigo de BOTON1_EXTENDIDO debe ser redistribuido bajo LGPL, por lo que
> si esta dentro de tu software te expones a tener que liberar el codigo
> fuente. Si lo defines en un layer intermedio solo tendras que liberar
> el codigo fuente de ese layer bajo licencia LGPL y el resto del software
> queda protegido.

Ahe, ahí está el asunto. ¿donde dice la LGPL que por escribir ese pedazo
de código estas haciendo un "trabajo derivado" (usando las palabras
dentro de la LGPL)?

Voy ha hacer dos distinciones aquí:

* Uso de Gtk+ desde C.

Este caso es _idéntico_ al caso de la libc. Puedes derivar un widget,
pero eso es sólo usar la API de Gtk+, no requiere modificar nada de
la biblioteca original. El pasar punteros a funciones como "callbacks"
no entra en mis libros como "modificación".

* Uso de Gtkmm, desde C++.

Aquí hay opiniones encontradas. Pero hay que tener en claro que son
sólo eso: _opiniones_. Existe una creencia, a mi juicio completamente
errada, de que por derivar una clase estás haciendo un "trabajo
derivado" en el sentido de la GPL.

Más o menos cuatro veces al año aparece algún troll en las listas de
gtkmm alegando que si usas las clases de Gtkmm desde tu código tienes
que liberar el código como GPL ó LGPL.

Muchos discuten, exépto los desarrolladores. Para más remate, el 90%
del código de Gtkmm es generado de manera automática desde los
encabezados de Gtk+, por lo que ni siquiera los desarrolladores han
tenido que ver mucho con las clases e interfaces.

> 
> >Adem?s, si ese es el caso, _todo_ programa en linux tendr?a que ser
> >c?digo abierto (recuerda, la libc es LGPL).
> 
> Nop, estas en un error. No estoy diciendo que por usar codigo LGPL tengas
> que liberar tu codigo, sino que por modificar codigo LGPL al incluirlo en
> tu programa debes liberar el codigo.

¿Y acaso en tu ejemplo se modificó código LGPL? ¿cúal, que _no_ lo veo?

Perdón, pero eso es FUD. Nada más ni nada menos.

> La glibc por lo general es utilizada mediante las interfaces exportadas
> y ningun programa que conozca toma un metodo de la glibc para extenderlo
> directamente. Todos utilizan los metodos de la glibc sin mas.
> Esa es la diferencia, si tu escribes software que utilice por ejemplo
> strcpy() para hacer algo no tienes ningun problema, distinto es si tu a
> partir de strcpy derivas una nueva funcion strcpy2, la que si debe ser 
> redistribuida bajo licencia LGPL!!!!! (ver caso mencionada anteriormente)

char *strcpy2(char *c1, char *c2)
{
   if( !c1 )
      return 0;
   return strcpy(c1,c2);
}

Acabo de escribir una función "strcpy2" que deriva de strcpy, cambiando
ligeramente la funcionalidad. ¿es un trabajo derivado de la biblioteca?

        Daniel.



Más información sobre la lista de distribución Linux