LLVM/Clang. U Mad GCC?

llvm-logo

Tenía que escribir un post sobre esta controversia publicada en LWN. Y es que el compilador LLVM/Clang está empezando a preocupar en las lista de correo de GNU.

Erase una vez un compilador llamado GCC que con sus más de 25 años de existencia se le sigue teniendo un gran respeto por su licencia libre y copyleft, además de ser el compilador usado por el kernel linux y hasta hace poco por FreeBSD. El que quería aprender a desarrollar en C o C++, seguro que usaba GCC independientemente de la arquitectura de su máquina. Sin embargo GCC padecía de cierto hermetismo, en parte por la filosofía de quienes lo crearon y en parte por su desarrollo estilo catedral, donde se ejercía un fuerte control sobre que iba en GCC y que no (ahora ya no tanto pero sigue habiéndolo), lo cual abrió el camino para la construccion de front-ends y otras características que a la larga GCC acabó adoptando. Para saber más de la corta historia de EGCS, les dejo este link.

Mientras, en la Universidad de Illinois en Urbana-Champaign circa 2002, un proyecto de investigación desemboca en la creación de un compilador creado de una forma modular tal que se podían reemplazar fácilmente sus elementos individuales como los front-ends, los generadores de códigos y los optimizadores. Lo llamaron LLVM porque al principio era una máquina virtual de bajo nivel pero acabó siendo más que eso. Y lo licenciaron con su propia licencia, la cual era similar a la BSD (libre, no copyleft, compatible con la GPL). Años después, Apple se interesó por LLVM y lo adoptó para sus sistemas operativos iOS y OS X, además de construir (y liberar bajo la misma licencia libre que LLVM) su propio front-end llamado Clang, para C y Objetive C. La pega es la posibilidad de incluir LLVM/Clang en programas privativos, tal es el caso del compilador CUDA de NVIDIA y del IDE XCode de Apple.

Pero un día, hace unas cuantas semanas en la lista de correos de emacs, en medio de una discusión sobre un modo de autocompletar diseñado para Clang, Dimitry Gutov dice «Hace tiempo me contaron que Richard Stallman odiaba tanto a Clang que se oponía a incluir código que lo utilice en emacs». Esto luego derivó en otra discusión sobre clang y el software libre en donde el propio Richard aclara: «Nuestra política es no aceptar cambios a ningún paquete de GNU que pueda funcionar con Clang pero no con GCC. Emacs no animará a la gente a alejarse de GCC. Cuando se tenga la oportunidad, animaremos a usar GCC por encima de Clang.»

Poco tiempo despues aparece Eric Raymond (famoso por crear La Catedral y el Bazar, junto con la definición de Open Source) quien, mitad cantando la justa, mitad trolleando, va y dice que LLVM/Clang fue una respuesta a la resistencia del proyecto GCC a ser más interoperable, además de que Clang supera a GCC en varias medidas técnicas. Según él (y mostrando un video de una conferencia de Chandler Carruth), los desarrolladores de Clang le preguntaron a Stallman si había alguna razón de por qué los front ends de GCC no podían convertirse en librerías dinámicas que puedan ser enlazadas por cualquier programa que quiera parsear un código fuente. Stallman les respondió que un objetivo de GCC era evitar que los programas privativos usaran cualquiera de sus partes, así que deliberadamente evitaron varias cosas que posiblemente habrían facilitado dicho uso……..lo cual consideraron una respuesta nada útil. Ellos querían crear IDEs y otras herramientas que compartan el código del compilador y GCC no les dejaba, así que a crear Clang y mandar a GCC a /dev/null. Los desarrolladores de GCC le saltaron encima puteándole por no estar del todo informado (con lo de que Clang supera a GCC en varias medidas técnicas). En medio de las puteadas aparece Stallman diciendo que LLVM es un terrible retroceso, no por cuestiones técnicas sino sólamente por su licencia no copyleft lo cual beneficia a Apple.

Luego el artículo de LWN dedica largos parrafos sobre la modularidad de GCC y las medidas que incluyeron adrede para dificultar el uso de su representación interna por programas privativos, sobre la GCC Runtime Library Exception la cual resuelve la cuestion de si GCC debería compilar código propietario. Yo quisiera agregar también el caso de FreeBSD (cuya versión 10 liberada hace poco, reemplaza a GCC por LLVM/Clang como compilador principal). La última versión que usaban de GCC era la 4.2.1 (la última con licencia GPLv2) y ni locos iban a actualizarlo a una version con GPLv3 (simplemente quieren un BSD sin nada de GPL), así que LLVM/Clang les viene como anillo al dedo.

En fin, otra batalla de la eterna guerra GPL vs BSD.


38 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   pandev92 dijo

    No interesante, dejemos que los desarolladores se maten entre ellos.

    1.    eliotime3000 dijo

      Y así, tenemos a un trabajador inconforme más a trabajar a Microsoft y a Apple.

    2.    marcos dijo

      estas en lo correcto, yo apoyo a que el software sea siempre libre para que CUALQUIER HUMANO pueda leerlo (esa es la unica razon por la que apoyo y uso linux), pero al final los programadores tienen la ultima palabra.

  2.   F3niX dijo

    Buen articulo, siempre me gustan los articulos de diazepan, salen del común.

  3.   Germán dijo

    La verdad es que es un pensamiento muy estúpido departe de los de gcc, es más en su momento el creador de LLVM les ofreció el código a los de gcc y ellos lo rechazaron, CLang esta pensado para que los IDEs puedan verificar el código en tiempo real eso no solo beneficia a a las apps privadas también a los de código abierto como KDevelop o QtCreator aparte de editores avanzados como Vim, Kate, emacs, etc. supongo que va a terminar pasando algo parecido con egcs y lo absorberán bajo licencia gpl en cuanto linux se pueda compilar con este como paso con egcs

    1.    eliotime3000 dijo

      Si no pueden mejorar el EGCS y/o hacerlo el mejor reemplazo de CLang, me largo a CLang y LLVM.

    2.    Xlash dijo

      ¿Estúpido? A mí no me lo parece. El hecho de que GCC no pueda ser usado para crear software privativo es una forma de priorizar el desarrollo del software libre y no aprovecharse de éste para el desarrollo del software privativo. Es una manera de defender el software libre por lo tanto debería ser apoyado. El señor Stallman tiene toda la razón, es un paso hacia atrás. Además, empresas como Apple, como bien se menciona en el artículo, se beneficiará de LLVM/Clang sin aportar absolutamente a la comunidad y sin dar crédito alguno al proyecto.

      Salud gente!

      1.    Germán dijo

        Tanto GCC como LLVM/CLANG se puede compilar software privativo, lo que no se puede es modificar GCC y no dar a conocer esas modificaciones. LLVM/CLANG se puede re licenciar como gpl, la mayor diferencia entre estos es que para LLVM/CLANG tienen que usas C++ y los de GCC no lo querían ver ni pintado hasta hace poco. Desde mi punto de vista en ves de reescribir GCC a C++ como están haciendo ahora deberían haber portado las arquitecturas que GCC soporta y LLVM/CLANG no y los lenguajes a este ultimo y tener un código mas limpio y mantener su propia rama de desarollo

    3.    artus dijo

      Creo que tu opinión es infundada, por encima de las cuestiones técnicas esta el software libre. Eso es lo que más preocupa al Sr. Stallman. Por lo que veo lo mejor para ti es la parte técnica y estas en tu derecho, pero cuando no tengas donde elegir porque una empresa se apoderado de tu tecnología lo pensarás dos veces.
      Por otro lado con GCC puedes verificicar el código en tiempo real, como vuelvo a repetir tu opinión es infundada.

      1.    Germán dijo

        1-Si GCC hace un fork de LLVM/CLANG y compañia y lo re licencia como GPL todo el código que incluyan en dicho fork va a estar bajo GPL y los de LLVM van a tener que pedir permiso para re-licenciarlo e incluirlo en su repo. Te comunico que la licencia tipo MIT(XORG, WAYLAND, …) o BSD(FreeBSD, …) son tan permisivas como como la de LLVM
        2 – Con GCC no se puede implementa un auto completado de código ni verificador de código en tiempo real mediante una librería que este provea a diferencia a CLANG
        3 – LLVM es una solución superior a GCC no solo técnica sino que también en eficiencia el binomio de LLVM/CLANG tarda la mitad en compilar

  4.   Ñandekuera dijo

    Viva GNU y la GPL!

    1.    eliotime3000 dijo

      A ver si logran hacer su propio CLang con alcohol, juegos de azar y mujerzuelas.

      1.    Ñandekuera dijo

        eh?

    2.    eliotime3000 dijo

      No, Richard. Que SELinux sea obra de la NSA no quiere decir que cualquier otra herramienta que no tenga GPL como licencia (como la LLVM/CLang) vengan de la misma matriz.

      En serio, pensé que ésto tenía un motivo completamente racional, pero veo que los de la FSF son más conservadores que Satoru Iwata o cualquier integrante de la MAFIAA.

      1.    Staff dijo

        Se ve, que no leíste la lista de correos y te quedaste con lo que el articulo dice entre lineas.
        Argumentos racionales fueron dados, incluso opciones técnicas, pero en fin, es muy común leer el titulo y lanzarse directo al los comentarios.

  5.   pobreotaku dijo

    Ñuhhhh GCC+Emacs. Si quieres sobrevivir toma mi mano (stallman)

  6.   elav dijo

    Me van a disculpar los puritanos pero tengo que decirlo: Stallman nunca me ha simpatizado, y por lo visto así seguirá siendo por el resto de mis días.

    No se puede ser tan cerrado de mente. Parece un fanático, un loco, y si, por mucho respeto que se merezca por sus logros y lo que defiende, no me simpatiza.

    1.    Zironid dijo

      Estoy de acuerdo. En un principio me agradaba mucho, pero ahora me parece demasiado extremista…

      1.    Canales dijo

        Extremista… loco… fanático… sí, depende de cómo lo mires. Para mí el señor Richard Stallman es una persona con una conciencia social enorme. El sentido de su vida ha sido y es mejorar la sociedad, no el software. Ahí está la diferencia entre el software libre / software de código abierto, en que el primero mira por las cuestiones sociales y el segundo por las cuestiones técnicas.

    2.    Xlash dijo

      Elav compañero, no es cuestión de ser o no puritano. El software libre nació como un movimiento social y eso es lo que el señor Stallman defiende, al igual que muchos.

      «No se puede ser tan cerrado de mente. Parece un fanático, un loco, y si, por mucho respeto que se merezca por sus logros y lo que defiende, no me simpatiza.»

      En realidad es lo contrario. El objetivo que se persigue es que cualquier persona pueda acceder libremente al software sin que nadie restrinja su uso mediante modificaciones privativas y como bien dije en mi comentario anterior, priorizan y enfatizan el desarrollo del software libre.

      Creo que confundes el fanatismo con otro término. El fanatismo mata, como bien ha demostrado la historia. El término que buscas tal vez sea radical pero sin ese radicalismo el movimiento del software libre y GNU/linux no existiría, al menos como lo conocemos hoy en día. Sobre lo de loco, no te lo discuto pero visto lo visto en este par de años, los locos no están tan locos.

      Con esta parrafada quiero decir que el movimiento del software libre es un movimiento no solo informático, también social y hay que defenderlo. Y Si Elav hay que ser radical respecto a lo social. Las empresas como Apple o Microsoft no dudarán en aprovecharse de las circustancias. Hay que crear conciencia respecto a los derechos de los usuarios como de las personas en general.

      P.D. Nombro a Elav porque le respondo a el pero el comentario va dirijido a todos los GNU/linuxeros.

      Salud Gente!

      1.    Mr_E dijo

        @Xlash: SEÑOR!… Gracias! Eso es lo que necesitaba leer. +1

        Te copio, lo imprimo y lo pongo a un lado de la Biblia. (que conste: no dentro ni encima de ella).
        Al final, gracias a este movimiento y el esfuerzo de Linus y la comunidad, se está logrando algo que ha cambiado el mundo:
        «Hay un antes de Linux y un AHORA con LINUX».

      2.    Ñandekuera dijo

        +10

    3.    Mr_E dijo

      😀 @Elav:
      No te disculpo pero tenia que decirlo:
      Algunos de tus post previos me han simpatizado, pero este no… y si continuan así: quizas seguirá siendolo por el resto de mis días.
      No seas cerrado de mente. Pareces fanático, loco, y por mucho respeto que merezcan tus logros (este foro) y lo que haces… no me simpatiza (tu comentario).
      😀 — jeje! ahora puedes experimentar (un poco) lo mismo que RMS. solo falta que tengas la misma difusión-trayectoria que él, y bueno, sentir casi exactamente lo mismo.
      Saludos cuñao!

  7.   Zironid dijo

    No entiendo por qué Stallman es tan cerrado. Me arriesgo al decir que pienso que LLVM es incluso más libre que GCC, puesto que da la libertad de usarlo incluso en programas privativos. Sí, se que esa restricción en GCC puede ayudar al software libre, pero me parece absurdo que se oponga a LLVM de esa manera.

    Saludos

    1.    wilson dijo

      Stallman no es cerrado. El artículo está muy inclinado con opiniones personales del autor.
      En realidad las desiciones de GCC en gran parte son técnicas. En GCC desean la modularidad y lo estan haciendo, pero de otra forma (evitando problemas que si existen en CLANG).
      Para más información https://gcc.gnu.org/ml/gcc/2014-01/msg00176.html
      Eso es lo que escribió raymond y allí aparecen las respuestas de los desarrolladores.

  8.   Santicluke dijo

    Esto me suena a ver quien lo tiene mas grande… El ego, por supuesto.
    Ambos compiladores son excelentes. Pero como toda herramienta, depende el uso que uno le dé.
    Uno puede escribir código libre en C# y hacer un misil con Linux.

  9.   Gallux dijo

    Opino que aquí se debe ser más pragmático. Stallman debería tener una visión y no dejar de perder el rumbo. Lo que preocupa es que la comunidad actual no se fragmente que es lo que está pasando. Lo mas sensato es que si bien la licencia bsd permite ser usada en entornos privativos, mientras se reconozca a los autores (e incluso que los derivados de ellas lo sean) utilizar la misma lógica pero con la gpl v2 o superior..

  10.   pandev92 dijo

    Por suerte, hace tiempo que casi no se escucha a stallman. Lo otro, un programa de ordenador o un compilador, jamás será una cuestión social, además que siempre ha habido alternativas, que no sean libres! pero si gratuitas.
    Sobre llvm clang, no tiene sentido la polémica, ya que la fuente siempre va a estar, ha sido liberado bajo licencia bsd, por tanto es software libre, que lo pueda usar una empresa para sus fines oscuros, no implica que tu ya no puedas acceder al código original, pero ya veo, que aquí nadie tiene ni idea, salvo 2 o 3.

    1.    Xlash dijo

      «un programa de ordenador o un compilador, jamás será una cuestión social»
      ¿Cómo que no? Respeto que no defiendas el movimiento del software libre como muchos otros lo hacemos, pero negar lo que el software libre representa me parece irrespetuoso por tu parte hacia la gente que invierte mucho tiempo, dinero y esfuerzo en la defensa y en la creación del mismo.

      Claro que llvm es software libre pero eso no significa que sus modificaciones y derivaciones lo sean. La idea no es sólo el poder acceder libremente al software original, sino también a sus modificaciones. Si yo desarrollo un programa y lo comparto contigo, me gustaría que tu hicieras lo mismo por las personas a las que les darías una copia de tu versión modificada. Esto es lo que defiende el software libre y el copyleft, por lo tanto, sí es una cuestión social.

      «pero ya veo, que aquí nadie tiene ni idea, salvo 2 o 3.»
      No se como has llegado a esa conclusión más cuando los comentarios aquí posteados hacen referencia a la filosofía y a la libertad de software comparando las diferencias entre dos tipos de licencias, aunque sean compatibles entre sí.

      1.    diazepan dijo

        ¿En que afecta la vida diaria de un contador que no sabe nada de programación que usa un programa de contaduría que fue compilado con tal compilador?

        1.    Xlash dijo

          En nada en absoluto, mientras sea libre. Pero el tema que yo trato en los comentarios es otro, Diazepan. Hablo sobre el uso de un compilador X para compilar software privativo, sobre las licencias empleadas en cada compilador y sus diferencias, también hago mención a la ventaja de GLP frente a BSD, siempre bajo el punto de vista de la libertad por supuesto.

    2.    Staff dijo

      LOL, afirmar que nadie tiene idea son palabras muy fuertes para alguien que dice que el software no es una cuestión social.
      Hay que ser ciego o por lo menos algo miope para no verlo, cuando incluso hay países que migran (en mayor o menor porcentaje) al software libre, cuando por todos los medios internacionales se hace eco de como el software privativo es una herramienta para el espionaje a gran escala, cuando el hombre mas rico del mundo esta precisamente dedicado a un sistema operativo.
      Lo que hay que leer.

    3.    Ñandekuera dijo

      … ojalá se escucharan más stallmans y menos pandevs…

  11.   Staff dijo

    Algo tendencioso el articulo, para empezar por el titulo, pues a quienes debería preguntarsele si «se ponen algo loquitos» es a LLVM, pues son ellos quienes se quejan amargamente.

    Y sobre el tema, se nota la hipocresía de los mismos que primero despotrican contra lo que ellos llaman «fragmentación» y lo «terrible» que es para el software libre.
    Pero cuando alguien coherente con lo que dice y hace, sigue su linea y no esta de acuerdo en que un compilador libre se convierta en una una plataforma para infinidad de compiladores privativos, entonces si ¡Viva, Todos a crear forks!

  12.   Canales dijo

    El software libre es un movimiento social desde su nacimiento por definición.

    Respecto a GPL vs BSD:
    «La libertad 3 incluye la libertad de publicar sus versiones modificadas como software libre. Una licencia libre también puede autorizar otras formas de publicación; en otras palabras, no tiene que ser una licencia con copyleft. No obstante, una licencia que requiera que las versiones modificadas no sean libres, no se puede considerar libre.»
    «El copyleft (definido muy resumidamente) es la regla en base a la cual, cuando redistribuye el programa, no puede agregar restricciones para denegar a los demás las libertades principales. Esta regla no entra en conflicto con las libertades principales, más bien las protege.»

    Como podéis ver, el copyleft, aunque a corto plazo quita algo de libertad, a largo plazo la protege. Es por eso que el señor Stallman defiende la GPL: «Mi trabajo en el software libre está motivado por una meta idealista: difundir la libertad y la cooperación».

  13.   Canales dijo

    http://www.gnu.org/philosophy/open-source-misses-the-point.html

    «El código abierto es una metodología de programación, el software libre es un movimiento social. Para el movimiento del software libre, el software libre es un imperativo ético, respeto esencial por la libertad de los usuarios. En cambio la filosofía del código abierto plantea las cuestiones en términos de cómo «mejorar» el software, en sentido meramente práctico. Sostiene que el software privativo no es una solución óptima para los problemas prácticos que hay que resolver. En la mayoría de los casos, cuando se discute sobre «código abierto» no se toma en consideración el bien y el mal sino únicamente la popularidad y el éxito.»

  14.   Daniel Noriega dijo

    Ya lo he comentado varias veces y lo sigo repitiendo, linux en general me gusta mucho, pero si hay algo que detesto de linux es la comunidad. Cuando eres capaz de tirarte por un barranco con tal de seguir con una ideología tan «cerrada» como lo es el «software libre» entonces te das cuenta que le mundo está de cabezas. Creo que en sus inicios el software libre lo tenía claro, hoy la historia es otra.

  15.   casoraro dijo

    Creo que a muchos no les ha quedado claro los términos y los fines de la licencia GPL. La licencia GPL es muy permisiva pero con el limite de no permitir lucrar con los programas licenciadas con esta. Estoy de acuerdo con Stallman, pero no el extremo de usar exclusivamente software libre. Que un usuario quiera usar LLvm/Clang está en su derecho, pero que la SLF quieran sustituir GCC por LLVM/Clang seria una contradicción a los principios del software libre.