[Propuesta] Acerca de PyPi

36 replies [Last post]
Majin Buu
Offline
Joined: 11/05/2016

Hola amigos de Trisquel. PyPi es el repositorio oficial de paquetes de Python, en Trisquel es posible obtener biblioteca de ahí instalando el gestor de paquetes "python-pip" desde el repositorio oficial de la distribución. Pero hay un problema, PyPi no tiene una política sobre qué licencias se pueden usar, y además ya hay varios programas privativos (léase https://pypi.python.org/pypi).

Por lo tanto, al incluir paquetes privativos no se puede introducir pip en Trisquel ni ningún otro sistema operativo 100% libre.

Para que Trisquel siga siendo 100% libre deberíamos remover pip del repositorio, pero es una gran herramienta para programadores. Entonces, tenemos tres opciones:

1. Convencer a la Python Software Foundation de adoptar una política que no permita incluir paquetes no libres en PyPi.
2. Crear nuestro propio repositorio con únicamente paquetes libres, para ésto podemos crear un script que vea la licencia del paquete, y si éste es libre, que lo incluya en el repositorio. Para ésto necesitaríamos un repositorio adicional para que puedan usarlo otras distribuciones 100% libres y el script.
3. Incluir los paquetes libres de PyPi en el repositorio oficial de Trisquel y remover "python-pip".

Yo prefiero la primera alternativa ya que los desarrolladores que quieran publicar su software en PyPi (el repositorio oficial y el máspopular) tendrá que hacerlo bajo una licencia libre. Así, la comunidad del sodtware libre se beneficiaría bastante. En cambio, con la segunda o tercera habrían varias bibliotecas que no podríamos usar debido a que no serían libres ya que la PSF no adoptaría ninguna política al respecto.

Majin Buu
Offline
Joined: 11/05/2016
CitoplasmaX
Offline
Joined: 11/24/2016

Yo me apunto por las dos primeras.

Por un lado intentamos convencer y por otro creamos un repo y nos divertimos un rato haciéndolo y así también obtendríamos el beneficio de adquirir ciertos conocimientos.

(Tantos proyectos tengo ya a la cola jajajajajajajajaja)

juan santiago
Offline
Joined: 03/05/2015

Me apunto a aprender!

jorgesumle
Offline
Joined: 06/01/2016

No veo ningún problema en incluir pip en los repositorios de Trisquel. pip no incluye paquetes privativos; es el usuario el que los instala. El usuario puede perfectamente elegir instalar solo paquetes libres comprobando la información de licencia en la página de PyPI del programa que se quiere instalar.

La primera opción de todas formas es una buena idea.

Captura de pantalla de 2016-12-01 08:38:13.png
SuperTramp83

I am a translator!

Offline
Joined: 10/31/2014

>No veo ningún problema en incluir pip en los repositorios de Trisquel. pip no incluye paquetes privativos; es el usuario el que los instala. El usuario puede perfectamente elegir instalar solo paquetes libres comprobando la información de licencia en la página de PyPI del programa que se quiere instalar.

Exactamente! Hay que asegurarse de que el software que uno quiere instalar a traves de pip tenga licencia libre. Yo instalo varios programas usando pip, todos libres, es muy util.
Youtube-dl, mps-youtube, pirate-get, rtv los instalè todos usando pip.

Majin Buu
Offline
Joined: 11/05/2016

Según las pautas para distribuciones libres: "Una distribución de sistema libre no debe dirigir a los usuarios a obtener información de uso práctico que no sea libre, ni debe incentivarlos para que lo hagan. El sistema NO DEBE TENER REPOSITORIOS CON SOFTWARE PRIVATIVO ni instrucciones específicas para la instalación de programas que no sean libres. Tampoco la distribución debe remitir a repositorios de terceros que no se hayan comprometido a incluir únicamente software libre; aunque quizá no tengan software privativo hoy, lo podrían tener mañana. Los programas incluidos en el sistema no deben sugerir la instalación de programas complementarios [plugins], documentación u otros elementos que no sean libres."

PyPi se puede considerar un repositorio, y Trisquel indirectamente recomienda instalar software privativo incluyendo pip en el sistema, ya que PyPi ofrece paquetes que no son libres.

Además, al final del documento recomienda informar a los usuarios acerca del software libre, y al facilitar la instalación se software privativo Trisquel está haciendo lo contrario a lo que debería. Por ejemplo, no creo que niños que están aprendiendo a programar se informen sobre la licencia del programa debido a que aún no valoran su libertad.

jorgesumle
Offline
Joined: 06/01/2016

> PyPi se puede considerar un repositorio, y Trisquel indirectamente recomienda instalar software privativo incluyendo pip en el sistema, ya que PyPi ofrece paquetes que no son libres.

Pypi es un repositorio, pero no tiene nada que ver con Trisquel ni con el repositorio de software Trisquel. Además, pip no está incluido por defecto en los programas de Trisquel, tienes que descargartelo de sus repositorios con sudo apt-get install pip o sudo apt-get install pip3

pip es software libre; que con él puedas instalar software privativo no significa que no respeta tu libertad. Es complicado instalar software privativo con pip, ya que la creo que mayoría y los más populares son software libre. ¿Pero entonces quitamos o restringimos también Python? Puedes descargarte un programa privativo e instalarlo con Python con la instrucción:

sudo python setup.py install

SuperTramp83

I am a translator!

Offline
Joined: 10/31/2014

>Puedes descargarte un programa privativo e instalarlo con Python con la instrucción:

exactamente! Puedes tambien descargar un cualquier .deb en red, por ejemplo el malware privativo llamado skype.deb y instalarlo con dpkg..
El que quiere instalar basura ya va a instalar basura, sea que utilize Lignux Mint o Tisquel o lo que sea. El que no quiere instalar nada privativo no va a hacerlo, ni con python, ni con pip, ni con dpkg, etc, etc.
sds

QuijoteLibre
Offline
Joined: 10/19/2016

Personalmente, y aunque soy nuevo por estos temas, creo que, visto cómo actúa con Debian, FSF consideraría mejor la opción 2.

dcapeletti
Offline
Joined: 04/03/2014

Perdón...¿cuál es?

Sds

CitoplasmaX
Offline
Joined: 11/24/2016

"2. Crear nuestro propio repositorio con únicamente paquetes libres, para ésto podemos crear un script que vea la licencia del paquete, y si éste es libre, que lo incluya en el repositorio. Para ésto necesitaríamos un repositorio adicional para que puedan usarlo otras distribuciones 100% libres y el script."

dcapeletti
Offline
Joined: 04/03/2014

Me parece que una característica del programa pip, es que debería avisar que cierta extensión es libre o privativa, justo antes de la instalación. De esa manera, el usuario puede cancelar la instrucción. Podría comunicarse esto al grupo de desarrollo de pip.

Sds

Lightmoon

I am a member!

Offline
Joined: 12/16/2013

A mi parecer, aunque pip es libre, puede usarse para instalar programas no libres desde un repositorio, al igual que Debian, por lo que un usuario podría instalar accidentalmente sin saberlo un programa no libre. Como bien dice QuijoteLibre, la "mejor" opción es la segunda, pero supongo que esto supondrá un trabajo bastante grande.

Saludos.

Majin Buu
Offline
Joined: 11/05/2016

Gracias
a todos los que me apoyan ;)

> Pypi es un repositorio, pero no tiene nada que ver con Trisquel ni
con el repositorio de software Trisquel.

Al estar dentro de los repositorios oficiales, pip ya es parte de
Trisquel. Hace un tiempo, los desarrolladores removieron PlayOnLinux
porque recomendaba juegos que no son libres para Windows, y al tenerlo
en el repositorio Trisquel no cumplía con la FSDG. Aquí pasa algo
similar.

> El que quiere instalar basura ya va a instalar basura, sea que
utilize Lignux Mint o Tisquel o lo que sea. El que no quiere instalar
nada privativo no va a hacerlo, ni con python, ni con pip, ni con dpkg,
etc, etc.

Es verdad, pero una distribución 100% libre no debe facilitar la
instalación de software privativo. Al ofrecer un programa que te permite
acceder a un repositorio con paquetes privativos estás facilitando su
uso. Yo estoy de acuerdo contigo, pero pip no cumple con la FSDG.

Una cuarta alternativa es simplemente remover pip de los repositorios y
el que quiera usarlo que lo instale por su cuenta, como pasó con
PlayOnLinux.

Yo prefiero la primera opción. Si elegimos la segunda (que no es mala),
seguirán habiendo muchos desarrolladores que distribuyen programas
privativos a través de PyPi.

En cambio, si elegimos la primera, algunos (por no decir muchos)
desarrolladores decidirán liberar sus paquetes. Pero... ¿porqué? PyPi,
al ser el repositorio de Python más popular, atrae a los programadores
ya que hay una mayor probabilidad de que sus programas sean usados por un
gran número de personas. Entonces, si la PSF obliga a los
desarrolladores a publicar sus paquetes bajo una licencia libre éstos
decidirán liberarlos en vez de no publicarlos. Pasará algo parecido a lo
que pasa con la GPL: http://www.gnu.org/philosophy/pragmatic.es.html

Para llevar al cabo la primera opción, podríamos escribirle una carta a
la PSF en conjunto y luego cada uno enviarla a sus diferentes mails.
Para conseguir más aliados podemos difundir los ideales de libertad
entre los programadores de Python, probablemente ellos no los conozcan y
sólo sepan de la iniciativa del código abierto.

Fuentes:
https://trisquel.info/es/issues/
https://trisquel.info/es/issues/20439
https://savannah.nongnu.org/bugs/?48269
http://www.gnu.org/philosophy/pragmatic.es.html
https://pypi.python.org/pypi?:action=browse&c=90

jorgesumle
Offline
Joined: 06/01/2016

¡Adelante con la primera opción! ¿Qué ejemplos hay en PyPI de programa o librería privativo? Es que aún no conozco ninguno.

Majin Buu
Offline
Joined: 11/05/2016

Buscar programas privativos: https://pypi.python.org/pypi?:action=browse&c=90

Si navegas por el repositorio, también podrás encontrar programas "libres" para uso personal, académico, no comercial, etc. Y también otras licencias que son de código abierto pero no son de software libre, mira http://www.gnu.org/licenses/license-list.html para una explicación de porqué algunas licencias que parecen de software libre en realidad no lo son.

jorgesumle
Offline
Joined: 06/01/2016

He encontrado un programa llamado pypi-cli (https://pypi.python.org/pypi/pypi-cli/0.4.1); sirve para ver información sobre programas alojados en PyPI de forma muy sencilla. Nos permite ver la licencia, el número de descargas...
El programa tiene una licencia Expat y se puede instalar con pip. sudo pip install pypi-cli Adjunto una captura para que veáis su funcionamiento.

Captura de pantalla de 2016-12-04 14:13:33.png
Majin Buu
Offline
Joined: 11/05/2016

Mirar abajo

Majin Buu
Offline
Joined: 11/05/2016

pypi-cli puede ser una buena solución temporal. ¡Gracias por el aporte! Lo usaré a partir de ahora.

Aún así, necesitamos concretar el asunto. Propongo escribir una carta y entre todos enviarla a la mayor cantidad de sitios de contacto posible, en ella tenemos que pedir que:

(1) Sólo permitan paquetes libres en los repositorios, de acuerdo con la definición se software libre de GNU: http://www.gnu.org/philosophy/free-sw.html

(2) Pidan a los desarrolladores de los programas privativos liberar su software bajo una licencia libre adecuada.

(3) Si en PyPI hay gestores de paquetes que acceden a otros repositorios de software (no conozco ninguno), estos repositorios deben cumplir con el punto (1) y (2).

¿Alguien con buena redacción puede escribir la carta? El objetivo de la PSF es de mejorar el lenguaje de programación Python, y Python no puede mejorar si en su repositorio oficial hay paquetes que no respetan la libertad de los usuarios y niegan el acceso al conocimiento. Tampoco es ético que algunos programadores se aprovechen de la generosidad de Python para escribir software y privar de la libertad a sus usuarios con él. Si alguien tiene algún otro argumento podemos incluirlo sin problemas.

También deberíamos difundir los ideales de libertad entre los programadores de Python para convencerlos y conseguir más aliados, probablemente ellos no los conozcan y solo sepan del código abierto.

Yo iría por la segunda opción SÓLO si después de intentarlo mucho y por mucho tiempo aún no lo conseguimos.

jorgesumle
Offline
Joined: 06/01/2016

Podemos intentar cambiar eso quejándonos. Pero si los creadores de pip lo han permitido es porque para ellos la libertad es irrelevante (defienden el Open Source). Recordemos que Guido Van Rossum (el de la foto) es "el dictador benevolente", así lo llaman, de Python. En la misma discusión de la lista de correo a la que enlazas, parece que llegan a la conclusión de que lo mejor es hacer una versión "más libre" de pip, que compruebe el tipo de licencia e incluirla en los repositorios de las distribuciones libres. Hacer este programa no debe ser muy difícil.

Majin Buu
Offline
Joined: 11/05/2016

He llegado a la conclusión de que es mejor llevar al cabo la opción 1, 2 y 4 en paralelo.

Por un lado, remover pip de Trisquel por las razones mencionadas anteriormente y hacer el repositorio <> para que el resto de la comunidad del software libre se entere del problema y no tener que esperar una respuesta por parte de la PSF. Y por otro difundir los ideales de libertad entre la comunidad de Python y así entre todos intentar convencer a Guido de adoptar la política mencionada en el punto 1.

Es difícil, pero podemos intentar. Otros lenguajes de programación interpretados tienen el mismo problema, pero Python es más importante en Trisquel ya que es parte del sistema.

dcapeletti
Offline
Joined: 04/03/2014

Pregunto...¿no se podría hacer un script en python para que cuando uno va a instalar software verifique la licencia?
Que la muestre y diga:
Es software libre, caso contrario, software privativo.

En lugar de usar pip directamente, usarías este script que llama a pip pero antes verifica lo que se va a instalar.

Sds

Majin Buu
Offline
Joined: 11/05/2016

jorgesumle respondió arriba

Es inútil hacer un script que verifique la licencia, igualmente podrías instalar paquetes que no son libres, y Trisquel no cumpliría con la FSDG.

dcapeletti
Offline
Joined: 04/03/2014

Pero los usuarios que valoran su libertad podrían utilizar este script para verificar la licencia antes de instalarlo.

Sds

Megver83
Offline
Joined: 12/21/2015

¿Ne es posible crear un blacklist como el de Parabola?
https://wiki.parabola.nu/Blacklist_%28Espa%C3%B1ol%29

Majin Buu
Offline
Joined: 11/05/2016

Eso es lo quiero hacer. Para eso podemos crear un script que filtre los paquetes y sólo coloque en nuestro repositorio los que sean libres y cuyas dependencias sean libres a la vez.

¿Hay alguien interesado? ¿Lightmoon quizás?

Lightmoon

I am a member!

Offline
Joined: 12/16/2013

Para eso, supongo, que hará falta un servidor y un alojamiento. Para poner eso en Trisquel lo tiene que hacer el administrador, es decir, Rubén. No sé como funcionan los paquetes en Python, y tampoco sé como decargar todos desde Pypi. Además, cuando alguien usa pip este se conecta con el servidor de Pypi (supongo), por lo que habrá que modificar pip y hacer un fork. Quizás yo lo veo complejo, pero estoy dispuesto a ayudar y aprender.

Saludos.

Majin Buu
Offline
Joined: 11/05/2016

¡Gracias por mostrar interés! La FSF puede alojar el repositorio si le informamos del problema: http://lists.nongnu.org/archive/html/gnu-linux-libre/2016-04/msg00116.html (el penúltimo párrafo):
If you can make such a filtered free repository privately, the FSF
can arrange to host it for public use.

Tenemos que hacer cuatro cosas:

1) Escribir el script
2) Crear el repositorio
3) Modificar pip para que use nuestro repositorio como fuente
4) Crear una página web con información sobre los paquetes

Además de modificar pip para que apunte al repositorio, pensaba también en la posibilidad de que el usuario añada repositorios externos (como en apt-get o aptitude) y que antes de instalar un paquete se informe sobre la licencia.

PD: Yo tampoco sé mucho de Python, así que no te preocupes.

jorgesumle
Offline
Joined: 06/01/2016

Lo mejor es lo que dice Lightmoon: hacer un fork de pip que compruebe si el programa es libre antes de instalarlo. Yo me ofrezco a ayudar cuando disponga de más tiempo.

jorgesumle
Offline
Joined: 06/01/2016
Majin Buu
Offline
Joined: 11/05/2016

Hacer un fork para que pip detecte si un paquete es libre no es una mala idea. Sin embargo, el proceso sería muy poco transparente y no solucionaría el problema de fondo.

Majin Buu
Offline
Joined: 11/05/2016
minipost
Offline
Joined: 08/29/2015

Una cosa hize un parche un poco bruto pero sirve:
Es un script echo en python usando la consola de comandos para sacar si es libre o no basandome en la lincencia.
Tengo mas ideas pero necessito un codigo funcional de pypi o como se importa en python gracias.
A a qui va el codigo fuente:
https://www.0bin.net/paste/6R7roYLjvzOBHw0O#fZvQPO-2K8eS2n8sGYWOIPVLFmK7C1VUVE5VQbSAL8K

CitoplasmaX
Offline
Joined: 11/24/2016
Megver83
Offline
Joined: 12/21/2015

otra alternativa mucho más fácil que crear un repositorio con un script es crear un paquete que haga conflicto con los paquetes no-libres, como your-freedom de Parabola
https://www.parabola.nu/packages/libre/any/your-freedom/

lean donde dice "Conflicts"
No se si se puede hacer eso en pip, pues jamás lo he usado, pero si los paquetes pueden hacer conflictos, yo creo que esta es la solución más viable, rápida y fácil

jorgesumle
Offline
Joined: 06/01/2016

Sí intentas instalar una dependencia que no existe con pip, simplemente ocurre un error diciendo que dicho paquete no existe y no se lleva a cabo la instalación. Solo debemos crear un repositorio solo con paquetes libres, y hacer que nuestra versión apunte a ese repositorio. Los programas libres que tengan dependencias privativas no se podrán instalar porque no podrán cumplir sus dependencias. ¡Y problema solucionado! :)