História e Filosofia¶
O projeto BeeWare começou com uma pergunta simples: Por que as ferramentas que usamos como desenvolvedores Python não estão melhorando no mesmo ritmo que o restante da da tecnologia que usamos diariamente?
Python provou ser uma linguagem altamente capaz - acessível para iniciantes, mas poderosa nas mãos de especialistas. Python está rapidamente se tornando uma 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 treinamento de um dia que apresentam Python a pessoas sem experiência em programação; e, ao final do dia, os participantes desenvolveram e implantaram um site dinâmico baseado em banco de dados, implantado em um 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 padrão para Python ainda é uma janela de console 80x25. Para usuários que vieram de um ambiente Windows ou Apple, onde estão acostumados a interfaces gráficas altamente detalhadas e bem projetadas, esse flashback de 30 anos pode ser uma experiência completamente estranha.
E, sim, existem IDEs (ambientes de desenvolvimento integrado) que fornecem uma experiência de aplicativo nativo para escrever código. Mas essas ferramentas exigem que você adote, por completo, a maneira do IDE de ver um projeto. Em geral, elas introduzem tantas dores de cabeça no processo de desenvolvimento de desenvolvimento quanto resolvem.
E assim, ficamos com uma divisão interessante entre a "maneira antiga" de desenvolvimento do desenvolvimento Unix em uma janela de console e a "nova maneira" dos IDEs tudo-em-um. IDEs.
A Filosofia 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 em um significado de "todas as ferramentas devem usar uma interface de console". Entretanto, não há nada na filosofia filosofia do UNIX que diga que as ferramentas precisam usar uma interface de console. simplesmente foi assim que aconteceu.
O projeto BeeWare começou com a premissa de que podemos ter o melhor dos dois mundos. dois mundos. Podemos ter uma cadeia de ferramentas compostas que fazem uma coisa, bem. Mas essas ferramentas também podem expor sua funcionalidade usando uma uma interface gráfica de usuário avançada.
Mais do que apenas código¶
No entanto, não se trata apenas de código. Um projeto de software bem-sucedido requer documentação, habilidades de design, feedback e relatórios de bugs. A comunidade comunidade BeeWare reconhece que todas as contribuições são importantes - não apenas as que vêm como uma solicitação pull no GitHub.
Mesmo assim, é fácil pensar em um projeto em um 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, credos, orientações e expressões, orientações e expressões. O projeto BeeWare tem o compromisso de desenvolver e manter uma comunidade inclusiva, diversificada e acolhedora.
Para reforçar isso, 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 cabíveis.
Saudável e sustentável¶
Também é importante garantir que a comunidade seja acessível e sustentável. Infelizmente, tornou-se uma parte aceita 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 as únicas pessoas capazes de dedicar 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 fato de a depressão, a ansiedade e o 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 comprometimento de uma equipe 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, sabemos 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 sustentabilidade financeira é uma consideração fundamental na operação do projeto BeeWare 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 contribuam. Como comunidade, forneceremos mecanismos aceitos para que para que os indivíduos monetizem seu trabalho de maneira significativa e, sempre que possível possível, compensar as pessoas por seu trabalho, sem comprometer os ideais ideais do desenvolvimento de código aberto.
O objetivo¶
O objetivo final do projeto BeeWare: Ser capaz de fazer para software móvel e e desktop o mesmo que o Django fez para o software da Web: colocar nas mãos dos usuários colocar nas mãos dos usuários um conjunto de ferramentas e bibliotecas que lhes permitam desenvolver interfaces de usuário ricas e nativas e implementá-las em seus dispositivos. e implantá-las em seus dispositivos. Isso inclui:
- Ferramentas para permitir que o Python seja executado em diferentes dispositivos,
- Ferramentas para empacotar um projeto Python para que ele possa ser executado nesses dispositivos.
- Bibliotecas para acessar os widgets e recursos nativos dos dispositivos,
- Ferramentas para ajudar a desenvolver, depurar, analisar e esses projetos.
O objetivo é que esse conjunto de ferramentas seja suficientemente fácil de usar para para iniciantes usarem em um ambiente semelhante ao das Django Girls, mas mas poderosas o suficiente para que possam ser usadas para impulsionar o próximo Instagram, Pinterest ou Disqus.
O mais importante é que ele pretende fazer tudo isso como uma comunidade de código aberto. O processo de desenvolvimento de código aberto provou ser a maneira mais maneira mais confiável de desenvolver software robusto e confiável, e o fato de que qualquer pessoa poder acessar o software significa que todos podem começar com o mesmo conjunto de excelentes ferramentas, sejam eles especialistas ou amadores entusiastas.
Python em todos os lugares¶
Um projeto de computação moderno não pode ignorar o maior desenvolvimento em computação dos últimos 10 anos. O Python se orgulha de ser uma linguagem multiplataforma. Há 10 anos, ser multiplataforma 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 multiplataforma ainda é difícil de ser obtida.
O BeeWare adota as plataformas móveis e outras plataformas emergentes (como relógios e set-top-boxes) como um cidadão de primeira classe do ecossistema de computação. porque, se as pessoas têm esses dispositivos, por que não deveriam ser capazes de escrever software para eles em Python.
Nativo em todos os lugares¶
É fácil usar temas para obter uma plataforma cruzada. No entanto, é fácil identificar aplicativos que foram criados usando temas - eles são aqueles que não se comportam exatamente como qualquer outro aplicativo. Os widgets não têm a aparência correta, ou há uma barra de menu em uma janela em um aplicativo OS X. Os temas podem se aproximar bastante mas sempre há sinais de alerta.
Além disso, os widgets nativos são sempre mais rápidos do que um widget genérico temático. genérico temático. Afinal de contas, você está usando o recurso nativo do sistema que foi ajustado e otimizado, e não um mecanismo de desenho que foi colocado em camadas sobre um widget genérico.
Os temas também perdem muitos dos benefícios de acessibilidade das plataformas nativas. Os autores de sistemas operacionais modernos gastam muito tempo ajustando os recursos para pessoas com mobilidade, visão ou cognição prejudicadas. Se você usar widgets nativos, você geralmente obtém esses recursos gratuitamente. Se você reimplementar os widgets com um tema, você também terá que reimplementar os recursos.
O BeeWare usa widgets nativos e funcionalidade nativa, em vez de usar uma abordagem baseada em temas para o desenvolvimento de aplicativos.
Nativo do Python¶
O BeeWare também é uma estrutura que prioriza Python 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 em uma 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
design, faremos exatamente isso. Isso significa que usaremos geradores,
gerenciadores de contexto, chamadas assíncronas yield from e muito mais, a fim
de fornecer a melhor API nativa do Python para o desenvolvimento de aplicativos
multiplataforma.
Também estamos olhando para o futuro, o que significa que oferecemos suporte exclusivo ao Python 3 exclusivamente.
Experiência nativa¶
A experiência de uso de qualquer ferramenta começa com o processo de instalação. Parte da filosofia "Nativo em toda parte" do BeeWare é adotar mecanismos mecanismos nativos apropriados para a instalação. Se você estiver usando uma ferramenta no espaço do usuário, ela deve ser apresentada a você como um pacote que deve ser instalado da da mesma forma que você instalaria qualquer outra ferramenta, seja por meio de uma loja de aplicativos seja por meio de uma loja de aplicativos, um instalador ou um simples pacote executável. Os usuários finais não devem saber que você escreveu o aplicativo em Python.