Saltar a contenido

Historia y filosofía

El proyecto BeeWare comenzó con una simple cuestión: ¿Por qué las herramientas que usamos como desarrolladores de Python no mejoran al mismo ritmo que el resto tecnología que utilizamos a diario?

Python ha demostrado ser un lenguaje altamente capaz, accesible para los novatos, pero potente en manos de los expertos. Python se está convirtiendo rápidamente en una parte importante del panorama del análisis de datos, la informática científica y el desarrollo web. Iniciativas como Django Girls han demostrado que, utilizando Python, es posible impartir cursos de formación de un día de duración para introducir a personas sin experiencia en la programación en Python; al final del día, los asistentes han desarrollado e implementado un sitio web dinámico respaldado por una base de datos, implementado en un servidor visible públicamente.

Sin embargo, la experiencia de desarrollo para alguien que escribe en Python a veces refleja más los primeros años 90 que el nuevo milenio. El entorno de desarrollo predeterminado para Python sigue siendo una ventana de consola de 80×25. Para los usuarios que provienen de un entorno Windows o Apple, donde están acostumbrados a interfaces gráficas muy detalladas y bien diseñadas, este retroceso de 30 años puede ser una experiencia completamente ajena.

Y, sí, hay varios IDE (Entornos de Desarrollo Integrado) que proporcionan una experiencia de aplicación nativa para escribir código. Pero esas herramientas requieren que se adopte, al por mayor, la forma de IDE de ver un proyecto. A menudo introducen tantos dolores de cabeza en el proceso de desarrollo como los que resuelven. de desarrollo.

Y así, nos quedamos con un interesante cisma, entre la «manera antigua» de desarrollo Unix en una ventana de consola, y la «manera nueva» de los IDE de todo-en-uno.

La Filosofía Unix

Sin embargo, no tiene que ser de esta manera. El principio fundamental de la Filosofía Unix es que «cada herramienta hace una cosa, y la hace bien». Se trata de una filosofía muy potente, que permite crear cadenas de herramientas extremadamente potentes al reunir un conjunto de herramientas independientes y especializadas.

Desafortunadamente, la mayoría de las herramientas de UNIX han convertido esto en «todas las herramientas deben usar una interfaz de consola». Sin embargo, no hay nada en la filosofía UNIX que diga que las herramientas tienen que usar una interfaz de consola - simplemente se ha convertido en eso.

El proyecto BeeWare partió de la premisa de que podemos tener lo mejor de ambos mundos. Podemos tener una cadena de herramientas componibles que cada uno hace una cosa, bien. Pero esas herramientas también pueden exponer su funcionalidad utilizando una interfaz gráfica de usuario rica.

Más que solo código

Pero, sin embargo, tan solo no se trata de código. Un proyecto de software de éxito requiere documentación, habilidades de diseño, retroalimentación e informes de fallos. La comunidad BeeWare reconoce que todas las contribuciones son importantes — no sólo las que llegan como pull request en GitHub.

Incluso entonces, es fácil pensar en un proyecto en el vacío, como la suma de todas las contribuciones. Pero nunca es así. Un proyecto de código abierto es una comunidad.

Diversidad e inclusión

Una comunidad diversa es una comunidad fuerte. Esto significa aceptar a personas de todos los niveles de experiencia, de todos los orígenes, de todas las razas, credos, orientaciones y expresiones. El proyecto BeeWare se compromete a desarrollar y mantener una comunidad integradora, diversa y acogedora.

Para respaldar esto, tenemos una oferta abierta para asesorar a cualquiera que quiera participar como colaborador, y un Código de Conducta que se aplica de forma rigurosa. Cualquier denuncia de infracción de dicho código de conducta, incluso por parte de miembros veteranos de la comunidad, se tratará con respeto y se tomarán las medidas apropiadamente.

Saludable y sostenible

También es importante asegurarse que la comunidad sea accesible y sostenible. Desgraciadamente, se ha convertido en parte aceptada de la cultura del que los proyectos de Código Abierto "verdaderos" deben ser desarrollados enteramente por voluntarios. Esto actúa como una barrera de entrada para muchos grupos: la única gente capaz de gastar su tiempo libre de manera voluntaria es la de aquellos que tienen tiempo libre.

Además suele provocar agotamiento y otras incidencias de salud mental entre los colaboradores. El hecho de que la depresión, la ansiedad y el agotamiento sean tan comunes en las comunidades de desarrollo de software no debería ser considerado una medalla de honor, ni una demostración del compromiso de puede ser un equipo de desarrollo. Es un problema que debe abordarse de frente, de la misma manera que se abordaría un fallo del software: con soluciones inmediatas y planes a largo plazo para quitar la causa sistémica del problema.

Aunque valoramos enormemente las contribuciones de los voluntarios, también sabemos que los esfuerzos voluntarios por sí solos no son una comunidad sana y sostenible. Por ello, la sostenibilidad financiera es una consideración clave en el funcionamiento del proyecto BeeWare. Como comunidad, no ignoramos el papel que debe desempeñar el dinero en la provisión de los recursos que permiten a la gente empezar y seguir contribuir. Como comunidad, proporcionaremos mecanismos aceptados para monetizar su trabajo de forma significativa y, siempre que sea posible, compensar a la gente por su trabajo, sin comprometer los ideales del desarrollo de Código Abierto.

El logro

El logro final del proyecto BeeWare: poder hacer para el software de móvil y escritorio de cara al usuario lo mismo que Django ha hecho para el software web: poner en manos de los usuarios un conjunto de herramientas y bibliotecas que les permita desarrollar interfaces de usuario ricos y nativos, y desplegarlos en sus dispositivos. Esto incluye:

  • Herramientas que habiliten a Python ejecutar en diferentes dispositivos,
  • Herramientas para empaquetar un proyecto Python tal que pueda ejecutarse en esos dispositivos,
  • Bibliotecas para acceder a los widgets y capacidades nativas de los dispositivos,
  • Herramientas para ayudar a desarrollar, depurar, analizar en estos proyectos.

El propósito es que este conjunto de herramientas sea fácil de usar para novatos en un entorno para utilizar en un ajuste de un Django Girls; pero lo suficientemente potentes como para que puedan usarse para dirigir el próximo Instagram, Pinterest o Disqus.

Lo más importantemente, se aspira hacer todo esto como una comunidad de Open Source. El proceso de desarrollo de Open Source ha demostrado ser la manera más fiable para desarrollar software robusto y fiable, y el hecho que cualquiera puede acceder al software significa que cada uno puede iniciar con el mismo conjunto de herramientas excelentes, ya sean expertos o aficionados entusiastas.

Python en todas partes

Un proyecto informático moderno no puede ignorar el mayor avance en informática de los últimos 10 años. Python se enorgullece de ser un lenguaje de multiplataforma. Hace 10 años, ser multiplataforma significaba estar disponible para Windows, macOS y Linux. Hoy en día, la informática móvil es mucho más importante. A pesar de esto, no hay muchas opciones buenas para programar en Python sobre plataformas móviles, y la codificación móvil multiplataforma aún es elusiva.

BeeWare adopta el móvil y otras plataformas emergentes (como relojes y decodificadores) como un ciudadanos de primera clase del ecosistema informático; porque si la gente tiene estos dispositivos, ¿por qué no van a ser capaces de escribir software para ellos mismo en Python?

Nativo en todas partes

Es fácil utilizar temas para lograr la multiplataforma. Sin embargo, es fácil apuntar a aplicaciones que se han construido utilizando temas; son los que no se comportan como cualquier otra aplicación. Los widgets no se ven bastante bien, o hay una barra de menú en una ventana de una aplicación OS X. Los temas pueden acercarse bastante, pero siempre hay señales reveladoras.

Además, los widgets nativos siempre son más rápidos que un widget genérico temático. Después de todo, estás usando la capacidad nativa del sistema que ha sido sintonizado y optimizado, no un motor de dibujo que se ha superpuesto sobre un widget genérico.

Los temas también desaprovechan muchas de las ventajas de accesibilidad de las plataformas nativas. Los autores de los sistemas operativos modernos dedican mucho tiempo a mejorar la accesibilidad para las personas con discapacidades motrices, visuales o cognitivas. Si usas widgets nativos, usualmente obtienes estas mejoras gratis. Si re‐implementas los widgets con un tema, también hay que re‐implementar las asequibilidades.

BeeWare utiliza widgets y funcionalidad nativos, en lugar de utilizar un enfoque basado en temas para el desarrollo de aplicaciones.

Nativo de Python

También BeeWare es una estructura trabajo «Python first» sin disculpa. Nos gusta Python. Nos gusta su aspecto y su manera de trabajar. Si Python no está disponible como opción de primera clase en una plataforma concreta, haremos todo lo necesario para que Python esté disponible como lenguaje de desarrollo. Y cuando tengamos la oportunidad de adoptar el lenguaje Python para un API o un diseño, lo haremos. Eso significa que utilizaremos generadores, gestores de contexto, invocaciones asíncronas yield from y mucho más, con el fin de proporcionar la mejor API nativa de Python para el desarrollo de aplicaciones multiplataforma.

También estamos mirando hacia el futuro; esto significa que apoyamos Python 3 exclusivamente.

Experiencia nativa

La experiencia de uso de cualquier herramienta empieza con el proceso de instalación. Parte de la filosofía «Native everywhere» de BeeWare consiste en adoptar mecanismos nativos para la instalación. Si utilizas una herramienta de espacio de usuario, sería presentado como un paquete que está para ser instalada de la misma manera que otra herramienta; ya sea a través de una app store, un instalador o un simple paquete ejecutable. Los usuarios finales no sabrían que está escrita la aplicación en Python.