# CURL

cURL (/kə:(r)l/.) es un proyecto de software consistente en una biblioteca (libcurl) y un intérprete de comandos (curl) orientado a la transferencia de archivos. Soporta los protocolos FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE y LDAP, entre otros. La primera versión se publicó en 1997 y se basó en una pequeña herramienta llamada httpget escrita por el brasileño Rafael Sagula.
cURL soporta certificados HTTPS, HTTP POST, HTTP PUT, subidas FTP, Kerberos, subidas mediante formulario HTTP, proxies, cookies, autenticación mediante usuario y contraseña (Basic, DIgest, NTLM y Negotiate para HTTP y kerberos 4 para FTP), continuación de transferencia de archivos, tunneling de proxy HTTP y otras prestaciones. cURL es de código abierto, software libre distribuido bajo la Licencia MIT.
El principal propósito y uso para cURL es automatizar transferencias de archivos o secuencias de operaciones no supervisadas. Es por ejemplo, una herramienta válida para simular las acciones de usuarios en un navegador web.

## Historia

Creada en 1997 y con capacidad añadida de manejar FTP en 1998, su desarrollador Daniel Stenberg, decide cambiar el nombre de la aplicación a cURL. Dicho cambio de nombre se debió en parte a que su nombre anterior era urlget y no concordaba con la gramática inglesa así que se decidió por dejar solo URL y agregarle el prefijo c que se pronuncia como el verbo see (ver) en inglés, así que se pronunciaría como "ver URL", traducido al idioma castellano. Tiempo después se propuso que cURL significara, en un acrónimo recursivo, Curl URL Request Library.
En la actualidad se calcula que existen un millardo de usuarios de cURL. Dicha cifra atisba de no descender ya que mientras se mantengan las transferencias de datos orientados a archivos en la séptima capa del modelo OSI, cURL siempre estará allí en código fuente abierto para ser adaptado a las futuras necesidades de los usuarios y la programación.

## LibcURL

LibcURL es la biblioteca/API correspondiente que los usuarios pueden incorporar en sus programas donde cURL actúa como un envoltorio (wrapper) aislado para la biblioteca LibcURL. LibcURL se usa para proveer capacidades de transferencia de URL a numerosas aplicaciones, tanto libres y open source como privativas. La biblioteca "libcurl" puede ser usada desde más de 50 lenguajes distintos.

### Incidencias

A lo largo de su historia la cURL, ha presentado una serie de incidencias, de las cuales las más importantes han sido las siguientes:
* El 23 de marzo de 2013 Daniel Stenberg publicó en su blog las razones por las cuales durante mucho tiempo CURL permanecerá en la versión 7.X . La razón práctica para ello es que cambiar el número de versión a 8 ocasionará mucho más trabajo a los demás programadores que dependen de esta librería quienes a su vez tienen otros programadores que también deberán compilar de nuevo sus programas. Aunque Stenberg hace un atisbo en su blog de este efecto, se puede inferir que ocasiona un efecto cascada (no confundir con Desarrollo en cascada) en muchísimos servidores alrededor del mundo. Esto se debe al paradigma de Interfaz binaria de aplicaciones, abreviado como ABI, y que depende del número de versión, el cual es llamado también número ABI. Al alcanzar CURL la versión 7.60 el autor de nuevo hace mención al tema porque según sus cálculos estadísticos a la velocidad de avance y liberación de versiones pasarán al menos 6 años en alcanzar la versión 7.99 la cual no deberán sobrepasar, mucho antes de ello ha de cambiar a la versión ocho. Si por ejemplo se liberara la versión 7100 pudiera haber confusiones en los programadores que utilizan esta librería con la versión 7.10 y esto se debe a que los "números" de versiones son evaluados como cadenas de texto, caracteres alfanuméricos. A pesar de que el asunto reviste total seriedad, este artículo ocasionó confusión entre la comunidad de desarrollo y Stenberg hubo de realizar un par de aclaratorias al final de la entrada: explica que es una información importante que va implícita en el código fuente no obstante él hace la declaración pública a fin de prevenir malentendidos (de hecho en el artículo se ofrece una breve guía de trabajo dirigida exclusivamente a los desarrolladores) y que de ninguna manera la velocidad de mantenimiento y desarrollo de la librería disminuye ni se ve afectada por ello.

### Implementaciones

cURL fue agregado en Windows 10 en diciembre de 2017 y se puede acceder a él a través de la línea de comandos sin software adicional.