Ir al contenido principal

¿Bajo qué licencia opera MySQL? ¿Tenemos que pagar?




En esta entrada comprenderemos, bajo que licencia se puede distribuir y/o acceder a los productos MySql y de paso hablaremos de MariaDB para aclarar conceptos de licencia, y del porqué en algunos sitios de la Internet, suelen decir que es gratis la base de datos MySQL. Esta entrada surge a raíz de un comentario de una persona muy apreciada lo cual lee mis escritos y presenta críticas constructivas. Exactamente en mi publicación anterior declaro que MySQL era gratuito, más adelante les dejo una cita, que hace referencia dicha entrada.

MySQL para empresas no es gratuito y los detalles de estas se encuentran en su página oficial. A continuación leemos sobre lo que nos tiene que decir acerca de las licencias, dado el caso de que "Oracle" obtuvo los derechos de MySQL, estos cambios se han ido incorporando poco a poco, de hecho con en el lenguaje Java está sucediendo algo similar. No digo que MySQL es un lenguaje, sino que, realizo una comparación referente a las licencias y sus cambios por la adquisición de estos, ya que hablamos de licencias en esta ocasión. Aquí la referencia a la sección de mi argumento en la entrada anterior.

"MySQL es un sistema de administración de bases de datos que le permite administrar bases de datos relacionales. Es un software de código abierto respaldado por Oracle. Significa que puede usar MySQL sin pagar un centavo. Además, si lo desea, puede cambiar su código fuente para adaptarlo a sus necesidades."

Ya tenemos esta parte clara, entonces podemos comprender, que está sucediendo con las licencias y porque son comerciales y a su vez partes de estas son permisibles solo bajo la licencia GPL, de hecho todo desarrollador deberá retirar la antigua excepción "FOSS" lo cual permitía publicar bajo otras licencias no compatibles con la "Licencia GPL"

Por otro lado comprendamos lo que significan: Los ISV lo cual son "proveedores de software independientes" Los OEM que son el "fabricante de equipos originales" y los VAR que son el "revendedor de valor agregado.

Veamos una sección importante publicada, en la página oficial de MySQL:

MySQL :: Commercial License for OEMs, ISVs and VARs. (n.d.). Mysql. Retrieved June 20, 2021, from https://www.mysql.com/about/legal/licensing/oem/Licencia comercial de MySQL para OEM, ISV y VAR

Oracle proporciona su servidor de base de datos MySQL y bibliotecas cliente MySQL bajo un modelo de licencia dual diseñado para satisfacer las necesidades de desarrollo y distribución de distribuidores comerciales (como OEM, ISV y VAR) y proyectos de código abierto.

Para OEM, ISV, VAR y otros distribuidores de aplicaciones comerciales:

OEM (fabricantes de equipos originales), ISV (proveedores de software independientes), VAR (revendedores de valor agregado) y otros distribuidores que combinan y distribuyen software con licencia comercial con software MySQL y no desean distribuir el código fuente del software con licencia comercial en la versión 2 De la Licencia Pública General GNU (la 'GPL') debe celebrar un contrato de licencia comercial con Oracle.

Para proyectos de código abierto y otros desarrolladores de aplicaciones de código abierto:

Para los desarrolladores de aplicaciones de software libre de código abierto ('FOSS') bajo la GPL que desean combinar y distribuir esas aplicaciones FOSS con el software MySQL, el software de código abierto MySQL de Oracle con licencia de la GPL es la mejor opción.

Para los desarrolladores y distribuidores de software de código abierto con una licencia de FOSS distinta de la GPL, Oracle pone a disposición sus bibliotecas cliente MySQL con licencia GPL bajo una excepción de FOSS que permite el uso de esas bibliotecas cliente MySQL en determinadas condiciones sin que todo el trabajo derivado se pierda. Estar sujeto a la GPL.

También tenemos disponible la lectura del Manual de referencia de MySQL 5.7 https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/index.html

Si leemos la definición de MySQL por Oracle aquí https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/what-is-mysql.html leeremos en una sección lo siguiente

El software MySQL es de código abierto.

Código abierto significa que cualquiera puede utilizar y modificar el software. Cualquiera puede descargar el software MySQL de Internet y utilizarlo sin pagar nada. Si lo desea, puede estudiar el código fuente y modificarlo para adaptarlo a sus necesidades. El software MySQL utiliza la GPL (Licencia Pública General GNU), http://www.fsf.org/licenses/, para definir lo que puede y no puede hacer con el software en diferentes situaciones. Si no se siente cómodo con la GPL o necesita incrustar código MySQL en una aplicación comercial, puede comprarnos una versión con licencia comercial. Consulte la descripción general de licencias de MySQL para obtener más información (http://www.mysql.com/company/legal/licensing/).

En esta descripción proporcionada por MySQL, observamos los reclamos de remoción de todas las licencias que permitía la excepción FOSS de todo el software derivado de los ficheros binarios de MySQL, por ende, sus librerías, controladores y componentes. Sin embargo tenemos la fundación MariaDB de la cual hablaré más adelante. Le recuerdo que mi postura sobre las licencias, está influenciado por mi creencia de la posibilidad de acceder a herramientas bajo la licencia GPL, ya que nos brinda la oportunidad a personas con menos recursos económicos, a producir software competente y ser parte del crecimiento tecnológico de esta nueva era, y no solo eso, sino a la posibilidad de que más personas puedan aportar al desarrollo de estas herramientas.

Relacionado con esto voy a hablar de herramientas que yo empleo en mi trabajo como desarrollador de aplicaciones web. Existen muchas herramientas de desarrollo de aplicaciones mucho mejores o mucho peores no lo sé, solo sé que yo trabajo con mis herramientas y logro satisfacer cualquier necesidad informática de una organización, utilizando las mismas.

Comencemos hablando de PhpMyAdmin, este se puede considerar un producto que depende de un motor de base de datos pues este solo es una interfaz que se comunica con el motor de bases de datos. Por si no lo sabías podemos acceder al motor de base de datos de MySQL, solo empleando una terminal de línea de comando. Cuando instalé él (Bundle "Paquete") para desarrollar aplicaciones, lo cual ejecuto de manera local, previamente al despliegue de las mismas en servidores, que usan las mismas tecnologías. Continuamos, entonces tengo una serie de herramientas en el paquete de desarrollo local, y una de ellas, es PhpMyAdmin, lo cual posee una serie de propiedades, que mencionaré a continuación.

Servidor de base de datos

Servidor: Localhost via UNIX socket

Tipo de servidor: MariaDB

Conexión del servidor: No se está utilizando SSL Documentación

Versión del servidor: 10.4.19-MariaDB - Source distribution

Versión del protocolo: 10

Usuario: root@localhost

Conjunto de caracteres del servidor: UTF-8 Unicode (utf8mb4)

Servidor web

Apache/2.4.48 (Unix) OpenSSL/1.1.1k PHP/7.4.20 mod_perl/2.0.11 Perl/v5.32.1

Versión del cliente de base de datos: libmysql - mysqlnd 7.4.20

extensión PHP: mysqli Documentación curl Documentación mbstring Documentación

Versión de PHP: 7.4.20

Ahora observamos que posee una sección "Versión del servidor lo cual es MariaDB y otra, llamada versión del cliente de base de datos". Entonces que es "libmysql - mysqlnd 7.4.20". Pues en https://dev.mysql.com/downloads/connector/php-mysqlnd/, nos dice que: "El controlador nativo de MySQL para PHP (mysqlnd) es un reemplazo directo de la biblioteca cliente de MySQL (libmysql) para el lenguaje de script PHP." Además nos dice que "Las 3 extensiones PHP MySQL y la biblioteca mysqlnd son parte del código fuente de PHP. El código fuente y los binarios están disponibles."

Puede que todo esto, provoque dificultad de comprensión, a usuarios con poca experiencia en el campo, por lo que intentaré simplificar los conceptos y así proporcionar una idea clara del panorama.

Puede leer más sobre PhpMyadmin aquí https://www.phpmyadmin.net/.

"PhpMyAdmin es una herramienta de software gratuita escrita en PHP, destinada a manejar la administración de MySQL a través de la Web. PhpMyAdmin admite una amplia gama de operaciones en MySQL y MariaDB. Las operaciones de uso frecuente (administración de bases de datos, tablas, columnas, relaciones, índices, usuarios, permisos, etc.) se pueden realizar a través de la interfaz de usuario, mientras aún tiene la capacidad de ejecutar directamente cualquier declaración SQL."

Por lo que le adelanto que, XAMPP posee lo necesario para el desarrollo de aplicaciones web, ya que proporciona un entorno local de pruebas, al menos todo lo necesario, para mi entorno de trabajo, lo cual es MySQL, PHP, JavaScript, CSS y HTML.

Por otro lado veamos las propiedades del paquete XAMPP, lo cual nos dice, que incluye los siguientes paquetes, servicios, componentes y/o extensiones. A continuación el listado.

Includes: Apache 2.4.48, MariaDB 10.4.19, PHP 7.4.20 + SQLite 2.8.17/3.35.5 + multibyte (mbstring) support, Perl 5.32.1, ProFTPD 1.3.6, phpMyAdmin 5.1.1, OpenSSL 1.1.1k, GD 2.2.5, Freetype2 2.4.8, libpng 1.6.37, gdbm 1.8.3, zlib 1.2.11, expat 2.0.1, Sablotron 1.0.3, libxml 2.0.1, Ming 0.4.5, Webalizer 2.23-05, pdf class 0.11.7, ncurses 5.9, pdf class 0.11.7, mod_perl 2.0.11, FreeTDS 0.91, gettext 0.19.8.1, IMAP C-Client 2007e, OpenLDAP (client) 2.4.48, mcrypt 2.5.8, mhash 0.9.9.9, cUrl 7.53.1, libxslt 1.1.33, libapreq 2.13, FPDF 1.7, ICU4C Library 66.1, APR 1.5.2, APR-utils 1.5.4

Observamos que en el listado se encuentra, PhpMyadmin y MariaDB, si recordamos la lectura de PhpMyadmin nos dice que puede manejar MySQL y MariaDB.

Veamos, lo que tiene que decir, la página de tutoriales, llamada mariadbtutorial aquí https://www.mariadbtutorial.com/getting-started/what-is-mariadb/

Que es MariaDB?

MariaDB es una bifurcación de MySQL. En otras palabras, es un reemplazo directo mejorado de MySQL.

Un reemplazo directo significa que puede sustituir el servidor MySQL estándar con la versión analógica del servidor MariaDB y aprovechar al máximo las mejoras en MariaDB sin la necesidad de modificar el código de su aplicación.

MariaDB es rápido, escalable y robusto. Es compatible con más motores de almacenamiento que MySQL. MariaDB también incluye muchos complementos y herramientas que lo hacen versátil para muchos casos de uso.

Que dice oracle de MySql en https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/what-is-mysql.html

El software MySQL es de código abierto.

Código abierto significa que cualquiera puede utilizar y modificar el software. Cualquiera puede descargar el software MySQL de Internet y utilizarlo sin pagar nada. Si lo desea, puede estudiar el código fuente y modificarlo para adaptarlo a sus necesidades. El software MySQL utiliza la GPL (Licencia Pública General GNU), http://www.fsf.org/licenses/, para definir lo que puede y no puede hacer con el software en diferentes situaciones. Si no se siente cómodo con la GPL o necesita incrustar código MySQL en una aplicación comercial, puede comprarnos una versión con licencia comercial. Consulte la descripción general de licencias de MySQL para obtener más información (http://www.mysql.com/company/legal/licensing/).

Perfecto ahora más cosas, según la lectura anterior vemos que Oracle se refiera un motor de base de datos llamado "NDB Cluster" y dice y nos da una definición.

NDB Cluster es el sistema de base de datos distribuido subyacente a MySQL Cluster. Se puede utilizar independientemente de un servidor MySQL con usuarios que acceden al clúster a través de la API de NDB (C ++). 'NDB' son las siglas de Network Database.

Aquí un listado de motores de bases de datos publicado en https://wiki.cifprodolfoucha.es/index.php?title=Mysql_Motores_de_bases_de_datos

MYISAM Storage Engine

MEMORY Storage Engine

CSV Storage Engine

ARCHIVE Storage Engine

BLACKHOLE Storage Engine

MERGE Storage Engine

FEDERATED Storage Engine

EXAMPLE Storage Engine

INNODB Storage Engine

NDB Storage Engine

Según un artículo de la Wikipedia

NDB Cluster es el sistema de base de datos distribuido subyacente a MySQL Cluster. Se puede utilizar independientemente de un servidor MySQL con usuarios que acceden al clúster a través de la API de NDB (C ++). 'NDB' son las siglas de Network Database.

Desde la perspectiva del servidor MySQL, NDB Cluster es un motor de almacenamiento para almacenar tablas de filas.

Desde la perspectiva del NDB Cluster, una instancia de MySQL Server es un proceso API conectado al Cluster. NDB Cluster puede admitir simultáneamente el acceso desde otros tipos de procesos API, incluidos Memcached, JavaScript / Node.JS, Java, JPA y HTTP / REST. Todos los procesos de API pueden operar en las mismas tablas y datos almacenados en el NDB Cluster.

MySQL Cluster utiliza MySQL Server para proporcionar las siguientes capacidades además de Ndb Cluster:

Capacidad de análisis / optimización / ejecución de SQL

Conectores a aplicaciones a través de JDBC, ODBC, etc.

Mecanismo de unión de mesa cruzada

Autenticación y autorización de usuarios

Replicación de datos asincrónica a otros sistemas

Todos los procesos de API, incluido el servidor MySQL, utilizan la biblioteca cliente NDBAPI C ++ para conectarse al clúster NDB y realizar operaciones.

De acuerdo a lo analizado nos queda claro que MariaDB no es MySQL sin embargo comparten ficheros binarios gracias a que es una rama que se generó a partir del la original "MySQL" por lo que tiene, las mismas capacidades y las suyas propias dado que continúan trabajando en la misma así como Oracle continúa trabajando en nuevas funcionalidades, controladores y mucho más en MySQL. Sin embargo a partir de la ramificación las licencias han tenido cambios repentinos, así que Oracle recomienda versiones actualizadas, ya que estas poseen licencias actualizadas. El proceso de compra se realizó mientras MySQL estaba bajo licencia GPL lo cual dificulta la privatización del acceso al código fuente, pero no a los cambios incorporados desde la fecha de compra por parte de Oracle, ya que esta hace todo lo posible por restringir el uso y el acceso a estos mediante excepciones a las licencias que están sujetos a revisiones.

Oracle compro los derechos del lenguaje Java y está sucediendo algo parecido con las licencias. Mira esta noticia sobre enfrentamientos judiciales entre Oracle y Google aquí https://www.lainformacion.com/tecnologia/oracle-gana-juicio-a-google-por-los-derechos-de-autor-de-codigo-java-en-android/6345089/

Ahora veamos que tiene que decir la fundación MariaDB con respecto a todo esto de las licencias de MySQL.

Recientemente se nos ha señalado que las páginas de manual de MySQL han sido renovadas. El cambio se realizó de forma bastante silenciosa pasando de MySQL 5.5.30 a MySQL 5.5.31. Esto afecta a todas las páginas del directorio man / del código fuente.

Puede notar que los cambios se han producido durante este breve período de tiempo (5.5.30-> 5.5.31). Las páginas del manual antiguas se publicaron bajo la siguiente licencia:

Esta documentación es software gratuito; Puede redistribuirlo y / o modificarlo solo bajo los términos de la Licencia Pública General GNU publicada por la Free Software Foundation; Versión 2 de la Licencia.

Las nuevas páginas de manual (siguientes a 5.5.31 y posteriores, aún válidas para 5.5.32) se publican bajo la siguiente licencia:

Este software y la documentación relacionada se proporcionan bajo un contrato de licencia que contiene restricciones de uso y divulgación y están protegidos por las leyes de propiedad intelectual. Salvo que se permita expresamente en su contrato de licencia o que lo permita la ley, no puede usar, copiar, reproducir, traducir, difundir, modificar, licenciar, transmitir, distribuir, exhibir, ejecutar, publicar o exhibir cualquier parte, en cualquier forma, o Por cualquier medio. Se prohíbe la ingeniería inversa, el desmontaje o la descompilación de este software, a menos que lo exija la ley para su interoperabilidad.

Claramente, esto no es muy amigable con MySQL en Oracle. La nueva licencia también se ha vuelto mucho más larga (para aclarar que no se publica bajo la GPL). Si bien lo siguiente se tomó de la herramienta resolveip, el aviso de derechos de autor es el mismo para todas las páginas de manual. Puede comparar la página de manual de 5.5.30 con la página de manual de 5.5.31.

Leer de la fuente original aquí https://mariadb.org/mysql-man-pages-silently-relicensed-away-from-gpl/

Conclusión

MySQL ha sufrido cambios, a raíz del cambio de propietario, sin embargo la fundación MariaDB se ha encargado de que las herramientas para desarrolladores sigan siendo de acceso público y que podamos crear y distribuir programas gratuitamente o cobrar por los mismos sin ningún problema de licencias, sin embargo si una empresa decida incorporar cambios actualizados de MySQL deber apagar licencias de uso sin embargo también están sujetas a la licencia GPL y para los desarrolladores no hay nada, solo que deberán retirar las licencias que aplicaban bajo la excepción FOSS y listo ya puede usar las herramientas. Todo el panorama está enfocado a compañías OEM (fabricantes de equipos originales), ISV (proveedores de software independientes), VAR (revendedores de valor agregado) Entonces PhpMyadmin puede estar bajo los ISV sin embargo el paquete XAMPP proporciona MariaDB lo cual los exonera de las licencias y podemos seguir disfrutando del privilegio de emplear estas herramientas en nuestros desarrollos. Por otro lado están los vendedores de servicio de alojamiento lo cual trabajan de manera interdependiente y lo más seguro ellos si están pagando las licencias a no ser que sus servidores posean actualizaciones de MySQL y no MariasDB en el corazón del mismo.

Referencias

1.2.1 What is MySQL? (s. f.). Oracle. Recuperado 23 de junio de 2021, de https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/what-is-mysql.htmlMariaDB. (s. f.). Wikipedia. Recuperado 23 de junio de 2021, de https://en.wikipedia.org/wiki/MariaDBMySQL. (s. f.). Wikipedia, la enciclopedia libre. Recuperado 23 de junio de 2021, de https://es.wikipedia.org/wiki/MySQLMySQL 5.7 reference manual. (s. f.). Oracle. Recuperado 23 de junio de 2021, de https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/index.htmlMySQL :: Legal policies. (s. f.). Mysql. Recuperado 23 de junio de 2021, de https://www.mysql.com/about/legal/MySQL :: MySQL native driver for PHP - mysqlnd. (s. f.). Dev Mysql. Recuperado 23 de junio de 2021, de https://dev.mysql.com/downloads/connector/php-mysqlnd/NDB cluster. (s. f.). Wikipedia. Recuperado 23 de junio de 2021, de https://en.wikipedia.org/wiki/NDB_Cluster https://www.mysql.com/about/legal/

Comentarios

Entradas populares de este blog

Elemento de formulario atributo {action}

En esta ocasión hablaré del atributo {action}, que en resumen solo contiene la URL que procesará los datos contenidos en el formulario. Puede ser muchos lenguajes los que procesen el formulario, sin embargo, tomaremos como ejemplo un script de PHP. Dicho esto podemos decir que el atributo {action} es propio del elemento {form} de HTML y es usado para enviar todo el contenido dentro del formulario. Aunque debes tener en cuneta de que solo los elementos {input} con atributo {type} y {neme} son enviados. Existe una buena cantidad de input type de lo que hablaremos más adelante. Por lo que te adelanto que estos son los elementos que vemos para la entrada de texto números y controles dentro de páginas web. Son elementos capaces de recoger datos a rais de entrada por el usuario por también ficheros de imágenes y mucho más.

HTMLElement.accessKey

Presione dos veces en el texto para leer, después de haber activado la funcionalidad si estás desde un móvil. Si estás desde un ordenador puedes hacer doble clic en los textos de esta entrada para leerlos. Nota: Más adelante se actualizará la entrada y mostraremos el mensaje para dispositivos móviles usando JavaScript para detectar el dispositivo que visita la página web. En esta entrada hablaré sobre el atributo {accesskey} de HTML5. Este atributo da la posibilidad de brindar al usuario realizar acción en un elemento de HTML. Por esta razón analizaremos las posibilidades que tenemos para que esta acción realmente, beneficie al usuario. Como de costumbre publico definiciones de atributos, funciones, mét

Formulario HTML attribute: accept-charset

Definición del atributo {accept-charset} de HTML5. En esta ocasión he realizado una investigación de los parámetros que podemos pasar a este atributo. La definición a continuación que nos brinda MDN dice: accept-charset Codificaciones de caracteres separadas en el espacio El servidor acepta. El navegador los usa en el orden en que se enumeran. El valor predeterminado significa la misma codificación que la página. (En versiones anteriores de HTML, las codificaciones de caracteres también podrían ser delimitadas por comas). Sin embargo, carece de enlaces para ver detalles sobre la implementación del atributo y más sobre el tema. Un análisis importante es que podemos definir la codificación de caracteres diferentes al resto de la página web o aplicación en la que estemos trabajando. Esto solo para casos específicos. También debemos recordar que

Efectos CSS con Izmir Hover Effects

Mira que bellos estos efectos con una librería CSS llamada Izmir Hover Effects Pasa el ratón sobre las imágenes o haz clic sobre ellas si etas en el móvil Mi avatar. Mi avatar.

HTML / Atributos

Atributos / HTML Nombre del atributo Descripción Estado de revisión accept Lista de tipos que acepta el servidor, normalmente un tipo de archivo. Puedes encontrar una entrada con ejemplo en este blog aquí Formulario HTML attribute: accept

JavaScript Array

Follow @codefuncode En esta ocasión les traigo algo muy sencillo. Se trata de cómo definir una matriz y acceder a sus valores. Recordemos que las matrices tienen valores de acuerdo a su índice. O sea que una matriz puede tener distintos valores y para encontrarlos debemos especificar el índice en que se encuentra. A continuación un ejemplo de cómo definir una matriz y acceder a sus valores. Un Aray en JavaScript es un objeto. Básicamente, todo es un objeto en JavaScript. Por lo que cuando estés avanzado con este lenguaje verás que en ocasiones deberás buscar el objeto en sí, ya que muchos de los objetos tienen métodos ya definidos por defecto y en otras ocasiones tienen métodos que no conocemos, porque en la internet no se habla mucho de ellos. Más adelante hablaré muchos detalles sobre esto. Más adelante hablaremos de matrices asociativas y mucho más. Por ahora veamos esto.

Atributo accept de HTML

    En esta ocasión hablaré del atributo {accept=" "} de HTML. A modo de introducción este atributo hace referencia al tipo de archivos que permitimos al usuario insertar en un input type="file" Ahora comenzamos con la descripción y una lista de parámetros que en teoría deberían ser válidos para aplicaciones web. Sin embargo, es necesario hacer pruebas en los navegadores más usados para comprobar la compatibilidad. Este atributo recibe como parámetro de tipo {MIME types} por lo que podemos ir a esta referencia y deberían funcionar. Estos son los tipos más comunes, sin embargo, hay una listas más completas, pero no asegura la compatibilidad. Por otro lado, no es aconsejable permitir a los usuarios subir archivos de tipo ejecutaba o que puedan ejecutarse de alguna forma. El atributo {accept=" "}, toma como su valor una lista separada