Zeladores da Coerência

Sei que ainda estou devendo um post sobre minha participação no FISL 15, mas o tempo anda meio curto pra falar tudo o que eu quero. Tenho decidido falar de maneira mais “picada”, até pra não fazer o texto ficar muito chato. E esse post aqui é sobre um comportamento que vejo há algum tempo, mas que foi exacerbado por conta do debate sobre a suposta morte do movimento Software Livre no Brasil.

Antes de mais nada, se quiser assistir ao debate, o link direto está aqui. Também sugiro uma visita à página wiki do grupo LibrePlanet São Paulo, na qual você pode encontrar algumas sugestões de outras palestras interessantes que rolaram no evento. Você pode acessá-la nesse link.

Mas voltando ao assunto. Meu objetivo no post não é discutir o debate em si; pretendo fazer isso em um post futuro. O ponto que quero discutir é o comportamento do que chamo de “zeladores da coerência”. São pessoas que existem em qualquer movimento social/político/filosófico, e não poderia deixar de existir no Software Livre. Mas curiosamente, vejo mais contundência naquelas pessoas que não defendem o Software Livre, do que naquelas que o fazem. Explico-me.

O Anahuac fez alguns posts recentemente atacando a falta de distinção entre os movimentos Open Source e Software Livre, especificamente por parte daqueles que fazem parte do primeiro mas se dizem defensores do segundo. Posso classificar, nesse meu post, o Anahuac como sendo um zelador da coerência, apesar de ele mesmo admitir algumas incoerências no seu comportamento, como o uso do Twitter. E, apesar de nem sempre concordar com o tom que ele usa em seus textos, muitas vezes combativos e até perigosamente ácidos, concordo com a maioria dos pontos que ele levanta nos dois artigos que mencionei. Se quiser lê-los, o primeiro é esse aqui, e o segundo tá nesse link. Há bastante tempo, publiquei minhas opiniões (em inglês) sobre esse mesmo assunto, nesse post aqui.

Pois bem, como o Anahuac não tem problema em levar pedradas, ele postou ambos os textos no site BR-[GNU/]Linux, notadamente um reduto Open Source brasileiro. Parei de ler o site há bastante tempo, por conta de diferenças de opinião com o conteúdo publicado, e principalmente por notar sempre um tom irônico e parcial travestido de uma suposta “isenção aos fatos” nos comentários que o autor do site faz sobre as notícias. No entanto, o próprio Anahuac fez questão de trazer à minha atenção a repercussão que os textos estavam tendo, e pediu-me pra ler os comentários do post no BR-[GNU/]Linux. Vale mencionar que o site utilizar o Disqus para oferecer um sistema de comentários, um serviço que não respeita a privacidade dos seus usuários e realiza tracking das atividades dos mesmos. Como não possuo uma conta lá, e utilizo alguns plug-ins para não executar código Javascript não-autorizado no meu navegador, acabei tendo um pouco de trabalho pra conseguir ler os comentários de forma mais ou menos anônima. Mas no fim, consegui. E o que vi, apesar de ser “mais do mesmo”, me deixou bem pensativo.

Não esperava uma reação diferente de parte da comunidade. Como disse, os textos do Anahuac são feitos pra “tocar na ferida” de uma forma às vezes brusca, e que desagrada muita gente. Vários comentários eram ad hominem, e nem merecem menção. Mas o que me chamou a atenção foi a quantidade de pessoas apontando incoerências (supostas ou verídicas) que o Anahuac comete, e retirando dele o direito de apontar qualquer tipo de incoerência na própria comunidade da qual faz parte. E aí fico pensando, será que nós mesmos, ativistas do Software Livre, não estamos colhendo o que plantamos?

Não consigo deixar de falar da minha experiência. Sempre tentei basear meus atos e opiniões em cima da minha própria coerência. Sei que é difícil, e, apesar de muitas vezes (pré)julgar alguém por uma incoerência cometida, tento sempre lembrar que eu mesmo já usei Gmail e Twitter para criticar o Software Livre. Obviamente que, na época, eu não tinha tanto conhecimento a respeito dos perigos de se usar essas ferramentas, mas mesmo assim nada impedia (como, de fato, não impediu!) que alguém chegasse e me acusasse de incoerência. Já, inclusive, condenei o uso do Facebook para divulgar um ex-grupo de Software Livre do qual fazia parte, e recebi como resposta um “conselho” (não muito educado) dizendo que, se eu quisesse usar apenas Software Livre, deveria parar de usar computador, já que independente da máquina eu ia ter que usar algo proprietário. Isso foi proferido por um dos fundadores do tal grupo, um rapaz muito famoso pela falta de educação, mas que, há bastante tempo atrás, acreditava nos mesmos ideais que eu.

É muito difícil rebater um argumento desse tipo. Aliás, é muito difícil rebater um dedo apontado na sua cara mostrando alguma incoerência que você comete, e que está lá como uma resposta a uma acusação sua de uma outra incoerência. Algumas pessoas tendem a se defender justificando seus erros através dos erros dos outros, e quando elas podem usar o próprio “acusador” como um exemplo, melhor ainda (pra elas)! É isso que está havendo, e é essa maré desses zeladores da coerência alheia que me preocupa um pouco. Afinal, sempre vai ser possível encontrar incoerências em qualquer pessoa.

Não sei direito onde quero chegar com esse texto, mas acho que uma coisa está ficando um pouco clara na minha cabeça, ou pelo menos eu estou começando a ver um lado diferente da história toda. Apontar incoerências, por mais evidentes que elas estejam aos nossos olhos, pode não ser a melhor forma de conseguirmos explicar nossos ideais. Pode parecer óbvio (e talvez seja), mas ninguém gosta de ser colocado contra a parede, e pouquíssimas pessoas têm a coragem necessária pra assumir publicamente um erro. Talvez o caminho para a cabeça e o coração das pessoas seja outro. Durante o debate no FISL, o Fred falou algo que tem estado na minha mente com cada vez mais frequência. Pode parecer piegas, mas nós precisamos de mais amor ao próximo, até para podermos entender que nós, também, já estivemos do lado de lá. O Software Livre, como movimento social, político e filosófico que é, vai florescer cada vez mais quando cada ativista olhar pra si mesmo e reconhecer, mesmo que com dificuldade, aquele a quem espera passar um pouco do seu ideal.

É difícil, mas é necessário.


Privacy as a Collective Good

It has been a while since I wanted to write about this subject. At many presentations that I gave during these last 2 years, I used the expression in the title in order to try to raise more awareness about why we should take care of our privacy (and maybe everyone’s). But what does it really mean?

First of all, this article is not a copy of Benjamin Mako’s Google Has Most of My Email Because It Has All of Yours. And I would also like to take this opportunity to recommend this great article; it provides many insights that some people do not even realize.

But back to the point: privacy is a collective good, and we should preserve it. The explanation of why I am calling privacy something “collective” is simple, and if you read Ben’s article you probably know it by now: whenever I send an e-mail to someone who uses Gmail, Google will have a copy of it, even if I don’t have a Google account. What does it mean? It means that I pay my own server in order to run my own e-mail infrastructure and not have my privacy disrespected, but in the end of the day the majority of my efforts are useless. Which boils down to something that may be hard to read, but is true: you are not respecting my privacy. Your displicence with your privacy is forcing me, who needs to communicate with you, to give up my privacy as well, even if for a small portion of time. But it’s not only about e-mail…

Another common example is Facebook. I don’t have an account there, and don’t plan to have one, despite the pressure coming from the society sometimes. However, when you take a picture of me and post it there, or when you mention something about me on your Facebook, you are also disrespecting my privacy. If I don’t have Facebook, it is because I do not want to become a product for them and have my personal data sold to advertisement companies, nor have it shared with the NSA. You, on the other hand, do not care about this, and post things about me and other people without their permission. This is wrong, and you are disrespecting my privacy.

I chose to use this argument because oftentimes people are not concerned about their privacy, and think that “if I have nothing to hide, then I don’t need privacy”. I won’t even begin discussing this absurd, because that is not the point of this article. Instead, I noticed that sometimes people pay more attention if you say that they are disrespecting someone else’s right. Maybe I am wrong, but I still think it is worth trying to open everyone’s eyes for something that seems to have been forgotten by most.


Migrating from Jabberd2 to Prosody

After trying (and failing!) to find a guide, how-to, or anything that could help me in the migration from Jabberd2 to Prosody on my personal server, I decided to write my own version here. I hope it can help other people who want to do this somewhat painful procedure!

Struggling with Jabberd2

When I installed my personal server, I chose Jabberd2 as my Jabber server. At that time, this choice seemed the most logical to me because of a few reasons:

  1. It is written in C, which is my favorite language and, therefore, would make it easier for me if I ever wanted to fix something in the software (as it really happened afterwards).
  2. Looking at the page comparing different Jabber servers at Wikipedia, I found that Jabberd2 was mature enough to be used seriously.
  3. I knew some people who uses it in their own servers, and they said good things about it.

So, the decision seemed pretty simple for me: Jabberd2 would be my choice! And then the problems started…

The first issue I had to solve was not Jabberd2’s fault: I am using Debian Wheezy (stable) in my server, and Jabberd2 is only available for Debian Jessie (testing) or Sid (unstable). Therefore, I had to create my own version of the Jabberd2 Debian package (and all its dependencies that were not packaged) for Wheezy, which took me about 1 day. But after that, I managed to install the software in my server. Then, the configuration hell began…

Jabberd2 uses configuration files written in XML. They are well documented, with helpful comments inside. But they are confuse, as confuse as XML can be. Of course you have to take into account that it was my first time configuring a Jabber server, which added a lot to the complexity of the task. However, I feel compelled to say that the way Jabberd2 organizes its configuration files makes it a much more complex work than it should be. Nevertheless, and after lots of fails, I managed to set the server up properly. Yay!

Now, before I continue complaining, one good thing about Jabberd2: it has never crashed with me. I consider this to be something good because I am a software developer myself and I know that, despite our best efforts, bad things can happen. But Jabberd2 takes the gold medal on this one…

However… My confidence on Jabberd2’s security was severily damaged when I found that the SQLite backend could not encrypt the users’s passwords!!! I stumbled on this issue by myself, while naively dumping my SQLite database to check something there… You can imagine how (badly) impressed I was when I saw my password there, in plaintext. I decided to fix this issue ASAP. Hopefully next users will benefit from this fix.

After that, the bell rang in my head and I started to look for alternatives for Jabberd2. Though I still want to contribute to the project eventually (I am even working on a patch to merge all the database backends), I wanted to have a little bit more confidence in the software that I use as my Jabber server.

Meeting Prosody

Prosody came to my attention when I was setting up the server for our local Free Software group in Brazil. You can reach our wiki here (in pt_BR) if you are interested. We wanted to offer a few services to our members/friends, and Jabber was obviously one of them. This happened after I discovered the bug in Jabberd2’s SQLite backend, so using Jabberd2 was not a choice anymore. We had heard ejabberd, which was being used by Jabber-BR (they recently migrated to Prosody as well), but the fact that it is written in Erlang, a language that I am not familiar with, has contributed to our decision of dropping the idea. So, the only choice left was Prosody itself.

Since I am brazilian, I also feel a little bit proud of Prosody because it is writte in Lua, a programming language designed by brazilians.

We installed Prosody on our server, and it was amazingly easy to configure it! The configuration file is writte in Lua as well, which makes it a lot easier to read than XML. It is also well documented, and I felt that they were more organized too: you have small configuration files splitted by categories, instead of one big XML to edit.

The modular structure of Prosody also impressed me. You can load and unload many modules very easily, generally just by (un)commenting lines on the configuration file. Neat.

Prosody also offers a command-line program to manage the server, which is really helpful if you want to automatize some tasks and write scripts. There is a little thing that still annoys me, which is the fact that this command-line program does not have a very useful “–help” command, but I plan to propose a patch to fix that.

And at last, but definitely not least, Prosody is also very robust, and have not crashed one single time with us. It runs smoothly in the server, and although I haven’t really compared the memory footprint of Jabberd2 and Prosody, I have nothing to complain about it too.

The Migration Process

Well, so after all this story, I think it is clear why I decided to migrate to Prosody. However, it was not an easy task.

Before we begin to understand the procedure needed to do the migration, I would like to say a few things. First, I would like to thank the guys at the Prosody chatroom, who were very helpful and provided several resources to make this migration possible. And I would also like to say that these instructions apply if you are running jabberd2_2.2.17-1 and prosody-0.8.2-4+deb7u2!! I have not tested with other versions of those softwares, so do it at your own risk.

The first thing you have to do is to convert Jabberd2’s database to XEP-0227. This XEP is very nice: it defines a standard format to import/export user data to and from XMPP servers. Unfortunately, not every server supports this XEP, and Jabberd2 is one of those… So I started looking for ways to extract the information which was inside Jabberd2’s SQLite database in a XEP-0227 compatible way. Thanks to the guys at the Prosody chatroom, I found a tool called sleekmigrate. It allowed me to generate a XEP-0227 file that could be imported into Prosody. Nice! But… I needed to extract this information from Jabberd2, and sleekmigrate could not do it. Back to the beginning…

It took me quite a while to figure out how to extract this info from Jabberd2. I was initially looking for ways (other than using sleekmigrate) that would allow me to extract this info directly from Jabberd2’s SQLite database, but could not find it. Only when I read that sleekmigrate could actually work with jabberd14 data directories directly, I had the idead to find a way to convert my SQLite database into a jabberd14 data directory, and then I found this link: it teaches how to migrate from Jabberd2 to ejabberd, and has separate instructions on how to do the Jabberd2 -> Jabberd14 conversion! Sweet!

The first thing you have to do is to download the j2to1 Perl script. I had to patch the script to make it work with SQLite, and also to fix a little bug in a SQL query; you can grab my patched version here. Save the file as j2to1.pl, and run the script (don’t forget to edit the source code in order to provide the database name/file):

This will convert the database from Jabberd2 to Jabberd14, and put the XML file of each Jabber user in the server into jabberd14-dir/host/. Now, you have a Jabberd14 version of your user data. Let’s proceed with the migration.

After following the instructions on the sleekmigrate page on how to set it up, you can run it on your Jabberd14 data directory in order to finally generate a XEP-0227 XML file that will be imported into Prosody.

This should create a file called 227.xml on your current directory, which is the exported version of the Jabberd14 data directory. As a side note, it is always recommended to check those generated files in order to see if everything is OK.

Right, so now you have 227.xml, which means you can finally import it into Prosody. Fortunately, Prosody has a tool to help you with that: it is a Lua script called xep227toprosody.lua. However, if you are doing this using Debian and the same versions of the softwares that I was using, you may find it harder than it seems to run this script without errors. Here is what I had to do.

First, grab a copy of version 0.8.2 of Prosody. I had to do that because using the latest version of the script was not working. I also had to build some POSIX module of Prosody in order to make everything work. To do that, unpack the tar.gz file, go to the Prosody source code directory, and do:

Only after I did that I could finally run the conversion script successfully. The script is locate inside the tools/ directory. To run it:

And yay! I finally had everything imported into Prosody!!!! Then it was just a matter of finishing the server configuration, initializing it, and everything was there: my contacts, my user, etc.

Conclusion

The migration was not very easy, especially because Jabberd2 does not support XEP-0227. I found a bug against Jabberd2 that requested this feature to be implemented, but it was not receiving any attention. Of course, if Jabberd2 implemented XEP-0227 it would make it easier for people to migrate from it, but it would also make it easier to migrate to it, so it is definitely not a bad thing to have.

Despite some difficulties, Prosody made it really easy to import my data, so kudos to it. The Prosody community is also very responsive and helpful, which made me feel very good about it. I hope I can contribute some patches to the project :-).

So, that’s it. I hope this guide will be helpful to anyone who is planning to do this migration. Feel free to contact me about mistakes/comments/suggestions.

Happy migration!


A Droga do Crédito

É uma droga querer crédito por algo. Alguns dizem que é seu direito, dado que você efetivamente tenha feito aquilo pelo qual está pedindo crédito; por outro lado, pessoas com almas supostamente mais evoluídas nos ensinam que o prazer em se fazer algo está contido no ato de fazê-lo, e não no crédito que nos é dado após a realização da tarefa. Quem está certo? O que funciona pra você?

O movimento de Software Livre, visto por um ângulo um pouco não-ortodoxo, funciona na base do “dar e receber”. Você contribui com tempo, dedicação, código, relatórios de problemas, correções, arte, texto, e no fim espera, mesmo que inconscientemente, receber crédito pelo esforço colocado no projeto. Não há nada de errado nisso, e, se o crédito for realmente merecido (o que é uma outra reflexão por vezes dificílima de ser feita!), nada mais justo do que dá-lo.

Por outro lado, é interessante analisar o que ocorre quando o devido crédito não é dado. Sem entrar no mérito do porquê isso aconteceu (relapso, esquecimento, má fé), a pessoa que devia receber esse crédito, mesmo que não o estivesse conscientemente esperando, sofre um abalo — irreversível, por vezes — na vontade de continuar dedicando seu tempo a determinada tarefa. Pode parecer óbvio, mas é preciso olhar para isso com cuidado. O movimento de Software Livre é composto não somente por funcionários de empresas interessadas (financeiramente) no sucesso de determinado software, mas também (e principalmente) por voluntários.

E onde eu entro nisso tudo? Contribuo com Softwares Livres há bastante tempo, e já passei pelas duas situações: fui agraciado com o devido reconhecimento, e fui “esquecido” depois de me esforçar por alguma coisa. Felizmente, na esmagadora maioria dos casos o devido crédito foi-me dado, e não tenho do que reclamar. Mas recentemente passei pelo caso inverso, e senti na pele, mais uma vez, como é ruim não ser lembrado pelo trabalho que realizei, mesmo que isso tenha ocorrido por falta de comunicação e sem nenhuma maldade envolvida.

Tentei, com algum esforço, me colocar na posição de observador, e deixar o papel de “vítima” um pouco de lado. É uma situação muito complicada, e por qualquer ponto que eu tente olhar, não consigo ver uma solução diferente daquela que, de modo egoísta, elegi como a melhor para mim.

Sei o quanto me esforcei para conseguir colocar em movimento uma engrenagem nem sempre fácil de funcionar, que é a de um grupo de apoio ao movimento de Software Livre. Talvez você se lembre do anúncio de fundação do grupo, há mais de 1 ano atrás. E agora, depois de ter feito muita coisa pelo grupo, senti falta de ter um reconhecimento de alguém que considero bastante. Sei que, numa análise mais cuidadosa, a culpada disso foi a falta de comunicação. Mas às vezes não consigo deixar de pensar em como seria bom ter tido um pouco do gostinho de “fiz minha parte, e aquele cara reconhece isso!”.

Enfim, coisas da vida. Esse post ia ficar bem maior, mas decidi cortar mais da metade dele porque não quero ficar no “chororô”. O que importa, no final das contas, é o quanto você acha que está fazendo a coisa certa. No fim do dia, é você quem vai dormir tranquilo, sabendo que se esforçou bastante e que nada do que fez foi em vão. O resto, se vem ou não, é um complemento àquilo que você fez.


Narcissistic behavior

People talk about themselves all the time. Directly or indirectly, they usually have the intention to promote their views, opinions, or increase their self-esteem. I’m wondering now if I’m too radical when I say that I do bother about this behavior…

Sometimes I can’t stand being close to someone who is a narcissist. However, what really pisses me off is talking to someone who pretends not to be a narcissist! This is absurdly annoying. They frequently talk about themselves, mentioning their freaking achievements, secretly waiting for other people to admire them, but they also like to say that they are not so good as they wanted, or that they should give more value to what they do, and so on…

Oh, man. Really? Can’t you just stop appraising yourself externally, and start doing this internally, which is by far the most important thing to do? Can’t you just be a nice guy/girl and stop talking about yourself like you were in a freaking presentation?

On the other hand, I understand that this kind of people probably have some serious internal issues (who doesn’t, huh?), and they probably want everyone to pay attention to them as much as possible. We’ve got to be patient with them, understand their problem, and maybe try to help (how??). But sometimes it’s just too hard to do that.

New year’s resolution? Nah, I don’t think so…