Dronemapp, Software Livre e as Powerlibs

[Público alvo: desenvolvedores]

Cléber Zavadniak
6 min readMay 7, 2017
Meu desktop

Linux, Fluxbox, Firefox, lxterminal, zsh, Python, Django, Vue.js, vim, git… O que todos estes softwares tem em comum? Ora, é simples: todos eles são usados pela equipe de desenvolvimento da Dronemapp!

Ah, e são todos softwares livres, também…

Que é software livre?

De forma bem simplificada, software livre é um software cujo código-fonte é aberto: você pode lê-lo, modificá-lo e redistribuí-lo.

Por exemplo: eu poderia pegar o código-fonte do Firefox e alterá-lo. Digamos que eu faça com que o navegador somente acesse domínios terminados em “.org”. Eu passo a chamá-lo de “OrgFox” e posso distribuí-lo sem maiores problemas.

(Lembrando, obviamente, que o código é uma coisa e a identidade visual, imagens, ícones e fontes podem ser outra coisa. Cada caso é um caso.)

É claro que há discussões sobre a diferença entre “software livre” e “software com código aberto”, além das diversas licenças livres existentes hoje em dia (como BSD, MIT, GPL, LGPL e AGPL), cada uma com suas limitações (liberdade não é libertinagem, afinal) e especificidades. Mas, por ora, esses detalhes não são importantes. O que quero enfatizar agora é a força da comunidade.

Comunidade

Existe um conceito interessante entre os desenvolvedores que fazem uso de software livre: você faz mais do que simplesmente usar algumas bibliotecas ou utilitários: você colabora com eles.

Encontrou um bug? Você reporta da melhor maneira possível. Ou tenta corrigir por conta própria. Conseguiu corrigir? Você envia a correção para os “donos” do código.

Está faltando algo na documentação? Você tenta corrigir por conta própria. E depois envia a suas alterações para os “donos” do código.

Encontrou uma biblioteca quase perfeita, que faz 90% do que você precisa mas percebe que o foco do desenvolvimento é outro e os outros 10% nunca serão implementados? Você pode fazer teu próprio “fork”: você cria uma cópia do código, dá um novo nome e segue a vida como mantenedor da tua própria versão do antigo projeto, que agora pode caminhar conforme você achar melhor (mas, claro, entenda a licença do código original, antes, para saber quais são os deveres que acompanham este direito).

Enfim, há diversas maneiras de colaborar. Pode-se também traduzir uma parte do software, criar um novo tema visual, desenhar ícones ou até simplesmente divulgar o projeto.

Melhoria contínua

Projetos com um bom número de usuários geralmente entram em um ciclo muito legal de melhoria contínua: bugs são identificados e corrigidos rapidamente, a documentação vai ficando mais completa e mais clara e novas funcionalidades vão sendo implementadas de acordo com as necessidades reais dos usuários.

E as contribuições não vem apenas de indivíduos: curiosamente, embora os projetos (softwares, bibliotecas, frameworks, etc.) sejam “de grátis”, há uma porção de pessoas que acabam sendo pagas para melhorá-los. Afinal, se para resolver um problema dentro da sua empresa você precisa corrigir um bug em um projeto destes, a empresa está pagando pela melhoria de um projeto de software livre. E isso é uma troca muito saudável, pois todos estão construindo e todos estão ganhando.

Powerlibs

E já que nós, da Dronemapp, nos beneficiamos tanto do Software Livre, resolvemos transformar uma parte considerável do código na nossa V2 em um conjunto de bibliotecas (Python) distribuídas sob a licença MIT (além das contribuições eventuais que já fazemos com os projetos livres que usamos).

Origem

Tudo começou quando decidi usar o simples e direto DjangoRestless para criar a API REST da V2 ao invés do complicado e verborrágico DRF. Acontece que o DjangoRestless é um projeto que segue bem a Filosofia Unix: ele não tenta “abraçar o mundo”, te entregando todas as funcionalidades que acha que você vai precisar. O foco do projeto é criar APIs REST JSON e isso ele faz de maneira excepcional. Mas o restante você precisa implementar por conta própria.

Implementando, implementando…

E, de fato, fomos implementando: filtros, paginação, soft-delete, conversão de campos JSON, tradução de GeoJSON para WKT e outros. Depois precisamos de integração da plataforma com o SNS da Amazon e implementamos isso também. E, no final, acabamos com um conjunto de “companion tools” excelente, tanto para Django quanto para DjangoRestless.

Posteriormente, acabamos criando nosso próprio fork do DjangoRestless, também.

Divulgação

Todas essas implementações que mencionei são meramente ferramentas. Não estamos, nem de longe, colocando em risco o modelo de negócios da empresa. O “core business” está bem seguro e protegido. Mas não vemos problema algum em fazer nossa contribuição divulgando e distribuindo essas ferramentas que criamos.

Isso, na verdade, é também estratégico: para a Dronemapp é bom que mais pessoas se interessem por Django e DjangoRestless, por exemplo. E é bom que os desenvolvedores do mercado se familiarizem com as ferramentas que usamos, pois pretendemos expandir bastante nossa equipe de desenvolvimento. Ou seja: todos saem ganhando.

As Powerlibs são distribuídas via Github:

São bibliotecas Python contrudas de maneira a comporem-se todas sob o nome comum powerlibs , como em

powerlibs.aws.sns
powerlibs.django.contrib
powerlibs.django.restless.contrib

A documentação consta no README.md de cada projeto.

Filosofia

Philosofy, indeed.

Distribuímos múltiplos projetos menores porque não queremos que as powerlibs tornem-se aquele tipo de projeto tão massivo que mal consegue-se saber por onde começar a desvendá-lo. Queremos que cada um seja simples, fácil de usar e o mais sem firulas possível. E também não queremos adicionar dependências desnecessárias: você pode usar apenas as partes que realmente precisa.

Tentaremos evitar seguir “modinhas”, também. Parece que a cada X meses surge alguém com um novo “O Jeito Certo” de se fazer as coisas, mas uma leitura rápida da proposta, em geral, mostra (1) que não passa daquilo que todo bom programador já está cansado de saber e fazer ou (2) é algo completamente fora da realidade, geralmente apelando para “mais alguns níveis de indireção” e esquecendo-se que no mundo real “practicality beats purity”. Nessa tarefa de separar o joio do trigo, preferimos a abordagem mais cética: na dúvida, é joio.

Mas, no geral, mantendo-se a quantidade de linhas de código de cada projeto baixa o bastante, haverá pouca margem para “frescuras”. E esse é outro objetivo: evitar ao máximo que o código e a complexidade cresçam mais do que deveriam. Afinal,

Simple is better than complex

Resumo

A equipe de desenvolvimento da Dronemapp apoia de coração o Software Livre e achou uma maneira singela mas muito prática de colaborar. Esperamos que as powerlibs sejam úteis para outros assim como tem sido úteis para nós.

E viva a liberdadeêêêêÊÊÊÊÊÊ-i-ÊÊÊÊÊÊ-ÊÊÊÊÊÊÊÊÊ-ÊÊÊÊÊÊÊ!!1!!!!

Gostou? Recomende este artigo.

Quer trabalhar conosco? Então confira este outro artigo:

Se você é júnior ou não mora em Curitiba, não tem problema: envie-nos seus dados do mesmo jeito!

--

--