#2 Thiago Avelino | Pythonistas que você devia conhecer

1495497_10152040120833726_252377080_n

Thiago Avelino é uma das pessoas que tem grandes contribuições para a comunidade Open Source, trabalhando em projetos grandes como o Django, Plone e agora também um dos core-commiters do Bottle, um microframework web em Python.

Tendo em vista que muitas pessoas tem interesse de aprender em colaborar em projetos mas não sabem por onde começar, compartilho essa conversa que tive com o Thiago para ele falar mais sobre suas experiências e projetos.


Thiago, por favor fale um pouco de você.

Eu não sei muito o que falar de mim, mas sou casado e tenho um filho (que cá entre nós é lindo) que tem 1 ano, trabalho há mais de 7 anos com tecnologia, comecei trabalhar com infra e em pouco tempo comecei programar em Perl, trabalhei com diversas tecnologia (Perl, VB.Net, C++, C, Python, Ruby, Go, entre outras que estudei).

Tive uma fase da minha vida que passei empreendendo, onde tive uma startup e foi comprada por uma empresa de fora do Brasil. Muitos me pergunta se depois da venda da startup porque eu parei de empreender, com filho pequeno não é muito fácil empreender, até porque temos que viver uma vida de desapego de bens materiais (Ao menos o que nos dá conforto, carro por exemplo).

Hoje contribuo com alguns projetos open source, para saber mais de mim dê uma olhada no github e twitter.

https://github.com/avelino
https://twitter.com/avelino0

Eu fiz parte do sprint que a YACOWS havia feito para falar sobre o Opps CMS, que foi feito com Django, sendo utilizado para portais de alta visibilidade. Conte um pouco sobre quais foram as dificuldades e desafios encontrados.

Manter um software open source é um grande desafio. Quando nós desenvolvedores começamos a escrever qualquer código é para solucionar um problema X ou Y, sabendo mais ou menos qual será o nível das pessoas que irão usar. Já em projetos open source não é assim, pois o código está aberto e você não sabe quem irá usar, quais as necessidades reais que são um dos pontos importante para desenvolver um software.

Quando começamos o Opps CMS a YACOWS tinha a necessidade de colocar um portal no ar (ou seja, tínhamos algumas premissas), com isso começamos a versão 0.1.x do Opps, em mais ou menos 3 meses o portal já estava no ar, assim desenvolvemos a primeira versão do CMS em 3 meses.

Mas nem tudo são flores, depois de entregar o projeto comecei a ver que o CMS estava com característica que apenas o cliente precisava, ou seja, não era um CMS flexível e sim um CMS para o cliente X, eis que começamos a desenvolver a nova versão do CMS com novas ideias que discutimos nessa issue (https://github.com/opps/opps/issues/93), o CMS ter um ambiente de plugins (usando a base do Django de apps) e o core do CMS na versão 0.1.x não sabia exatamente o que estava acontecendo dentro dos plugins.

Um outro ponto é evolução rápida, isso realmente é complicado, chega em um ponto que não se sabe o que está implementado dentro do projeto, começando a implementar novos métodos sendo que tem outro implementado (provavelmente feito por outro contribuidor) que atende sua necessidade, ou seja, um projeto open source precisa de documentação (um ponto muito importante para qualquer projeto).

Tivemos problemas com algumas coisas do core do Django que tivemos que fazer alguns ajustes, estendendo classe para implementar a necessidade do CMS. Muitas ideia e decisões foram tiradas da arquitetura do Plone.

Para o que você indica a utilização de Plone? E quais são as vantagens desse CMS?

Plone é um excelente CMS, não só isso, eu em particular contribuí pouco com o projeto, mas tenho orgulho da comunidade e código Plone (100% testado).

Eu indico para uso de qualquer portal de conteúdo e intranet, ou seja, qualquer projeto que precise gerenciar conteúdo ele atente perfeitamente, ele tem uma estrutura de workflow extremamente flexível.

Sobre as vantagens do Plone, a comunidade Python deveria agradecer a existência dele pois via o Plone a comunidade Python tem uma abertura grande no governo Brasileiro, deixe citar algums motivos:

  • Segurança;
  • Workflow flexível;
  • Gerenciamento de conteúdo na mesma pagina do site (não tem um /admin);
  • Foco escritor (facilitando a entrada de dados no CMS);
  • Gerenciamento de imagens;
  • Desenvolvimento de novos recursos simplificado;
  • Zope como base do CMS, isso faz com que tenhamos uma base extremamente robusta;
  • Sistema de Portlets;
  • Desempenho;
  • Diversos outros;

Sei que irão me pergunta o porquê de desenvolver o Opps CMS. Para quem não tem domínio de Plone, a curva de aprendizado é grande, por isso a Opps existe, para quando você tem um time que já trabalha com Django e não tem o tempo para estudar como o Plone funciona.

Também temos o Nacho, um micro web-framework. Para o que ele serve?

Nacho
Nacho

O Nacho nasceu com a existência do Tulip (framework assíncrono para Python 3 mantido pelo Guido), hoje o projeto está parado por falta de tempo mas pretendo voltar mexer nele assim que sair o Python 3.4 (onde o Tulip se tornou a biblioteca asyncio no core do Python 3.4).

Ele é um framework para simplificar o desenvolvimento assíncrono de aplicações web com Python 3.4, criar um framework do zero foi uma iniciativa radical pois estava desenvolvendo um projeto que precisava de processamento paralelo e queria ver como estava se saindo o Python 3, com isso resolvi organizar e disponibilizar o código que estava escrevendo.

Como de forma rápida as pessoas podem começar a colaborar com projetos? 

Contribuir com software livre é um assunto de uma palestra que dei da Campus Party desse ano, eu recomendo a todos contribuírem, principalmente com os softwares que vocês usam no dia a dia, por exemplo trabalho com um framework web X (Django, Flask, Bottle e/ou qualquer outro), porque não contribuir com o projeto, contribuir não é só escrever código, dentro de um projeto open source tem diversas sub-áreas e necessidades, como design, testers, documentação e assim por diante.

Não existe uma fórmula mágica que eu possa falar para vocês, faça assim, isso vai depender de projeto para projeto, recomendo fortemente que comece a participar da comunidade local (nacional) e oficial do projeto, comece a dar ideias para o projeto, interagir com o projeto e use IRC (geralmente rede IRC) os desenvolvedores do projeto ficam muito online em canais de IRC, eu comecei a contribuir com o Django por uma demanda que surgiu no IRC.

Uma coisa que ajuda muito os projetos open source quando esta no Github é dá “star”, se você gostou do projeto, dê star, isso ajuda a você localizar o projeto futuramente.

E por último seu projeto mais recente é o Open Mining, que é uma aplicação de análise escrita em Python, feito com Numpy, Riak, MongoDB e Bottle.

O projeto final será uma aplicação de BI, ele nasceu da necessidade da empresa que eu trabalho UP!  onde a diretoria precisa saber como anda a empresa. Sei que existe o Pentaho (e outros softwares open source de BI), passei 1 mês estudando o Pentaho e realmente é muito bom, só que peca na parte que eu jugo mais importante para o projeto, o dashboard (nome usado para montar um conjunto de relatório). Para criar um dashboard dentro do Pentaho você usa um plugin chamado ctools (desenvolvido pela comunidade e precisa evoluir muito) ou você compra a licença do Pentaho, julgo mais importante pois é onde o usuário final vai usar.

Com essa carência do Pentaho logo vi uma ótima oportunidade no mercado de BI para desenvolver um novo projeto open source que seja simples e flexível criar dashboard.

Começamos o projeto com Tornado que é um ótimo framework, por gostar muito de gevent resolvi mudar para Bottle com gevent (para processar async onde precisa), o projeto é um SPA (Single-page application) cenário ideal para o Bottle (por isso resolvi mudar para Bottle).

O projeto está em desenvolvimento, seguem alguns screenshots – https://github.com/avelino/mining#screenshot

Usamos o Riak (Em um futuro próximo será possível usar outros banco como hadoop) como data warehouse e MongoDB como armazenamento de dados do admin.

Desde já convido a todos a participar do projeto, https://github.com/avelino/mining (estou 100% disposto a ajudar no que for necessário).


Há algum tempo o Marcel Caraciolo fez uma série muito bacana entrevistando diversas pessoas da comunidade, e nessa oportunidade o Thiago também foi entrevistado. Caso queria saber mais a respeito, dê uma olhada. E também outra palestra sobre MongoDB.

Aproveite e veja também sobre outro pythonista, o Alex Gaynor.

4 comentários em “#2 Thiago Avelino | Pythonistas que você devia conhecer

  1. Muito legal mesmo essa entrevista. Conheci o Avelino por acaso ano passado na Python Brasil.
    A gente trocou umas figurinhas e já deu pra ver que além de manjar muito, o cara contribui capacete pro Software Livre.
    Show de bola!

  2. Muito bom! Conheço o Avelino há um tempo e ele sempre foi um grande contribuidor da comunidade Open Source, principalmente de Python, mas tb já trabalhei com ele com PHP e JS e posso falar que ele é um cara fenomenal que sabe além de programar muito bem, sabe gerir pessoas como ninguém. Agradeço-o por tudo que me ensinou para que eu pudesse galgar passos maiores em minha carreira além de ser um dos co-criadores do Sampa.js comigo.

  3. Parabéns Eric, ótima entrevista.. Infelizmente não conheço o Avelino, acompanho seus trabalhos desde que comecei com Python!!

    Só agora estou participando da comunidade Pyhton.. Sou do RS, Santa Maria, e aqui a comunidade é bem parada, mas essa ano (acredito que antes do FISL) vamos organizar o primeiro evento, específico, de Python o/
    Show de bola cara, continue assim e parabéns pelo blog!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s