História e Filosofia¶
O projeto BeeWare começou com uma pergunta simples: Porque as ferramentas que usamos como desenvolvedores Python não estão a melhorar ao mesmo ritmo que o resto da tecnologia que usamos diariamente?
Python provou ser uma linguagem altamente capaz - apropriada para iniciantes, mas poderosa nas mãos de especialistas. Python está rapidamente a tornar-se numa parte importante do cenário de análise de dados, computação científica e desenvolvimento web. E iniciativas como Django Girls demonstraram que, usando Python, é possível oferecer cursos de treino de um dia que apresentam Python a pessoas sem experiência em programação; e no final do dia, os participantes desenvolveram e implementaram um sítio web dinâmico baseado em base de dados, implementado num servidor visível ao público.
No entanto, a experiência do desenvolvedor para alguém que escreve Python às vezes reflete mais o início dos anos 90 do que o novo milénio. O ambiente de desenvolvimento predefinido para Python ainda é uma janela de consola 80x25. Para utilizadores que vieram de um ambiente Windows ou Apple, onde estão acostumados a interfaces gráficas altamente detalhadas e bem projetadas, esse recuar no tempo de 30 anos pode ser uma experiência completamente estranha.
E, sim, existem IDEs (Ambientes de Desenvolvimento Integrado) que fornecem uma experiência de aplicação nativa para escrever código. Mas essas ferramentas exigem que adote, por completo, a maneira do IDE de ver um projeto. Em geral, elas introduzem tantas dores de cabeça no processo de desenvolvimento como as que resolvem.
E assim, ficamos com uma cisma interessante entre a "maneira antiga" do desenvolvimento Unix numa janela de consola e a "nova maneira" dos IDEs tudo-em-um.
A Filosofia do Unix¶
No entanto, não precisa ser assim. O princípio fundamental da filosofia Unix é que “cada ferramenta faz uma coisa, e faz bem”. Essa é uma filosofia muito poderosa, que permite a composição de cadeias de ferramentas extremamente poderosas, reunindo um conjunto de ferramentas independentes e altamente focadas.
Infelizmente, a maioria das ferramentas UNIX transformou isso num significado de "todas as ferramentas devem usar uma interface de consola". No entanto, não há nada na filosofia do UNIX que diga que as ferramentas precisam usar uma interface de consola - as coisas simplesmente tornaram-se assim.
O projeto BeeWare começou com a promessa de que podemos ter o melhor dos dois mundos. Podemos ter uma cadeia de ferramentas compostas que fazem uma coisa, e bem. Mas essas ferramentas também podem expor a sua funcionalidade usando uma interface gráfica de utilizador rica.
Mais do que apenas código¶
Trata-se de ser mais do que apenas código. Um projeto de software bem sucedido requer documentação, habilidades de desenho, respostas e relatórios de bugs. A comunidade BeeWare reconhece que todas as contribuições são importantes - não apenas as que vêm como um pedido de puxar no GitHub.
Mesmo assim, é fácil pensar em um projeto num vácuo, como a soma de todas as contribuições. Mas esse nunca é o caso. Um projeto de código aberto é sobre a comunidade.
Diversidade e inclusão¶
Uma comunidade diversificada é uma comunidade forte. Isso significa aceitar pessoas de todos os níveis de experiência, de todas as origens, de todas as raças, crenças, orientações e expressões. O projeto BeeWare tem o compromisso de desenvolver e manter uma comunidade inclusiva, diversificada e acolhedora.
Para apoiar isto, temos uma oferta aberta para orientar qualquer pessoa que queira se envolver como colaborador e um [Código de Conduta] que é rigorosamente aplicado. Quaisquer denúncias de violações desse código de conduta — mesmo por membros seniores da comunidade — serão tratadas com respeito e tomadas as medidas apropriadas.
Saudável e sustentável¶
Também é importante garantir que a comunidade seja acessível e sustentável. Infelizmente, tornou-se uma parte aceite da cultura do Código Aberto que os "verdadeiros" projetos de Código Aberto precisam ser desenvolvidos inteiramente por voluntários. Isso funciona como uma barreira de entrada para muitos grupos - as únicas pessoas capazes de dedicar o seu tempo livre ao voluntariado são aquelas que têm tempo livre.
Isso também leva frequentemente ao esgotamento e a outros problemas de saúde mental entre os colaboradores. O facto que depressão, ansiedade e esgotamento serem tão comuns nas comunidades de desenvolvimento de software não deve ser considerado um motivo de orgulho ou uma demonstração do compromisso duma equipa de desenvolvimento. É um problema que precisa ser enfrentado de frente e tratado da mesma forma que um bug de software seria tratado — com soluções imediatas e planos de longo prazo para remover a causa sistémica do problema.
Embora valorizemos muito as contribuições dos voluntários, também sabemos que os esforços voluntários por si só não são a maneira de desenvolver uma comunidade saudável e sustentável. Por esse motivo, a sustentabilidade financeira é uma consideração fundamental na operação do projeto BeeWare. Como comunidade, não ignoramos o papel que o dinheiro tem a desempenhar no fornecimento dos recursos que permitem que as pessoas comecem e continuem a contribuir. Como comunidade, vamos fornecer mecanismos aceites para que os indivíduos monetizem o seu trabalho de maneira significativa e, sempre que possível, compensar as pessoas pelo seu trabalho, sem comprometer os ideais do desenvolvimento de Código Aberto.
O objetivo¶
O objetivo final do projeto BeeWare: Ser capaz de fazer software para dispositivos móveis e ambiente de trabalho, o mesmo que o Django fez para o software da Web: colocar nas mãos dos utilizadores um conjunto de ferramentas e bibliotecas que lhes permitam desenvolver interfaces de utilizador ricas e nativas e implementa-las nos seus dispositivos. Isto inclui:
- Ferramentas que permitam que o Python seja executado em diferentes dispositivos,
- Ferramentas para empacotar um projeto Python para que ele possa ser executado nesses dispositivos,
- Bibliotecas para aceder aos widgets e capacidades nativas dos dispositivos,
- Ferramentas para ajudar a desenvolver, depurar, analisar esses projetos.
O objetivo é que esse conjunto de ferramentas seja suficientemente fácil de usar para iniciantes usarem num ambiente semelhante ao das Django Girls, mas poderosas o suficiente para que possam ser usadas para impulsionar o próximo Instagram, Pinterest ou Disqus.
O mais importante, pretende fazer tudo isto como uma comunidade de Código Aberto. O processo de desenvolvimento de Código Aberto provou ser a maneira mais fiável de desenvolver software robusto e confiável, e o facto de que qualquer pessoa poder aceder ao software significa que todos podem começar com o mesmo conjunto de excelentes ferramentas, sejam eles especialistas ou amadores entusiastas.
Python em todo o lado¶
Um projeto de computação moderno não pode ignorar o maior desenvolvimento em computação dos últimos 10 anos. O Python orgulha-se de ser uma linguagem multi-plataforma. Há 10 anos atrás, ser multi-plataforma significava estar disponível para Windows, macOS e Linux. Hoje em dia, a computação móvel é muito mais importante. Apesar disso, não há muitas opções boas para a programação Python em plataformas móveis, e a codificação móvel multi-plataforma ainda é evasiva.
O BeeWare adota as plataformas móveis e outras plataformas emergentes (como relógios de pulso e descodificadores) como um cidadão de primeira classe do ecossistema de computação - porque se as pessoas têm esses dispositivos, porque não deveriam ser capazes de escrever software para eles em Python.
Nativo em todo o lado¶
É fácil usar temas para obter uma plataforma cruzada. No entanto, é fácil identificar aplicações que foram criadas usando temas - elas são aquelas que não se comportam exatamente como qualquer outra aplicação. Os widgets não têm a aparência correta, ou há uma barra de menu numa janela numa aplicação OS X. Os temas podem se aproximar bastante - mas sempre há sinais reveladores.
Além disso, os widgets nativos são sempre mais rápidos do que um widget genérico temático. Afinal de contas, está a usar o recurso nativo do sistema que foi ajustado e otimizado, e não um mecanismo de desenho que foi colocado em camada no topo dum widget genérico.
Os temas também perdem muitos dos benefícios de acessibilidade das plataformas nativas. Os autores de sistemas operativos modernos gastam muito tempo a ajustar os recursos para pessoas com mobilidade, visão ou cognição prejudicadas. Se usar widgets nativos, geralmente obtém esses recursos gratuitamente. Se re-implementar os widgets com um tema, também terá que re-implementar os recursos.
O BeeWare usa widgets nativos e funcionalidade nativa, em vez de usar uma abordagem baseada em temas para o desenvolvimento de aplicações.
Nativo do Python¶
O BeeWare também é uma estrutura de "Python em primeiro lugar" sem reservas. Gostamos de Python. Gostamos da sua aparência e do seu funcionamento. Se Python não estiver disponível como opção de primeira classe numa plataforma específica, faremos o que for necessário para disponibilizar Python como linguagem de desenvolvimento. E quando tivermos a oportunidade de adotar a linguagem Python para uma API ou um desenho, faremos exatamente isso. Isto significa que usaremos geradores, gestores de contexto, chamadas assíncronas yield from e muito mais, a fim de fornecer a melhor API nativa do Python para o desenvolvimento de aplicações multi-plataforma.
Também estamos a olhar para o futuro, o que significa que suportamos o Python 3 exclusivamente.
Experiência nativa¶
A experiência de usar qualquer ferramenta começa com o processo de instalação. Parte da filosofia "Nativo em todo lado" do BeeWare é adotar mecanismos nativos apropriados para a instalação. Se você estiver a usar uma ferramenta no espaço do utilizador, ela deve ser apresentada a si como um pacote que deve ser instalado da mesma forma que instalaria qualquer outra ferramenta, seja por meio de uma loja de aplicações, um instalador ou um simples pacote executável. Os utilizadores finais não devem saber que você escreveu a aplicação em Python.