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…


A falta de uns Quaresmas

É preciso ter paciência pra viver nesse país. Vejo duas aglomerações que se juntam, misturadas ou não, nesse mar de reclamações.

A primeira, composta por pessoas que reclamam do Brasil, e querem sair do país de qualquer modo. Vislumbram-se diante de qualquer estrangeirismo, viajam para o exterior e voltam querendo viver lá (dizendo que querem aprender uma nova cultura, mas na verdade querendo fugir das terras tupiniquins), espumam de raiva quando falam dos problemas daqui, e, às vezes, sentenciam: esse país não tem jeito.

A segunda aglomeração, que à primeira vista parece se importar com a nação, é a dos que defendem algum partido político. Com os desdobramentos do episódio do mensalão, pipocam pessoas desse tipo. Pode parecer que elas estão interessadas no bem da população, ao concordar/discordar da condenação e prisão dos réus. Ledo engano.

Com o episódio do mensalão, e o desfecho que está acontecendo, é difícil não sentir-se enojado. Mas o motivo do nojo varia… Alguns, com o bico largo, enojam-se comemorando as prisões, independente da legalidade das mesmas, como se fosse um alívio ver que os presos não tiveram um tratamento muito digno. Outros, vermelhos (não só) de raiva, enojam-se com a falcatrua que supostamente está acontecendo desde o início do escândalo, e mais ainda com a prisão injusta (na visão dos mesmos) dos acusados pela corrupção. Já eu…

Eu me enojo de ver os nojos. É meio contraditório, mas eu me sinto no meio de um lamaçal, com porcos atirando sujeira de todos os lados. Às vezes, confesso, fica difícil distinguir quem é quem. E eu já vi cada tipo de sujeira…

De um lado, os petistas e simpatizantes agem, em sua maioria, como se os presos fossem santos sendo apedrejados em praça pública. Já vi pessoas dizendo que o que o PT fez não foi tão grave, ou que tudo não passa de mentira, ou que o PT apenas usou dinheiro privado em campanha (caixa 2, proibido por lei), e que isso não é muita coisa se comparado com o que o PSDB fez (mesmo sem saber dizer direito o que é que eles fizeram).

De outro lado, os tucanos e simpatizantes também agem, em sua maioria, de maneira completamente irracional. Justificam que o PSDB não tem corruptos, e que se tivesse, eles seriam expulsos. Dizem que o PT é o câncer que precisa ser extinto, e não se interessam em olhar pra coisas boas que eles fizeram, afinal, “se é do PT não pode ser bom”. Usam o mensalão como argumento para qualquer discussão, não importando se estão certos ou não. E ainda têm coragem de dizer que, mesmo que o julgamento tenha sido uma farsa, os condenados ainda mereceriam estar presos. Querem justiça, mas do jeito deles.

Eu, que não sou fã de futebol, e abomino qualquer tipo de torcedor (seja desse esporte ou não), sinto-me dentro de um jogo, e não de um país. As torcidas não querem ver um jogo bonito, elas querem sangue. Todos querem que seu time ganhe, mesmo que pra isso seja necessário uma ajuda do árbitro. E nada mais importa caso meu time perca. Fui roubado, o técnico é uma porcaria, o campo estava ruim, tudo aconteceu pra que meu time fosse prejudicado.

Não se deixe enganar: essas pessoas, esses partidários, eles não estão preocupados com o bem do país. Eles preocupam-se com o bem do partido, e apenas isso. Se o partido faz o bem para o país, melhor. Se ele faz algo errado, bem, paciência, nem tudo é perfeito… Isso me lembra das manifestações que ocorreram em Junho/Julho. Na época, a maioria dos que saíram às ruas não queria bandeiras e nem vínculo com partidos. E, enquanto os petistas começaram a taxar isso de “fascismo”, os tucanos se aproveitaram da situação e, tacitamente, infiltraram pessoas nos conglomerados. Na época, não estava claro pra mim quem estava certo ou errado, mas hoje, ao olhar pra trás, vejo que os dois partidos, mais uma vez, só estavam olhando pro próprio umbigo! Extremamente triste…

E, como se não bastasse, vejo-me cercado por pessoas que não valorizam seu próprio país. Óbvio que, para mim, esse tipo de pessoa tem muito em comum com o tipo que descrevi acima, e que vou chamar de “partidário”. A pessoa que quer sair do país, por fora, pode parecer muito diferente do partidário. Ela, muitas vezes, nem partido político tem. Não acredita em muita coisa no Brasil, então prefere não se misturar. Além disso, em geral (mas nem sempre), ela tende a ficar alheia aos acontecimentos políticos, e só opina quando algo grande acontece, criticando indiscriminadamente qualquer político que esteja envolvido (mesmo sem provas). Uma outra característica é que, como atualmente virou moda ser conservador, essa pessoa tende a posicionar-se sempre contra a esquerda, porque, afinal, “comunismo é ruim e ponto”. Mas não é de se estranhar que ela ache isso, afinal, estudar história não é muito o seu forte…

Essa pessoa não conhece muito a história do Brasil. Não aprecia coisas daqui, não ouve música brasileira, não vê ou sente o jeito que o brasileiro tem de lidar com problemas, e não se preocupa em conhecer detalhes da nossa história e, acima de tudo, compara pejorativamente qualquer coisa brasileira. Essa pessoa quer mudar do Brasil, e não se importa em mudar o Brasil.