II Encontro Nacional de Dados Abertos

Semana passada ficou curta, deixei de fazer um bocado de coisa que queria e apertei o passo em outras pra conseguir passar os dois últimos dias da semana em Brasília no II Encontro Nacional de Dados Abertos, organizado pela SLTI do Ministério do Planejamento e pelo escritório brasileiro da W3C. Valeu à pena!

Em 2010 eu comecei pra coçar uma coceira pessoal com um projeto para coletar e dar melhor visibilidade ao gasto dos parlamentares mineiros com as chamadas verbas indenizatórias. O resultado foi o softwae com nome-código “Montanha”, que era composto de duas partes: 1) um web scraper que entrava em cada uma das milhares de páginas que tinham os dados com uma grande granularidade e os colocava num banco de dados 2) uma aplicação web que exibia os dados em tabelas e gráficos para facilitar a leitura.

Mais pra frente resolvi renomear o projeto para ‘Olho Neles!’ pra ficar mais amigável e registrei um domínio* (http://olhoneles.org/). Em razão desse trabalho eu fui convidado para falar no primeiro ENDA, que aconteceu em 2011, mas infelizmente não deu certo a viagem para Brasília e eu acabei sendo representado pelo Marcelo “metal” Vieira, contribuidor do projeto, que por sorte estava por lá. Fui novamente convidado agora e dessa vez deu certo!

Eu apresentando o olhoneles
Eu apresentando o Olho Neles! foto da Raquel Camargo

A abertura foi muito boa e contou com o presidente da ESAF – Escola de Administração Fazendária, onde aconteceu o evento – que fez um primeiro discurso com um alto grau de auto-crítica governamental. Começou por falar que governo bom é governo que apanha de manhã, de tarde e de noite – o que ele acha que é essencial para manter a administração pública constantemente preocupada com a melhoria e para o quê os dados abertos tem muito a contribuir. Depois afirmou que a Receita Federal é uma instituição de excelência, que recolhe impostos muito bem, mas que falta muita qualidade no gasto dos recursos angariados por ela; “não podemos passar a conta das nossas ineficiências para a sociedade sempre”, disse ele, dando um tapa de luva no próprio governo.

Depois fomos para o evento. Eu confesso que inicialmente suspeitava que o evento seria uma série de palestras falando de projetos com lançamento no futuro, mas fui positivamente surpreso: muitas pessoas estava lá para mostrar suas iniciativas já em funcionamento, com dados já disponibilizados, até mesmo seguindo um princípio de não perseguir o ótimo que é inimigo do bom. Mais de uma apresentação teve um slide com uma variação de “publish early, publish often”, claramente inspirado no “release early, release often” d’A Catedral e o Bazaar, que é uma das pedras fundamentais do pensamento hacker. Alguns citaram o primeiro Encontro Nacional de Dados Abertos como marco inicial das suas iniciativas.

Outra coisa que eu senti é que a maioria das iniciativas não foi algo fortemente institucional – algum tipo de planejameto e definição estratégica sempre era citado, é verdade, e a adequação à Lei de Acesso à Informação certamente teve um papel importante, mas as iniciativas que iam além da mera compliance me deram a clara impessão de terem partido das áreas de tecnologia, com vontade fazer acontecer. Nunca é demais ser lembrado que no serviço público há muitas dessas pessoas que amam fazer acontecer, sou feliz de ter conhecido várias até hoje =).

E conhecer gente foi como sempre o ponto alto do evento pra mim. Apesar de eu não ter feito tudo que queria – acabei deixando de contribuir com a ideia de uma cryptoparty durante o evento, acabei ficando sem assistir à BR080 no final das contas e perdi alguns debates que eu achava importantes – não fiquei muito tempo sem estar com pessoas interessantes, com boas ideias e papo que acrescentou muito pra mim. Tive mais contato com o pessoal do ônibus hacker, do grupo transparência hacker, o que foi muito interessante e proveitoso pra mim.

A minha apresentação (slides em PDF, slides em ODP) correu sem maiores problemas, tirando que eu fiz a apresentação sem meus óculos que estão sem uma das asinhas – fiquei com medo de ninguém conseguir prestar atenção no que eu estava falando por ficar incomodado com os óculos tortos. Fiquei um pouco mais nervoso que o normal de não conseguir sentir o que as pessoas estavam pensando =P.

A recepção foi boa, fiquei feliz de saber que o representante da ALMG gostou de ter um projeto utilizando o trabalho deles de expor os dados através de web services (o que simplificou muito o código do coletor da ALMG no olho neles). Também fiquei feliz de saber que a Câmara Municipal de SP já tem web services para as verbas indenizatórias – taí uma tarefa fácil pra contribuir com o Olho Neles! ;)

Durante a apresentação do representante do Senado, que parece ter uma relação bem estabelecida com o grupo Transparência Hacker, inclusive, fiquei sabendo um pouco mais sobre LexML e sobre as ferramentas que tem sido usadas para ajudar a automatizar o processo legislativo, como o LexEdit, e torná-lo mais transparente. O Jean Ferri, que foi o moderador da sessão me deu alguns detalhes de como funciona a coisa toda e eu fiquei bem impressionado, não achei que estivesse tão avançado assim.

Enfim, fiquei muito feliz de ter sido convidado e de ter participado, muito obrigado à SLTI do Ministério do Planejamento e ao escritório brasileiro do W3C pela iniciativa, keep ‘em coming!

* .org sem .br porque nossas políticas de registro de domínio são blergh e exigem que você seja uma organização formalmente registrada para registrar org.br

Discussões sobre a Petrobrás

Assim que a Petrobrás divulgou os resultados do ano calendário de 2012 houve um sem número de controvérsias a respeito. Eu participei de algumas discussões e fiquei animado pra escrever um post explicando de forma mais detida minhas opiniões a respeito. Vou tentar abordar cada um dos argumentos usados nas discussões de que participei.

Está tudo bem, compre Petrobrás!

Vou começar tratando de um post do Paulo Henrique Amorim. O teor do post pode ser dividido em 2 partes: a primeira parte é uma nota oficial da Petrobrás em que ela diz o seguinte:

Em 2012, o lucro líquido foi 36% inferior ao apurado em 2011, refletindo os efeitos da depreciação cambial, maior participação de derivados importados no volume de vendas e aumento das despesas operacionais com maiores baixas de poços secos e subcomerciais;A segunda parte é um comentário feito pelo jornalista em que ele dá a entender que os jornais O Globo, Folha e Estadão deram um viés de má notícia em suas manchetes (que focam na queda de lucro recorde), enquanto a “publicação especializada” InfoMoney dá uma manchete que cita o valor auferido em lucros e indicando que o lucro superou as estimativas. Ele termina sugerindo ao leitor que compre ações da Petrobrás.

Eu considero esse post do Paulo Henrique Amorim uma tentativa pífia de dar um giro positivo numa notícia que não tem nada de positiva. O fato é que o lucro da Petrobrás caiu em 36% – mais que um terço! – em relação a 2011. As expectativas em relação ao lucro da Petrobrás estavam baixas por várias razões (algumas até listadas no texto da Petrobrás, acima) e o fato de o lucro ter superado essas expectativas não ajuda muito.

Valor das ações da Petrobrás de 2008 a início de 2013

As expectativas em relação à saúde financeira da Petrobrás e ao nível de interferência política sofrida pela empresa não é coisa nova. A Petrobrás perdeu mais de 66% do seu valor de mercado desde 2008, como se pode ver no gráfico acima, obtido no Yahoo! Finance. Isso significa que alguém que comprou 100 reais em ações da Petrobrás em 2008 hoje não vende as mesmas ações por mais do que 34 reais. Faz sentido, então, recomendar a compra, como fez PHA? Antes, vamos tentar entender as razões por trás da queda.

E por quê essa perda gigantesca?

As intervenções do governo e as mágicas fiscais

Em 2010 a Petrobrás fez o que o ex-presidente Lula chamou (com razão) de a maior capitalização da história do capitalismo mundial. O que foi isso? A Petrobrás precisava de dinheiro em caixa pra fazer investimentos na extração do pré-sal. Para conseguir esse dinheiro, a Petrobrás aumentou o número de ações que a compõe e as ofereceu na bolsa. Trabalhadores brasileiros puderam usar o dinheiro do FGTS para adquirir ações – e muitos fizeram isso!

Como parte do processo a União fez o que se chamou de cessão onerosa de 5 bilhões de barris de petróleo que se encontravam em lotes do pré-sal. O petróleo que está em território brasileiro é do Estado brasileiro, para que seja extraído de lá e usado comercialmente, a União faz leilões de concessão. Na capitalização a União concedeu, com antecedência, à Petrobrás os direitos sobre esses 5 bilhões de barris e ganhou, em troca, R$ 74,8 bilhões. Desses, R$ 42,9 bilhões foram usados para compra de ações da capitalização da Petrobrás, aumentando a participação da União na empresa. Note que até hoje esses barris estão lá embaixo da terra. O que foi feito foi uma transação sobre direitos futuros.

Com que propósito isso foi feito? Em primeiro lugar para viabilizar a capitalização, claro, mas em segundo lugar, esses bilhões foram usados para fazer o superávit primário de 2010. Esse é um dos exemplos de como o governo tem usado a Petrobrás politicamente, para fingir que cumpre as metas que define para si mesmo. Esse foi um dos fatores que levaram as ações da Petrobrás a continuarem em queda, mesmo depois de ter feito a maior capitalização da história. Vamos falar de outra: o subsídio à gasolina.

O subsídio à gasolina

Outra das razões para a queda do valor de mercado está na nota da Petrobrás citada acima: “maior participação de derivados importados no volume de vendas”. Em 2006, ano eleitoral, Lula foi a um campo de exploração de petróleo da Petrobrás pintar as mãos de preto e anunciar a nossa auto-suficiência em petróleo. Os mais atentos também devem se lembrar de como Lula fazia discursos ufanistas quando falava do etanol brasileiro, de como era o mais eficiente do mundo e coisa e tal.

Acontece que demanda por combustíveis aumentou consideravelmente desde então, em parte impulsionada pelo subsídio dado pelo governo para venda de automóveis, através da redução do IPI, e o setor produtivo brasileiro simplesmente não teve condições de atender à demanda. Resultado: milhões e milhões de barris importados tanto de etanol quanto de gasolina. A auto-suficiência durou bem pouco.

Por si só, o fato de termos que importar etanol e gasolina não seria tão problemático. Acontece que o governo, através da Petrobrás, adotou uma postura de não repassar ao preço local da gasolina os ajustes sofridos pelo preço do petróleo no mercado internacional. Essa postura funcionava quando a auto-suficiência em petróleo era um fato, mas a partir do momento em que nós começamos a importar, a Petrobrás estava pagando muito mais pela gasolina que comprava do que cobrava pela gasolina que vendia, o que levou a uma situação inusitada: quanto mais gasolina vende, mais a Petrobrás perde dinheiro! Como pode ser visto no post linkado, calcula-se que depois do reajuste da gasolina dado no começo de 2013 a Petrobrás está perdendo 1,2 bilhões de reais por mês. Essa é nossa situação atual.

Mas o subsídio à gasolina é do interesse nacional!

Assumindo que faça sentido a Petrobrás destruir sua saúde financeira para estabelecer um subsídio de interesse do país (falo disso mais adiante), resta somente a questão de se é interesse do país o subsídio à gasolina. Será que é? Eu acho difícil decidir sobre uma coisa complexa dessas assim de supetão; Uma das questões que servem como base pra essa é se é do interesse do país o subsídio ao IPI, dado anteriormente, e que levou à alta da demanda.

A redução de IPI para automóveis foi uma medida adotada pelo governo para aquecer a economia e impedir que a crise de 2008 nos atinge com mais força, reduzindo o emprego e a renda. É louvável essa tentativa, mas por quê a indústria automobilística? Uma das razões é possivelmente que essa é uma indústria que emprega muito e que tradicionalmente trabalhou com o governo para evitar reduções de postos de trabalho. OK, até aqui tudo bem. Mas será que não existem diversas outras indústrias que poderiam absorver os trabalhadores que perdessem o emprego nas montadoras? Quem dirá os serviços e indústrias de suporte que certamente surgirão em volta de empreendimentos desse porte?

Além de pensar sobre isso, temos que pensar também nos outros resultados que advem de uma política dessas. Uma delas é óbvia: a quantidade de carros nas cidades aumentou vertiginosamente, aumentando a poluição e os engarrafamentos. Essas são o que a economia chama de externalidades negativas. Imagine se ao invés de incentivar a compra de carros o governo federal tivesse iniciado investimentos consistentes em obras de mobilidade urbana em todo o território brasileiro. Canteiros de obra para metrôs, BRTs, trens poderiam não só absorver os trabalhadores que eventualmente fossem demitidos nas montadoras, mas gerariam uma externalidade positiva significativa. Melhoria na qualidade de vida das pessoas.

Do meu ponto de vista, o incentivo à compra de carros foi um erro. Mas suponhamos que tenha sido uma boa ideia. Voltemos à questão do subsídio à gasolina: o subsídio vem da Petrobrás, que é uma empresa de capital misto, o que significa que parte dela é do Estado brasileiro, parte de entes privados e indivíduos. Por isso mesmo, parte do dinheiro investido nesse subsídio é público. Ou seja, é dinheiro da pessoa pobre que recebe Bolsa Família, meu e seu.

Faz sentido usar esse dinheiro para beneficiar quem usa carros a gasolina? Eu consigo ver o benefício pra mim, que tenho carro e uso gasolina, mas que benefício à sociedade esse subsídio dá, que justifique usar dinheiro da pessoa pobre que recebe Bolsa Família pra me ajudar? Os argumentos que eu ouvi são de que um aumento na gasolina acarreta aumento de custo e portanto um aumento de preços em cascata no resto da cadeia produtiva. Será? Caminhões e ônibus usam diesel, por exemplo, então não vejo como o custo de transporte de cargas e passageiros seria afetado. Quem tiver alguma ideia, poste aí nos comentários.

A Petrobrás é uma empresa estatal/pública e portanto tem o dever de proteger os interesses nacionais!

Eu argumentei antes que o subsídio à gasolina não é necessariamente do interesse nacional. Acho o mesmo quando se trata de usar mágica contábil… mas vamos supor que fossem interesses nacionais. A Petrobrás tem o dever de protegê-los? Gostaria de voltar à questão da capitalização. Os mais atentos lembrarão que a Petrobrás é uma empresa de capital misto, ou seja, a União é um dos acionistas, mas há outros. Quem são esses outros? Grandes capitalistas que especulam na bolsa? Certamente há. Mas os mais atentos lembrarão que também há inúmeros trabalhadores, que usaram seu rico dinheirinho do FGTS para comprar ações da capitalização. São mais de 70 mil trabalhadores que tem mais de 2 bilhões aplicados na oferta original em 2000 ou na capitalização de 2010. Sem contar investidores individuais, que podemos ser eu e você. Quem comprou 100 reais em ações em 2010 hoje vende por 70. E não há sinal de que a trajetória de queda vai mudar.

É justo a Petrobrás tocar o foda-se para União, trabalhadores e outros acionistas e perseguir o que alguém tirou do Cadastro Único ser do interesse nacional? Eu diria que não. Se for o caso, e acho que, como qualquer outra política pública, o mérito dessa tem sim que ser avaliado, o ideal é fechar o capital da empresa, ou seja, tirá-la da bolsa de valores e trazer o orçamento da empresa pra dentro do orçamento geral da União. Por quê? Porque se vamos usar dinheiro público para fazer subsídio de interesse nacional é essencial que fique claro e transparente para todos que esse subsídio é feito ao invés de outros investimentos. O dinheiro que iria para subsidiar a gasolina poderia talvez ser melhor gasto na educação, por que não?

Conclusão

Respondendo à pergunta original: e aí, faz sentido recomendar a compra de Petrobrás? Do jeito que a coisa está hoje, não acho que faça sentido. É necessário que a empresa e o governo demonstrem que a Petrobrás será gerida como uma empresa séria de novo antes que seja possível confiar nela. Mas eu sou otimista e acho que a Graça Foster foi colocada lá com essa condição: de que ela poderia colocar a empresa nos trilhos. O aumento da gasolina do começo de 2013, apesar de não acabar com a defasagem do preço, é um passo na direção certa. Se você acredita que as intervenções políticas vão acabar e que a empresa vai parar de tomar decisões estúpidas como a de subsidiar a gasolina, compre. Se não acha, não faz sentido comprar.

Atualização (3 de março de 2013)

Só no primeiro bimestre de 2013 o valor de mercado da Petrobrás caiu mais do que em todo o ano de 2012. O aumento insuficiente para corrigir a distorção do preço da gasolina é uma provável explicação.

WebKitGTK+ Debian packaging repository changes

For a while now the git repository used for packaging WebKitGTK+ has been broken. Broken as in nobody was able to clone it. In addition to that, the packaging workflow had been changing over time, from a track-upstream-git/patches applied one to a import-orig-only/patches-not-applied one.

After spending some more time trying to unbreak the repository for the third time I decided it might be a good time for a clean up. I created a new repository, imported all upstream versions for series 1.2.x (which is in squeeze), 1.6.x (unstable), and 1.7.x (experimental). I also imported packaging-related commis for those versions using git format-patch and black magic.

One of the good things about doing this move, and which should make hacking the WebKitGTK+ debian package more pleasant and accessible can be seen here:


kov@goiaba ~/s/debian-webkit> du -sh webkit/.git webkit.old/.git
27M webkit/.git
1.6G webkit.old/.git

If you care about the old repository, it’s on git.debian.org still, named old-webkit.git. Enjoy!

Montanha: agora de olho nos vereadores de BH e alguns comentários sobre contribuições

Alguns dos leitores talvez saibam que eu escrevi no meio de 2010 um programa chamado ‘Montanha’. A ideia original do programa era me ajudar a escolher um candidato a deputado estadual me dando uma ideia geral de como os deputados da época gastavam os recursos da verba indenizatória. O site da Assembléia Legislativa de Minas Gerais publica essas informações, mas de uma forma muito inconveniente, tornando absolutamente impossível ter uma idea geral de como os deputados gastam a bufunfa. Obviamente botei o código online e subi uma instância pública para que outras pessoas pudessem fazer o mesmo. Depois disso o grande tevaum se juntou ao time e já adicionamos uma instância para a nova legislatura, que tomou posse em 2011.

Nos últimos dias decidi que com os belorizontinos prestando atenção nos vereadores, dada a polêmica sobre o aumento de salários e o veto pelo prefeito, seria um bom momento para criar o coletor e subir uma instância nova do Montanha, pra observar os gastos dos vereadores. Quem olhar vai notar rapidamente que o projeto ainda está pela metade: ainda faltam informações de partido dos vereadores, os links falam em ‘deputados’ e por aí vai, mas sou fiel ao princípio de release early, release often, então não quis esperar – quando os dados começaram a encher o banco botei o projeto pra fora.

Agora alguns comentários sobre questões que as pessoas me colocam:

Bacana! Se precisar de ajuda tamos aí!

Obrigado! Esse é um projeto de software livre – o código está sob a Affero GPL3 e sua contribuição é bem-vinda. Eu acredito firmemente em outro princípio: talk is cheap; show me the code. Eu não pretendo organizar/coordenar os esforços de outras pessoas, então não espere que eu peça ajuda para algo específico ou pegue na mão, sinta-se à vontade para clonar o projeto, fazer as modificações que achar que devem ser feitas e propô-las, não posso garantir que alguma coisa será incorporada ao meu branch, mas estou disposto a discutir questões de design/planos e responder dúvidas sobre o código – no canal #linux-bh da freenode, principalmente =).

Quais os planos pro futuro?

O meu TODO imediato é (e sinta-se à vontade pra roubar qualquer um e fazer):

  • colocar os dados de partido nos dados da Câmara Municipal de BH
  • mudar a interface do montanha para não falar em ‘deputados’, mas em ‘parlamentares’
  • escrever um coletor para os dados anteriores a março de 2010 da CMBH
  • melhorar a linkabilidade das pesquisas – deixar que você envie um link da visão de todos os gastos, por exemplo, com uma busca já feita
  • escrever alguns posts no Observador Político e no Trezentos chamando a atenção para algumas informações expostas pelo montanha
  • adicionar mais gráficos – gasto sobre tempo, por exemplo
  • melhorar a informação que o sistema dá a respeito do período coberto pelos dados
  • aumentar a quantidade de trivia exibida na página de detalhes de parlamentar
  • criar uma página com detalhes e trivia para fornecedores

Por que você não coloca esse projeto no Transparência Hacker (ou outro grupo)?

A minha resposta para esse tipo de pergunta tem sido ‘por quê eu deveria’? Não é que eu seja um lobo solitário, mas eu acho que só faz sentido participar de um projeto específico se houver alguma razão para tal. Visibilidade não me preocupa muito – a mensagem sempre acaba chegando em quem se interessa e em quem me interessa que ela chegue.

Eu não acredito que participar de um grupo – qualquer grupo – seja garantia de contribuidores, também; como eu disse, talk is cheap e disso eu tenho certeza de que acharia muito num grupo, mas acredito que as pessoas que quiserem contribuir vão contribuir independente de estar dentro de um grupo (como o Estêvão faz). Se um pedaço grande da contribuição vier de pessoas que fazem parte de um grupo e fizer sentido discutir o projeto dentro dele, aí sim eu veria sentido, por exemplo.

Uma última preocupação, essa específica com o thack, é que o foco do grupo me parece muito diferente do meu. Meu objetivo é que a sociedade tenha uma ferramenta para observar seus parlamentares. Para que isso aconteça é preciso que a ferramenta tenha uma vida mais longa e seja mantida. Os dados sobre a legislatura passada da ALMG, por exemplo, já foram retiradas do site da ALMG, mas o Montanha continua lá, a sociedade continua tendo acesso não só a todos dados, como a uma visualização mais razoável deles. Eu não estou prometendo que vou manter pra sempre, claro, principalmente porque faço isso no meu tempo vago (em que eu também trabalho pro Debian, GNOME, como, durmo e me divirto), mas a minha ideia é focar nesse um problema e ter uma boa solução razoavelmente perene.

A maioria das coisas que eu vi do thack são hacks muito bacanas, mas sua vida parece ser muito curta – assim que um hack está pronto outra ideia legal aparece e aquela é deixada para trás; essa bola já foi levantada por outras pessoas, inclusive, como exemplo de por quê grupos como o thack não são a solução definitiva para o problema de dados abertos e de por quê concursos de criação de app não substituem um trabalho sério dentro do governo; não é incomum achar coisas com dados de anos atrás ou que sequer continuam funcionando. Note que eu não tenho nada contra o thack, per se, muito menos contra as pessoas que o compõe – eu os considero colegas e amigos, eu só acho que nós surfamos ondas diferentes e isso me faz achar que eu não agregaria valor ao grupo e vice-versa. Obviamente posso ser convencido do contrário eventualmente =)

The Blocks C extension and GIO asynchronous calls

So, I intended to be completely away from my computer during my vacations, but hey. I have been interested in this new extension Apple added to the C language a little while ago which introduces the equivalent of closures to C. Today I spent a few minutes looking into it and writing a few tests with the help of clang.

Here’s something I came up with, to use a block as the callback for a GIO asynchronous call:

[sourcecode language=”cpp”]
#include <Block.h>
#include <gio/gio.h>

typedef void (^Block)();

static void async_result_cb(GObject* source,
GAsyncResult* res,
gpointer data)
{
Block block = (Block)data;
block(res);
}

int main(int argc, char** argv)
{
g_type_init();

if (argc != 2) {
g_error("Blah.");
return 1;
}

GMainLoop* loop = g_main_loop_new(NULL, TRUE);
GFile* file = g_file_new_for_path(argv[1]);

g_file_query_info_async(file,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT,
NULL, async_result_cb, (gpointer) ^ (GAsyncResult* res) {
GError* error = NULL;
GFileInfo* info = g_file_query_info_finish(file, res, &error);

if (error) {
g_error("Failed: %s", error->message);
g_error_free(error);
return;
}

g_message("Content Type: %s",
g_file_info_get_attribute_string(info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE));

g_object_unref(info);
g_main_loop_quit(loop);
});

g_main_loop_run(loop);
g_object_unref(file);

return 0;
}
[/sourcecode]

Pretty neat, don’t you think? To build you need to use clang and have the blocks runtime installed (libblocksruntime-dev in Debian). Here’s the command I use:

$ clang -fblocks -o gio gio.c -lBlocksRuntime `pkg-config --cflags --libs gio-2.0`

AIClass and vacations

One of my side projects for these last months was to enroll on the online Introduction to AI class, with Peter Norvig and Sebastian Thrun, professors at Stanford. Through it I also learned about the Kahn Academy. I must say that getting to know these efforts made me feel similar to when I found Free Software: it’s hard to believe that such great things exist!

I learned some really cool stuff, and was also introduced to the amazing work of Sebastian Thrun with self-driving cars, it was an awesome experience! Last weekend I took the final exam, and today I got the certificate of accomplishment. It was delivered as a signed PDF which can be checked with a certificate they provided, pretty neat. I’m very happy, and motivated to enroll on more such courses in the future =). Now it’s time to cool down, though. My vacations start today, and on the weekend I’ll travel to the sunny Fortaleza, in northeastern Brazil, to enjoy some nice beaches and get some tan. See you next year!

Statement of Accomplishment - AIClass 2011
Statement of Accomplishment - AIClass 2011

WebKitGTK+ hackfest \o/

It’s been a couple days since I returned from this year’s WebKitGTK+ hackfest in A Coruña, Spain. The weather was very nice, not too cold and not too rainy, we had great food, great drinks and I got to meet new people, and hang out with old friends, which is always great!

Hackfest black board, photo by Mario
I think this was a very productive hackfest, and as usual a very well organized one! Thanks to the GNOME Foundation for the travel sponsorship, to our friends at Igalia for doing an awesome job at making it happen, and to Collabora for sponsoring it and granting me the time to go there! We got a lot done, and although, as usual, our goals list had many items not crossed, we did cross a few very important ones. I took part in discussions about the new WebKit2 APIs, got to know the new design for GNOME’s Web application, which looks great, discussed about Accelerated Compositing along with Joone, Alex, Nayan and Martin Robinson, hacked libsoup a bit to port the multipart/x-mixed-replace patch I wrote to the awesome gio-based infrastructure Dan Winship is building, and some random misc.

The biggest chunk of time, though, ended up being devoted to a very uninteresting (to outsiders, at least), but very important task: making it possible to more easily reproduce our test results. TL;DR? We made our bots’ and development builds use jhbuild to automatically install dependencies; if you’re using tarballs, don’t worry, your usual autogen/configure/make/make install have not been touched. Now to the more verbose version!

The need

Our three build slaves reporting a few failures
For a couple years now we have supported an increasingly complex and very demanding automated testing infrastructure. We have three buildbot slaves, one provided by Collabora (which I maintain), and two provided by Igalia (maintained by their WebKitGTK+ folks). Those bots build as many check ins as possible with 3 different configurations: 32 bits release, 64 bits release, and 64 bits debug.

In addition to those, we have another bot called the EWS, or Early Warning System. There are two of those at this moment: one VM provided by Collabora and my desktop, provided by myself. These bots build every patch uploaded to the bugzilla, and report build failures or passes (you can see the green bubbles). They are very important to our development process because if the patch causes a build failure for our port people can often know that before landing, and try fixes by uploading them to bugzilla instead of doing additional commits. And people are usually very receptive to waiting for EWS output and acting on it, except when they take way too long. You can have an idea of what the life of an EWS bot looks like by looking at the recent status for the WebKitGTK+ bots.

Maintaining all of those bots is at times a rather daunting task. The tests require a very specific set of packages, fonts, themes and icons to always report the same size for objects in a render. Upgrades, for instance, had to be synchronized, and usually involve generating new baselines for a large number of tests. You can see in these instructions, for instance, how strict the environment requirements are – yes, we need specific versions of fonts, because they often cause layouts to change in size! At one point we had tests fail after a compiler upgrade, which made rounding act a bit different!

So stability was a very important aspect of maintaining these bots. All of them have the same version of Debian, and most of the packages are pinned to the same version. On the other hand, and in direct contradition to the stability requirement, we often require bleeding edge versions of some libraries we rely on, such as libsoup. Since we started pushing WebKitGTK+ to be libsoup-only, its own progress has been pretty much driven by WebKitGTK+’s requirements, and Dan Winship has made it possible to make our soup backend much, much simpler and way more featureful. That meant, though, requiring very recent versions of soup.

To top it off, for anyone not running Debian testing and tracking the exact same versions of packages as the bots it was virtually impossible to get the tests to pass, which made it very difficult for even ourselves to make sure all patches were still passing before committing something. Wow, what a mess.

The explosion^Wsolution

So a few weeks back Martin Robinson came up with a proposed solution, which, as he says, is the “nuclear bomb” solution. We would have a jhbuild environment which would build and install all of the dependencies necessary for reproducing the test expectations the bots have. So over the first three days of the hackfest Martin and myself hacked away in building scripts, buildmaster integration, a jhbuild configuration, a jhbuild modules file, setting up tarballs, and wiring it all in a way that makes it convenient for the contributors to get along with. You’ll notice that our buildslaves now have a step just before compiling called “updated gtk dependencies” (gtk is the name we use for our port in the context of WebKit), which runs jhbuild to install any new dependencies or version bumps we added. You can also see that those instructions I mentioned above became a tad simpler.

It took us way more time than we thought for the dust to settle, but it eventually began to. The great thing of doing it during the hackfest was that we could find and fix issues with weird configurations on the spot! Oh, you build with AR_FLAGS=cruT and something doesn’t like it? OK, we fix it so that the jhbuild modules are not affected by that variable. Oh, turns out we missed a dependency, no problem, we add it to the modules file or install them on the bots, and then document the dependency. I set up a very clean chroot which we could use for trying out changes so as to not disrupt the tree too much for the other hackfest participants, and I think overall we did good.

The aftermath

By the time we were done our colleagues who ran other distributions such as Fedora were already being able to get a substantial improvements to the number of tests passing, and so did we! Also, the ability to seamlessly upgrade all the bots with a simple commit made it possible for us to very easily land a change that required a very recent (as in unreleased) version of soup which made our networking backend way simpler. All that red looks great, doesn’t it? And we aren’t done yet, we’ll certainly be making more tweaks to this infrastructure to make it more transparent and more helpful to the users (contributors and other people interested in running the tests).

If you’ve been hit by the instability we caused, sorry about that, poke mrobinson or myself in the #webkitgtk+ IRC channel on FreeNode, and we’ll help you out or fix any issues. If you haven’t, we hope you enjoy all the goodness that a reproducible testing suite has to offer! That’s it for now, folks, I’ll have more to report on follow-up work started at the hackfest soon enough, hopefully =).

Accelerated Compositing in webkit-clutter

For a while now my fellow Collaboran Joone Hur has been working on implementing the Accelerated Compositing infrastructure available in WebKit in webkit-clutter, so that we can use Clutter’s powers for compositing separate layers and perform animations. This work is being done by Collabora and is sponsored by BOSCH, whom I’d like to thank! What does all this mean, you ask? Let me tell me a bit about it.

The way animations usually work in WebKit is by repainting parts of the page every few milliseconds. What that means in technical terms is that an area of the page gets invalidated, and since the whole page is one big image, all of the pieces that are in that part of the page have to be repainted: the background, any divs, images, text that are at that part of the page.

What the accelerated compositing code paths allow is the creation of separate pieces to represent some of the layers, allowing the composition to happen on the GPU, removing the need to perform lots of cairo paint operations per second in many cases. So if we have a semi-transparent video moving around the page, we can have that video be a separate texture that is layered on top of the page, made transparent and animated by the GPU. In webkit-clutter’s case this is done by having separate actors for each of the layers.

I have been looking at this code on and off, and recently joined Joone in the implementation of some of the pieces. The accelerated compositing infrastructure was originally built by Apple and is, for that reason, works in a way that is very similar to Core Animation. The code is still a bit over the place as we work on figuring out how to best translate the concepts into clutter concepts and there are several bugs, but some cool demos are already possible! Bellow you have one of the CSS3 demos that were made by Apple to demo this new functionality running on our MxLauncher test browser.

You can also see that the non-Accelerated version is unable to represent the 3D space correctly. Also, can you guess which of the two MxLauncher instances is spending less CPU? ;) In this second video I show the debug borders being painted around the actors that were created to represent layers.

The code, should you like to peek or test is available in the ac2 branch of our webkit-clutter repository: http://gitorious.org/webkit-clutter/webkit-clutter/commits/ac2

We still have plenty of work to do, so expect to hear more about it. During our annual hackfest in A Coruña we plan to discuss how this work could be integrated also in the WebKitGTK+ port, perhaps by taking advantage of clutter-gtk, which would benefit both ports, by sharing code and maintenance, and providing this great functionality to Epiphany users. Stay tuned!

A incrível estória do plano que nasceu morto – Parte 1

Das coisas engraçadas que eu ouvi enquanto assistia o streaming do segundo encontro dos blogueiros progressistas nenhuma superou a resposta do Paulo Bernardo quando questionado sobre por que não se colocava banda larga sob regime público. O Ministro argumentou que o Estado não tinha dinheiro para fazer tudo sozinho, então que precisaria da ajuda das empresas privadas.

Ou o Ministro achou que o questionador não sabia do que estava falando ou não sabia ele mesmo. A diferença entre regime público e regime privado não tem nada a ver com quem faz o investimento ou presta o serviço, mas tem muito a ver com a forma que esse serviço é prestado, que metas são estabelecidas e que recursos podem ser utilizados. Diz a Lei Geral de Telecomunicações:

Art. 63. Quanto ao regime jurídico de sua prestação, os serviços de telecomunicações classificam-se em públicos e privados.

Parágrafo único. Serviço de telecomunicações em regime público é o prestado mediante concessão ou permissão, com atribuição a sua prestadora de obrigações de universalização e de continuidade.

Art. 64. Comportarão prestação no regime público as modalidades de serviço de telecomunicações de interesse coletivo, cuja existência, universalização e continuidade a própria União comprometa-se a assegurar.

Parágrafo único. Incluem-se neste caso as diversas modalidades do serviço telefônico fixo comutado, de qualquer âmbito, destinado ao uso do público em geral.

http://www.planalto.gov.br/CCIVIL_03/leis/L9472.htm

Ou seja, se o serviço está em regime público o Estado está comprometido com assegurar sua universalização e a empresa é concessionária do serviço e tem que se pautar pela regulação do Estado no setor. Não só isso, mas poderá dispor dos recursos do FUST, como já bem lembrou João Brant. Hoje somente a telefonia fixa está em regime público, portanto só as empresas que prestam serviços de telefonia são consideradas concessionárias de serviço público, mas a prestação de serviço de banda larga não.

Então quando o participante perguntou ao Ministro: “por que não colocar banda larga em regime público?” ele não estava querendo saber por que o Estado não atuava como (único?) empresário do setor, mas sim se o governo teria bolas pra chamar pra si os deveres e a queda de braço que transformar a banda larga em serviço público concedido trariam. A própria LGT fala o que é preciso pra isso:

Art. 18. Cabe ao Poder Executivo, observadas as disposições desta Lei, por meio de decreto:

I – instituir ou eliminar a prestação de modalidade de serviço no regime público, concomitantemente ou não com sua prestação no regime privado;

http://www.planalto.gov.br/CCIVIL_03/leis/L9472.htm

Pelo visto o governo não tem bolas pra isso, não. Aí com certeza vai vir alguém e falar de algum impedimentozinho como “a iniciativa tem que partir da ANATEL”. Todos os conselheiros da ANATEL hoje foram indicados por Lula. Além disso, se julgarem necessárias mudanças na lei, ora, façam! Não teve muita dificuldade em mudar o Plano Geral de Outorgas para permitir a fusão da Oi com a BrT, teve?

Se você é petista daqueles que gritaram ForaFHC e adoram colocar nele a etiqueta de neoliberal é um bom momento para se deliciar com as ironias de a ação do governo petista estar se mostrando menos alinhada com um Estado regulador e garantidor da universalização, mesmo que uma lei aprovada por FHC dê a ele os mecanismos para isso.

PNBL: o governo devia começar por fazer o dever de casa

Originalmente publicado no Trezentos

O papel do Estado

O Brasil tem um fenômeno interessante. Nós tendemos a transformar qualquer discussão a respeito de uma política ou prática específica em discussão genérica a respeito de conceitos mais gerais, filosóficos, acadêmicos. Uma discussão a respeito de como avançar na disponibilidade, preço e qualidade da Internet no país acaba se tornando uma discussão a respeito do papel do Estado e não faltam teorias conspiratórias e pré-concepções a respeito dos modelos que podem ser adotados. Normalmente os problemas mais mundanos e reais, como o governo sendo simplesmente incompetente para cumprir qualquer que seja a escolha ficam de fora. Para evitar essa discussão cito a lei 9.472, de 1997, que organiza os serviços de telecomunicação e cria a ANATEL e que usarei como ponto de partida da minha argumentação:

Art. 2° O Poder Público tem o dever de:

I – garantir, a toda a população, o acesso às telecomunicações, a tarifas e preços razoáveis, em condições adequadas;

II – estimular a expansão do uso de redes e serviços de telecomunicações pelos serviços de interesse público em benefício da população brasileira;

III – adotar medidas que promovam a competição e a diversidade dos serviços, incrementem sua oferta e propiciem padrões de qualidade compatíveis com a exigência dos usuários;

IV – fortalecer o papel regulador do Estado;

V – criar oportunidades de investimento e estimular o desenvolvimento tecnológico e industrial, em ambiente competitivo;

VI – criar condições para que o desenvolvimento do setor seja harmônico com as metas de desenvolvimento social do País.

O arcabouço jurídico das telecomunicações no Brasil

É do interesse do país que haja Internet de alta velocidade a preço baixo e disponível para todos os brasileiros. O Estado brasileiro decidiu, na década de 1990, que o sistema de telecomunicações do país, até então um monopólio estatal, deveria ser concedido à iniciativa privada para acelerar investimentos e aumentar o alcance do serviço. Sem entrar no mérito da concessão, que mereceria uma discussão separada, vieram com ela algumas mudanças institucionais: a criação de uma agência reguladora, a ANATEL, pela lei 9.472, já citada acima, a criação, no ano 2000, de um fundo para universalização, o FUST, Fundo de Universalização dos Serviços de Telecomunicação, pela lei 9.998 e do FUNTTEL, Fundo para o Desenvolvimento Tecnológico das Telecomunicações, pela lei 10.052, também de 2000.

A ANATEL ficou responsável por fazer a fiscalização das empresas, garantindo que elas cumprissem suas metas de universalização, por regulamentar o setor e por cuidar dos leilões de concessões a novos serviços de telecomunicações que aparecessem conforme a tecnologia se desenvolvesse. Os fundos foram criados para garantir que existiria financiamento privado para que as empresas atendessem os setores menos lucrativos e comercialmente interessantes. Financiamento privado porque o dinheiro que alimenta os fundos vem da receita bruta das concessionárias de telefonia.

A lei 9.998 estabelece que os recursos do FUST deveriam ser usados em “consonância com plano geral de metas para universalização de serviço de telecomunicações ou suas ampliações […]”. Pela sua descrição o FUST soa como uma boa solução para investimentos em banda larga, mas há quem diga (erroneamente, na minha opinião) que há problemas legais que impediriam esse uso. Esse tema já foi bem discutido no Trezentos pelo colega João Brant, portanto não vou aprofundar muito.

Um primeiro passo em direção a uma melhor Internet para os brasileiros

O Plano Nacional de Banda Larga é uma iniciativa do Governo Federal que pretende levar, com uma rede operada por uma estatal, financiada inicialmente com recursos do tesouro nacional, Internet barata para lugares em que a iniciativa privada não chega. Há também, claramente, a intenção de criar competição no mercado para fazer com que as operadoras privadas baixem seus preços. Eu particularmente acho a ideia interessante, mas acredito que antes de tentar vôos mais longos como esse o Governo precisava começar por fazer a lição de casa com o que já existe.

O descaso com a fiscalização, com os bens públicos e com o FUST

Apesar de o dever do Poder Público ser, como diz a lei 9.472, fortalecer o papel regulador do Estado, o que se viu nos últimos anos foi omissão e descaso com o setor de telecomunicações (e com alguns outros, diga-se). A ANATEL, que devia fiscalizar o setor está há anos e anos com grande parte do seu orçamento contingenciado, impedindo que a agência exerça seu papel. Além de falta de orçamento há também descaso com os bens públicos. As concessionárias tem em sua posse diversos bens chamados “reversíveis”, que devem voltar ao Estado ao final da concessão, que se dará em 2025. É dever da ANATEL acompanhar e aprovar qualquer tipo de transação com esses bens, mas as empresas tem feito o que bem entendem e a ANATEL sequer tem uma lista dos bens considerados reversíveis. Finalmente a ANATEL reconheceu o problema e avisou que vai aplicar multa. A pergunta que fica é: a multa vai ser paga mesmo?

Digo isso porque além de fazer o que bem entendem com os bens públicos, as concessionárias também não tem se dado ao trabalho de pagar as multas que lhes são aplicadas. Esse não é um problema exclusivo do setor de comunicações, diga-se de passagem: segundo estudo do TCU que infelizmente só começou em 2008, de todas as multas aplicadas de 2008 a 2010, só 4,7% foram recolhidas. Era de se esperar que as entidades tivessem entrado na justiça para obrigar as empresas a pagarem, não é? Mas não. Incluindo as cobranças que estão na justiça chegamos a míseros 5,6%.

Com a palavra o TCU:

A reduzida arrecadação de multas afeta de forma significativa a credibilidade do poder sancionador do Estado, exigindo que providências sejam adotadas para que as cobranças administrativa e judicial sejam realizadas de forma mais tempestiva e eficaz.

Em outras palavras, não há incentivo para as empresas agirem de forma responsável e cumprirem suas obrigações, já que mesmo que sejam multadas não precisam pagar e está tudo bem, não haverá sanções. Não é de assustar que bueiros continuem explodindo na cidade do Rio de Janeiro e que metas de universalização estipuladas não sejam cumpridas pelas teles, não é? Metas de universalização que, diga-se de passagem, a ANATEL não parece muito empenhada em defender quando cria novos planos, retirando das metas pontos já estabelecidos anteriormente em troca de benefícios duvidosos para os interesses do país

A falta de concorrência

Existe uma tendência a acreditar que falta de concorrência faz com que os serviços fiquem piores e mais caros. Faz sentido: se você faz questão de ter internet e só tem uma escolha você vai ter que aceitar o que tem. Nas grandes cidades brasileiras hoje há certamente mais de uma opção disponível, mas ainda assim se acredita que a falta de concorrência é um fator importante no geral.

O governo não ajudou muito também nesse quesito. Em 2008 a Brasil Telecom andava mal das pernas e começou um papo de fusão com a Oi. Havia diversas soluções possíveis, inclusive a pulverização das ações dos sócios que não queriam mais participar. Naquele momento, no entanto, uma fusão era uma alternativa que não existia, por ser vedada pelo Plano Geral de Outorgas. O governo federal dizia não comentar o assunto por ser um assunto “privado”, mas não escondia a insatisfação com a pulverização e já começava a falar na importância de ter uma “grande tele nacional”. Pois bem. Acertadas as tratativas entre os acionistas da Oi e da BrT, o governo não demorou em alterar o Plano Geral de Outorgas, permitindo que a fusão acontecesse. A fusão também foi permitida pelo CADE e pela ANATEL e foi financiada com empréstimo subsidiado do BNDES. Belo jeito de incentivar a concorrência, não acha?

Não demorou muito tempo também para o conto da carochinha que era a história da “grande tele nacional” caísse por terra, com o próprio governo brasileiro intermediando a aquisição de um pedaço da Oi pela Portugal Telecom. Me parece que fica claro que o governo é muito bonzinho com aqueles grandes capitalistas que são amigos do rei – isso não é novidade nenhuma, na verdade: o Estado brasileiro é amigo dos grandes historicamente. Triste né? Isso porque eu nem falei ainda de como a Oi ajudou o filho do Lula (um dos que ganhou passaportes especiais e não devolveu até hoje) a enriquecer investindo rios de dinheiro na recém-criada empresa de jogos. O Brasil é realmente o país das oportunidades!

A pura e simples incompetência

Eu costumo brincar que se nós vivessemos no Brasil anunciado nós estaríamos muito bem. Pena que nós vivemos no Brasil real, aquele que acontece de fato, à revelia dos anúncios e promessas de candidatos e governos. Eu não acredito em nada que o governo anuncie, eu espero pra ver. Por quê? Porque algo que é anunciado acontecer de fato é praticamente a excessão. Quando acontece, demora muito mais do que o anunciado. Pra ficar só no PNBL, no meio de 2010 o governo anunciava aos quatro cantos que até o final do ano teria 100 cidades já atendidas pelo PNBL.

Pra quem conhece a lerdeza e a incompetência do governo mesmo para fazer o básico já era bem óbvio na época do anúncio que não passava de um embuste, talvez com a intenção de dar sustância à campanha da candidata da situação, ou talvez fosse só otimismo injustificado mesmo. Eu prefiro não ver malícia no que pode ser visto como pura incompetência, de qualquer forma tenho certeza de que muita gente acreditou no anúncio. Em dezembro a Telebrás fez novo anúncio, como se nada tivesse acontecido, falando que em abril de 2011 seria alcançada a meta das 100 cidades. Eu não sei vocês, mas a mim me parece que já é junho. Foi só em maio que a Telebrás, a Petrobrás e a Eletrobrás conseguiram chegar a um acordo com relação ao uso das fibras das últimas pela primeira. Isso porque são todas estatais, teoricamente controladas pelo poder público. Como se tinha tanto otimismo com o tempo não sei, mas não custa dar a impressão de que o governo é ágil aos mais desavisados, né?

Conclusão

Eu acredito que um Plano Nacional de Banda Larga é de extrema importância para o Brasil. As comunicações são um mercado complexo, oligopolizado, que precisa de investimentos vultuosos e exige interferência do governo para corrigir falhas de mercado e garantir os interesses dos cidadãos brasileiros e do país. Acreditar que o plano vai dar certo são outros quinhentos. Eu gostaria de ver o governo pelo menos cumprir o básico daquilo que já está na lei, que já é interesse do povo brasileiro ao invés de continuar sendo bonzinho com os grandes empresários amigos.

Um primeiro passo para a universalização da banda larga é o governo federal fazer o dever de casa.