Se o meu Foswiki falasse ...

Já faz algum tempo que eu não posto nada aqui. Para inagurar 2010, nesse post eu gostaria de contar um pouco da minha história num dos projetos de software livre que eu colaboro a mais tempo: o Foswiki. Apesar do projeto existir com esse nome há a apenas pouco mais de um ano, a comunidade que o desenvolve trabalha nele há quase dez anos.

Às vezes é difícil descrever o que é o Foswiki pra alguém que não o conhece. "Como descrever o Foswiki durante um encontro com um amigo no elevador" é um debate recorrente na comunidade. A minha descrição marketeira seria a seguinte: o Foswiki é um wiki integrado a um banco de dados; seus usuários podem, num mesmo espaço virtual, colaborar na criação de um texto e criar aplicativos para gerenciar diversos tipos de informação. Incidentalmente ele serve também como um sistema de gerenciamento de conteúdo avançado e pode ser usado para fazer websites.

Uma descrição tecnicamente mais precisa é a seguinte: Foswiki é uma plataforma wiki que segue a filosofia de wiki estruturado: cada tópico do wiki, além do seu texto, pode conter dados estruturados (campos) de diversos tipos, e esses campos podem ser usados em aplicações que realizam busca, classificação, inserção/ateração desses dados, entre outras coisas. Além disso o Foswiki é altamente extensível e conta com uma ampla gama de extensões que adicionam funcionalidade: avisos de atualização por e-mail, galerias de imagens, gráficos, skins, busca SQL-like, busca full text, ferramentas de desenvolvimento, planilha eletrônica, impressão e exportação de PDF. A lista é tão grande que é mais fácil conferir a lista completa e procurar pelo que for do seu interesse.

Tudo começou no grupo de administração da rede do IM, o antigo GAVRI. Precisávamos de uma plataforma onde pudéssemos documentar nossas atividades de uma forma um pouco mais amigável do que os relatórios em arquivos texto que usávamos até então. Isso deveria ser 2001, e wikis na época era uma novidade.  Depois de tentar o PhpWiki, o que não deu muito certo, encontramos o TWiki® e sentimos que com aquele dava pra ir em frente. A primeira usuária externa ao grupo foi a professora Sônia, que queria colocar colocar um curso de Matemática Básica (nome dado à disciplina de Geometria Analítica no IM, até hoje eu não sei por quê) on-line e foi nossa cobaia. O wiki do IM, que depois virou wiki do DCC, ganhou uma quantidade bastante grande de usários, e cresceu tanto que hoje são usados dois wikis separados, um para disciplinas do departamento, mantido restrito aos usuários da rede e um outro público, onde projetos apoiados pelo departamento (e.g. o PSL-BA) e alguns dos seus grupos de pesquisa teem suas páginas e espaços de trabalho.

Em 2004 fui morar em Porto Alegre pra cursar o mestrado do Instituto de Informática da UFRGS, e acabei me envolvendo na ASL. Comecei a administrar o wiki.softwarelivre.org, que hoje é usado por vários grupos de software livre como site e/ou plataforma colaborativa, e que é possivelmente o maior site Foswiki que eu conheço. A essa altura eu já era um usuário e administrador experiente, com 3 anos de prática, e estava me coçando pra ir mais longe.

Eu comecei a contribuir ainda na época do TWiki®. Resolvi começar no projeto através do desenvolvimento de plugins, sempre tentando resolver algum problema meu: o meu primeiro plugin foi o BibliographyPlugin. O objetivo dele é gerenciar de forma estruturada referências bibliográficas usadas num texto. O seu design é mais ou menos inspirado no BibTeX. Depois disso veio o SvgPlugin, para exibir imagens SVG no corpo do texto; na época não existia ainda suporte nativo a SVG nos browsers modernos, e esse plugin rasterizava os desenhos usando Image::LibRSVG e gerava uma referência a uma rasterização do desenho em PNG, e dessa forma o desenho podia ser exibido no corpo do texto. Na época eu também iniciava no Debian, e acabei empacotando essa biblioteca pra facilitar a instalação do plugin. Depois disso eu e Aurélio nos aventuramos em fazer uma skin que possibilitasse editar o layout de uma web através do próprio browser (o conteúdo num site TWiki®/Foswiki é dividido em webs, que são como se fossem sub-sites independentes). Essa foi uma abordagem inovadora na época; posteriormente foi adicionado suporte a isso no core do TWiki® e nossa skin ficou obsoleta.

Depois eu resolvi que era hora de trabalhar com o core do TWiki®. Uma coisa que me incomodava é que o TWiki® era difícil para os usuários com quem eu tinha contato em função de ser totalmente em inglês. Desse jeito, eu desenvolvi a infra-estrutura de tradução da interface de usuário, e catei todas as strings no código Perl e nos templates marcando elas pra tradução. Durante esse processo aprendi a maioria das coisas que eu sei hoje sobre internacionalização e localização, e é muito legal saber que hoje as pessoas, não só no Brasil, têm acesso à interface do Foswiki no seu idioma nativo por causa do meu trabalho. Depois disso eu fiquei um tempo coordenando o processo de tradução, até que eu declinei dessa tarefa e fui substituído pelo ótimo Aldre Ulrich que desde então vem coordenando os tradutores no novo projeto.

Depois de poder ter a interface traduzida no idioma local, era preciso uma estratégia para manter versões traduzidas de tópicos inteiros, e então veio o TopicTranslationsPlugin, que é bastante utilizado por aí (eu pelo menos uso bastante. ;-))

Por um tempo eu fiquei afastado do projeto em função de trabalho. Em 2006 já estava de volta a Salvador e a Colivre acabava de ser fundada. A maioria dos fundadores estava bastante acostumada com se organizar através do TWiki®, e essa foi uma escolha natural para a nossa intranet. Hoje rodando Foswiki, através dela organizamos grande parte do nosso fluxo de trabalho, desde a elaboração de propostas comerciais até a gestão de diversos aspectos da empresa, e claro, armazenando toneladas de documentação. Além disso temos produzidos diversos sites com Foswiki, e fazemos questão de incluir no serviço um tempo para formação dos clientes de forma que eles possam atualizar os seus sites sozinhos, e não se tornem dependentes da Colivre (afinal, esse é o ponto de se optar por software livre, certo?)

Em 2007, já cursando o doutorado na UFBA, Gilmar me intimou a orientar o projeto de conclusão de curso dele, cujo idéia original era implementar formas de poder planejar o uso de recursos do TWiki®. No final das contas, ele acabou refatorando uma boa parte do projeto para permitir executar o Foswiki de várias formas diferentes, algumas das quais suportam bem o planejamento de capacidade, principalmente em termos de consumo de memória. A interação com Gilmar durante o trabalho dele fez eu me reaproximar um pouco do projeto, e o resultado foi tão sensacional que eu fiquei empolgado com as possibilidades.

No final de 2008, a nossa história sofre uma reviravolta significativa. Alguns meses antes, Peter Thoeny, o fundador do projeto TWiki®, havia fundado um empresa chamada TWIKI.NET para prestar serviços com TWiki. Até aí tudo bem, vários desenvolvedores tinham suas próprias empresas especialidas em TWiki®. Mas ele começou a utilizar o site do projeto para fazer propaganda da sua empresa, de uma forma que ninguém nunca tinha feito (veja você mesmo o que se tornou o site hoje). Isso iniciou um processo de disputa no projeto para definição de uma forma de governança, em especial para delimitar o que pode e o que não pode. Havia uma divisão muito clara no projeto, e o Peter fazia questão de sempre dar a última palavra.

Depois de um tempo, e de discussões das quais eu não participei, ele fez valer o fato de ser o dono da marca TWiki® (e é por isso que, em tom de pirraça, nós sempre fazemos questão de ressaltar que TWiki® é marca registrada de Peter Thoeny e TWIKI.NET, daí o tanto de ® nesse post) , e numa atitude completamente arbitrária expulsou todos do projeto, convidando a voltar na condição de aceitar novos termos impostos por ele. Para a desgraça do TWiki®, muito pouca gente voltou.

Segundo Thoeny, o TWiki® adotou o modelo de governança do Ubuntu, e isso foi abençoado ("blessed") pelo próprio Jono Bacon, funcionário da Canonical e Community Manager do Ubuntu.

O modelo de governança do Ubuntu, do ponto de vista de alguém que está de fora, não me parece necessariamente ruim. Eu li recentemente o The Art of Community, eu acho até que é um bom modelo do ponto de vista teórico. O que o Peter esqueceu de ponderar, no entanto, é que a situação no Ubuntu é completamente diferente da situação em que o TWiki® se encontrava: no Ubuntu, os funcionários da Canonical realizam uma grande parte do trabalho pesado e garantem a plataforma. Além do Peter (cujas contribuições sempre foram relevantes, apesar de cada vez menos em forma de código), a TWIKI.NET tinha um único funcionário produzindo quase nada de código e o mais valioso recurso em sua posse era a marca registrada. A comunidade, no entanto contribuía muito mais que a TWIKI.NET.

Dessa forma, todos os outros desenvolvedores resolveram deixar o TWiki® e continuar o projeto sob um outro nome. Depois de um processo democrático, e apoiado por um copywriter profissional, chegou-se ao novo nome do projeto: Foswiki. A comunidade brasileira seguiu o mesmo caminho junto com a comundade internacional.

De lá pra cá, o TWiki® encontra-se largado às traças e o Foswiki avança a passos largos. A comunidade Foswiki teve o cuidado de manter a compatibilidade retroativa com o TWiki®, de forma que é bastante tranquilo trocá-lo pelo Foswiki. Eu diria até que é recomendado trocá-lo por Foswiki: além de ter uma comunidade muito mais ativa para suporte, existem definitivamente muito mais empresas realmente qualificadas trabalhando com o Foswiki para suporte comercial. Além disso, o Foswiki é muito mais ativo na correção de erros, e tem inovado muito mais rápido: vários plugins novos, a exemplo do maravilhoso FlotChartPlugin, veem sendo disponibilizados apenas no Foswiki.

Desde o lançamento do Foswiki, eu tenho vagarosamente me livrado do TWiki® em favor do novo projeto. Hoje felizmente não sou mais responsável por nenhum TWiki®. Todos os servidores que eu administro e que rodavam TWiki® já foram devidamente atualizados para Foswiki.

No wiki.softwarelivre.org, que já foi convertido para Foswiki, tenho uma novidade boa: depois de muito tempo carregando no lombo sozinho, agora eu tenho uma ajuda fantástica na administração do servidor. Ítalo vem me ajudando já faz um tempinho, e ele fez a maioria do trabalho de atualização para o Foswiki. Além disso ele tem feito a maior parte do trabalho de administração diário. Isso sem falar que durante o processo ele foi aceito como desenvolvedor do Foswiki e eu já vi ele consertado vários bugs por lá. Valeu, Ítalo! :)

De algumas semanas pra cá, tenho tido a oportunidade fantástica de voltar a desenvolver no Foswiki: estamos trabalhando na