Tag: free-software (subscribe)

This post is massively inspired by a post in the gnu-prog-discuss mailing list. This is a closed list of the GNU Project, and only GNU maintainers and contributors can join, so I cannot put a link to the original message (by Mike Gerwitz), but this topic is being discussed over and over again at many places, so you will not have trouble finding similar opinions. I am also “responding” to a recent discussion that I had with Luiz Izidoro, which is a “friend” (as he himself likes to say) of the LibrePlanet São Paulo group.

Mike's point is simple: we, Free Software activists, are the geeks (or nerds) at school, surrounded by the “popular guys” all over again. In case it is not clear, the “popular guys” are the people who do not care about the Free Software ideology; the programmers who license their softwares using permissive licenses using the excuse of “more freedom”, but give away their work to increase the proprietary world.

It is undeniable that the Free Software, as a technical movement, has won. Anywhere you look, you see Free Software being developed and used. It is important to say that by “Free Software” I mean not only copyleft programs, but also permissive ones. However, it is also undeniable that several proprietary programs and solutions are being developed with the help of those permissive Free Softwares, without giving anything back to the community, as usual.

Numbers speak for themselves, so I am posting here the example that Mike used in his message, about Trello, a “web-based project management application”, according to Wikipedia. It is quite popular among project managers, and I know about two or three companies that use it, though I have never used it myself (luckily). Being web-based, it is full of Javascript code, and I appreciated the work Mike had to determine which pieces of Free Software Trello uses. The result is:

jQuery, Sizzle, jQuery UI, jQuery Widget, jQuery UI Mouse, jQuery UI Position, jQuery UI Draggable, jQuery UI Droppable, jQuery UI Sortable, jQuery UI Datepicker, Hogan, Backbone, JSON2 (Crockford), Markdown.js, Socket.io, Underscore.js, Bootstrap, Backbone, and Mustache

You can see the license headers of all those projects here:

This is only on the client-side, i.e., the Javascript portion. I will not post the link to the full Javascript code (condensed in one single file) because I do not have permission to do so, but it should not be hard to take a look yourself if you are curious.

On the server side, Mike came up with this list of Free Softwares being used by Trello:

MongoDB, Redis, Node.js, HAProxy, Express, Connect, Cluster, node_redis, Mongoose, node-mogodb-native, async, CofeeScript, and probably more

Quite a lot of Free Software, right? And Trello advertises itself as being “free”, which might confuse the inexperient reader because they are talking about price, not about freedom.

The lesson we learn is obvious but no less painful. He who contributes to Free Software using permissive licenses is directly contributing to the dissemination of proprietary software. And the corolary should be obvious as well: you are being exploited. Another nice addition made by Mike is a quote by Larry Ellison, CEO and founder of Oracle Corporation, about Free Software (and Open Source):

“If an open source product gets good enough, we'll simply take it.... So the great thing about open source is nobody owns it – a company like Oracle is free to take it for nothing, include it in our products and charge for support, and that's what we'll do. So it is not disruptive at all – you have to find places to add value. Once open source gets good enough, competing with it would be insane. ... We don't have to fight open source, we have to exploit open source.”

So, do you really think you have more freedom because you can choose BSD/MIT over GPL? Do you really think you it doesn't matter what other people do to your code, which you released as a Free Software? What are your goal with this movement, contribute to a better Free Software ecosystem (which will lead to a society which is more fair), or just getting your name in the hall of (f|sh)ame?

Back to the initial point, about not being “popular” among your friends (or be the “radical”, “extremist”, and other adjectives), I believe Mike hit the nail when he said that, because that is exactly how I am feeling currently, and I know other Free Softwares activists feel exactly the same. To defend a copyleft license is to defend something that is wrong, because, in the “popular kids' view”, copyleft is about anything but freedom! The cool thing now is to be indifferent, or even to think that it is nice that proprietary software can coexist with Free Software, so let's give it a help and release everything we can under permissive licenses. I could mention lots of very nice Free Softwares that chose to be permissive because their maintainers thought (and still think) GPL is evil.

I contributed and still contribute to some Free Softwares that are permissive licensed. And despite trying to use only copyleft software, sometimes I replace some of them by permissive ones, and do not feel guilty about it. I do that because I believe in Free Software, and I believe we should support it in every way we can. But doing so is also nocive to our cause. We are supporting softwares that are contributing to the proprietary world, even if that is not what their developers want. We are making it very easy for people like Larry Ellison to win and think they can exploit what other people are doing for free(dom). We are feeding our own enemy in their mouths. And we should be very careful about that.

This post is a request. I am asking you a favor. Please, consider (re)licensing your project using a copyleft license. If you do value what Free Software is about (or even what Open Source is about!), then help spread it by not helping the proprietary side. I am not asking you to join our ideological cause (or maybe I am?); feel free to stay out of this if you want. But please, at least consider helping the Free Software community by avoiding making your code permissive, which will give too much power to the unethical side.

Thank you!


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.


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.


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):

1
2
3
$> perl j2to1.pl jabberd14-dir/
Converting user@host...
$>

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.

1
$> ./sleekmigrate.py -j /path/to/jabberd14-dir/

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:

1
$> apt-get build-dep prosody && ./configure --ostype=debian && make

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

1
$> cd tools && lua ./xep227toprosody.lua /path/to/227.xml

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


Tags:

É 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.


Ainda não sei se estou preparado pra enfrentar a segunda parte dessa "série", mas também não adianta fugir... O que eu sei é que essas reflexões podem não ser condizentes com a realidade (ou com a sua realidade), e que talvez eu esteja exagerando (ou aliviando) nas minhas observações, mas em todo caso eu espero que seja possível para você, querido leitor, traçar alguns paralelos com o seu modo de ver o mundo, e, quem sabe, mudar algo na sua região.

Preguiça

Este ponto relaciona-se mutuamente com os outros dois pontos (que também relacionam-se mutuamente entre si). É claro, tudo está conectado nesse mundo, até mesmo (e principalmente!) os motivos que levam alguém a se desconectar de alguns valores morais e éticos.

Eu vejo pessoas preguiçosas o tempo todo. Às vezes, sou uma delas (por mais que tente me afastar desse comportamento). Mas creio que existe uma diferença entre alguém inerentemente preguiçoso, e alguém que se deixa levar pela tentação da preguiça por conta de algum outro fator. A minha reclamação, aqui, é com o primeiro tipo de pessoas.

O "teste" pra saber se você se encaixa nesse grupo é: quando você se depara com algum problema difícil de ser resolvido, qual seu modus operandi? Buscar soluções, ou desistir? Tentar você mesmo, ou pedir pra alguém? Aprender com seus erros, ou repetí-los ad eternum? Se você não quis nem pensar sobre esse teste, então acho a resposta é óbvia...

Mas o que isso tem a ver com ativismo? Tudo. Ser ativista é, por definição, ter que enfrentar situações difíceis e desanimadoras, platéias apáticas e desconfiadas, pessoas descrentes e alienadas. E isso tudo é absurdamente frustrante, principalmente quando você acredita naquilo que está falando, e sabe que as pessoas que estão ouvindo precisam entender também! Afinal, como eu falei em outro post, a privacidade (mas não só ela!) é um bem coletivo. A manutenção dela depende da compreensão da comunidade sendo espionada.

Em outras palavras, as empresas, entidades e governos que estão lutando para que você tenha cada vez menos direitos não dormem no ponto. Não vai ser muito legal se nós dormirmos...

Só que esse ponto não se aplica somente aos ativistas em si. Obviamente, encontramos (muitos!) preguiçosos (e preguiçosas) do outro lado, na platéia. É sempre bom (e necessário) assumir que as pessoas pra quem você está falando são ignorantes naquele assunto, e portanto precisam ser instruídas minimamente para que possam tomar decisões maduras e inteligentes. No entanto, mesmo depois de serem alertadas sobre vários fatos e consequências dos seus atos, as pessoas ainda assim preferem continuar na ignorância!! Existem vários nomes pra essa "teimosia", mas eu costumo achar que um dos fatores que contribui pra isso é a preguiça.

Preguiça em levantar da cadeira e procurar soluções que respeitem você e sua comunidade. Preguiça em continuar pensando (ou seja, "sempre alerta") sobre quais os riscos você está efetivamente correndo quando usa aquela "rede social". Preguiça em mudar os hábitos. Preguiça em lutar por seus direitos virtuais. Enfim, preguiça.

Preconceito

Esse é um dos pontos mais problemáticos. O preconceito está enraizado nas pessoas, sem exceção. E o preconceito contra ativistas, de qualquer tipo, é evidente.

Ser ativista não é somente acreditar em algo. Ser ativista é principalmente saber de algo, e querer levar essa sabedoria para as pessoas. Obviamente, existem vários tipos de ativismo, mas quando olho pro que eu faço, eu me vejo mais como alguém que sente ser sua obrigação ensinar as pessoas sobre algo que é desconhecido da maioria. Apesar de realmente esperar que as pessoas acreditem nos valores que eu tento passar (e quem não espera?), acredito que meu objetivo principal seja o de "habilitar" a sociedade a tomar decisões conscientes sobre os assuntos que tento "ensinar".

Algumas pessoas têm medo ou vergonha de me falar que usam Facebook, Twitter, ou algum software não-livre. Mas eu noto que, na maior parte dos casos, o medo delas decorre do fato de elas saberem que eu não "gosto" de nenhum desses itens, e não do fato de elas saberem por que eu não gosto deles. E nesse caso, eu não sinto raiva ou decepção pela pessoa com quem estou conversando, mas sim uma necessidade de realmente explicar o motivo de eu não concordar com a utilização desses programas! Sei que se eu explicar, na verdade eu estarei dando ferramentas pra que a pessoa consiga, ela mesma, decidir se quer continuar usando-os. Essa é minha tarefa, no final das contas. Permitir que o usuário de tecnologia consiga, de forma consciente e ética, escolher o que quer e o que não quer. Mas aí entra o preconceito...

Quando começo a falar, é inevitável usar expressões como "liberdade", "respeito", "ética", "comunidade", "privacidade", "questões sociais", etc. Elas são o cimento pra que eu possa construir meus argumentos, e não creio que palavras ou expressões por si só possam definir um liberal de um conservador, por exemplo. No entanto, o que mais vejo são pessoas que confundem ativistas de Software Livre com comunistas ou socialistas. E como hoje a moda é o conservadorismo, às vezes as pessoas ignoram tudo aquilo que falamos por conta desse preconceito idiota.

Meu objetivo não é discutir sobre se é bom ou ruim ser socialista/comunista (apesar de eu definitivamente não ser "conservador", e achar esse preconceito absurdo). Mas o que deve ficar claro é que o Software Livre, apesar de ser um movimento político, não é um movimento partidário. Defendemos valores bem definidos, que podem ou não ter a ver com idéias comunistas/socialistas, mas que não advogam a favor desse movimento político. Também é importante mencionar que, por ser um movimento social, é natural que muitas idéias e preceitos defendidos pelos ativistas de Software Livre sejam simpáticos à causa socialista/comunista. Mas isso obviamente não faz com que Stallman seja o novo Stalin (apesar da semelhança dos sobrenomes).

Enfim, o meu pedido para a comunidade em geral é: ouçam a mensagem, independente do interlocutor, e pensem a respeito, independente da sua orientação político-partidária. Aquilo pelo qual lutamos independe de partido, religião, time de futebol, nacionalidade. Depende simplesmente de seres humanos, de uma comunidade que não tem fronteiras, não tem uma única cultura, mas que merece mais respeito. Só que, infelizmente, vamos ter que exigir isso.


The Free Software Foundation has a Twitter account. Surprised? So am I, in a negative way, of course. And I will explain why on this post.

You may not agree with me on everything I write here, and I am honestly expecting some opposition, but I would like to make it crystal clear that my purpose is to raise awareness for the most important "feature" an organization should have: coherence.

The shock

I first learned about the Twitter account on IRC. I was hanging around in the #fsf channel on Freenode, when someone mentioned that "... something has just been posted on FSF's Twitter!" (yes, it was a happy announcement, not a complaint). I thought it was a joke, but before laughing I decided to confirm. And to my deepest sorrow, I was wrong. The Free Software Foundation has a Twitter account. The implications of this are mostly bad not only for the Foundation itself, but also for us, Free Software users and advocates.

Twitter uses Free Software to run its services. So does Facebook, and I would even bet that Microsoft runs some GNU/Linux machines serving intranet pages... But the thing is not about what a web service uses. It is about endorsement. And I will explain.

Free ads, anyone?

I remember having this crazy thought some years ago, when I saw some small company in Brazil putting the Facebook logo in their product's box. What surprised me was that the Facebook logo was actually bigger than the company's logo! What the heck?!?! This is "Marketing 101": you are drawing attention to Facebook, not to your company who actually made the product. And from that moment on, every time I see Coca Cola putting a "Find us on http://facebook.com/cocacola" (don't know if the URL is valid, it's just an example) I have this strange feeling of how an internet company can twist the rules of marketing and get free ads everywhere...

My point is simple: when a company uses a web service, it is endorsing the use of this same web service, even if in an indirect way. And the same applies to organizations, or foundations, for that matter. So the question I had in my mind when I saw FSF's Twitter account was: do we really want to endorse Twitter? So I sent them an e-mail...

Talking to the FSF - First message

I have exchanged some interesting messages with Kyra, FSF's Campaign Organizer, and with John Sullivan, FSF's Executive Director. I will not post the messages here because I don't have their permission to do so, but I will try to summarize what we discussed, and the outcomings.

My first message was basically requiring some clarifications. I had read this interesting page about the presence of FSF on Twitter, and expressed my disagreement about the arguments used there.

They explicitly say that Twitter uses nonfree JavaScript, and suggest that the reader use a free client to access it. Yet, they still close their eyes to the fact that a big part of the Twitter community use it through the browser, or through some proprietary application.

They also acknowledge that Twitter accounts have privacy issues. This is obvious for anyone interested in privacy, and the FSF even provides a link to an interesting story about subpoenas during the Occupy Wall Street movement.

Nevertheless, the FSF still thinks it's OK to have a Twitter account, because it uses Twitter via a bridge which connects FSF's StatusNet instance to Twitter. Therefore, in their vision, they are not really using Twitter (at least, they are not using the proprietary JavaScript), and well, let the bridge do its job...

This is nonsense. Again: when a foundation uses a web service, it is endorsing it, even if indirectly! And that was the main argument I have used when I wrote to them. Let's see how they replied...

FSF answers

The answer I've got to my first message was not very good (very weak arguments), so I won't even bother talking about it here. I had to send another message to make it clear that I was interested in real answers.

After the second reply, it became clear to me that the main point of the FSF is to reach as many people as they can, and pass along the message of software user freedom. I have the impression that it doesn't really matter the means they will use for that, as long as it is not Facebook (more on that latter). So if it takes using a web service that disrespects privacy and uses nonfree Javascript, so be it.

It also seems to me that the FSF believes in an illusion created by themselves. In some messages, they said that they would try to do a harder job at letting people know that using Twitter is not the solution, but part of the problem (the irony is that they would do that using Twitter). However, sometimes I look at FSF's Twitter account, and so far nothing has been posted about this topic. Regular people just don't know that there are alternatives to Twitter.

I will take the liberty to tell a little story now. I told the same story to them, to no avail. Let's imagine the following scenario: John has just heard about Free Software and is beginning to study about it. He does not have a Twitter account, but one of the first things he finds when he looks for Free Software on the web is FSF's Twitter. So, he thinks: "Hey, I would like to receive news about Free Software, and it's just a Twitter account away! Neat!". Then, he creates a Twitter account and starts following FSF there.

Can you imagine this happening in the real world? I definitely can.

The FSF is also mistaken when they think that they should go to Twitter in order to reach people. I wrote them, and I will say it again here, that I think we should create ways to reach those users "indirectly" (which, as it turns out, would be more direct!), trying to promote events, conferences, talks, face-to-face gatherings, etc. The LibrePlanet project, for example, is a great way of doing this job through local communities, and the FSF should pay a lot more attention to it in my opinion! These are "offline" alternatives, and I confess I think we should discuss the "online" ones with extra care, because we are in such a sad situation regarding the Internet now that I don't even know where to start...

And last, but definitely not least, the FSF is being incoherent. When it says that "it is OK to use Twitter through a bridge in a StatusNet instance", then it should also be coherent and do the same thing for Facebook. One can use Facebook through bridges connecting privacy-friendly services such as Diaspora and Friendica (the fact that Diaspora itself has a Facebook account for the project is a topic I won't even start to discuss). And through those bridges, the FSF will be able to reach much more people than through Twitter.

I am not, in any way, comparing Twitter and Facebook. I am very much aware that Facebook has its own set of problems, which are bigger and worse than Twitter's (in the most part). But last time I checked, we were not trying to find the best between both. They are both bad in their own ways, and the FSF should not be using either of them!

Conclusion

My conversation with the FSF ended after a few more messages. It was clear to me that they would not change anything (despite their promises to raise awareness to alternatives to Twitter, as I said above), and I don't believe in infinite discussions about some topic, so I decided to step back. Now, this post is the only thing I can do to try to let people know and think about this subject. It may seem a small problem to solve, and I know that the Free Software community must be together in order to promote the ideas we share and appreciate, but that is precisely why I am writing this.

The Free Software movement was founded on top of ideas and coherence. In order to be successful, we must remain coherent to what we believe. This is not an option, there is no alternative. If we don't defend our own beliefs, no one will.


Nesse último fim de semana, durante os dias 20 e 21 de Setembro (sexta-feira e sábado, respectivamente), ocorreram dois eventos sobre Software Livre na UNICAMP. Um deles, o Upstream, foi um "evento teste" que ajudei a organizar junto com o Cascardo e o Leonardo Garcia, ambos do LTC/IBM. O outro, o Software Freedom Day (SFD), eu organizei em nome do LibrePlanet São Paulo. Durante os dois eventos (e principalmente durante o SFD) eu fiquei pensando e refletindo bastante sobre vários assuntos relacionados (ou não) com o Software Livre. Resolvi, então, aproveitar a oportunidade e escrever um pouco sobre essas opiniões.

Antes, um breve relato dos dois eventos. Gostei parcialmente do resultado que obtivemos com o Upstream. Acho que a qualidade dos palestrantes foi ótima, e as discussões tiveram um nível muito bom. No entanto, os workshops deixaram a desejar. Pelo pouco que pensei a respeito, cheguei à conclusão de que faltou organização para definirmos os assuntos que iriam ser abordados, e principalmente o melhor modo de abordá-los. Assumo minha parcela de culpa nisso, afinal eu tentei ajudar na organização do workshop de toolchain e ele não saiu do modo como esperávamos. Problemas na infra-estrutura do local também atrapalharam no resultado final. Mas, de modo geral, e levando em conta que essa foi a primeira edição do evento, acho que conseguimos nos sair razoavelmente bem. Certamente já temos muitas coisas pra pensar e melhorar para a próxima edição!

Já sobre o SFD, apesar de várias pessoas muito boas terem participado do evento, a minha impressão inicial (e forte) foi a de que fazer a sociedade se interessar (ou ao menos ouvir, se bem que os dois conceitos são intrinsecamente ligados) por assuntos que são de suma importância para a manutenção (ou, no caso, a restauração) de um Estado que a respeite é mais difícil do que eu pensava. E essa é também a primeira reflexão do post.

Indignação x Ignorância

Há um conflito muito grande acontecendo com as pessoas. Provavelmente ele não é "de hoje", mas de qualquer modo ele existe e precisa ser resolvido. O conflito, do modo que vejo, pode ser resumido da seguinte forma: "até que ponto eu quero sentir indignação sobre um assunto, de modo que eu não precise necessariamente tomar alguma atitude sobre ele?". Ou seja, a pessoa opta voluntariamente por permanecer na ignorância parcial, para que ela não se sinta obrigada a tomar uma posição sobre determinado problema que a atinge.

Tomemos o exemplo do Facebook. Alguém que tenha uma conta lá (i.e., "quase todo mundo") prefere se manter na ignorância sobre os termos de serviço e privacidade que o site possui. Não estou entrando no mérito de operações clandestinas de espionagem; estou falando sobre os textos disponíveis no site do Facebook e que explicam (talvez não de maneira muito clara, mas isso já é outro problema) o que o site faz e não faz a respeito dos seus dados. É uma opção. É mais fácil apenas usar o site, compartilhar imagens engraçadas com seus mil "amigos", e não olhar para uma questão que deveria ser muito mais importante do que qualquer "like" que possa ser dado.

Não sou sociólogo e estou longe de poder dar opiniões acadêmicas sobre esse assunto, mas tenho a impressão de que o que acontece é um "retardo social" na maioria dos cidadãos deste planeta. Não deixa de ser um paradoxo o fato de que esse comportamento é exacerbado através de uma "rede social", que se traveste de facilitadora de comunicações entre indivíduos para poder exercer a derradeira função de uma empresa: ganhar dinheiro. É importante frisar que não sou contra "ganhar dinheiro", mas sou contra vários meios que são usados pra atingir esse objetivo.

No final, o produto somos nós, ou nossa privacidade. E quando eu digo "nós" ao invés de "eles", é porque eu fiz uma outra reflexão...

Privacidade é um "bem" coletivo

Pode parecer paradoxal à primeira vista, mas pare e pense um pouco. A privacidade é sim um direito do indivíduo, mas quando você opta por não tê-la, você está fazendo essa opção em nome de todas as pessoas que se comunicam com você. Afinal, se você não se importa se alguém está lendo suas mensagens, então qualquer tipo de comunicação que chega até você pode e vai ser lida. E se essa comunicação partir de alguém que preza pela própria privacidade, não vai fazer diferença alguma: a mensagem será lida de qualquer jeito, porque você escolheu isso.

Estou acostumado a ouvir pessoas dizerem que elas não são tão importantes a ponto de despertarem interesse em algum governo para que ele queira espioná-las. "Portanto", dizem as pessoas, "não preciso me preocupar". Bem, acho que esse argumento não invalida de maneira alguma o fato de que proteger a própria privacidade é importante. Não interessa o quão público alguém é; se ele não preza pela sua privacidade, ele está abrindo mão de algo que afeta direta ou indiretamente várias pessoas.

O meu ponto aqui é simples. Faça a sua parte e proteja a sua privacidade. Ninguém vai fazer isso por você, mas todos precisam e podem fazer suas respectivas partes. É um trabalho em conjunto, mas que depende da cooperação de todos. Se alguém perto de você não se importar, você provavelmente vai ser prejudicado.


It is really nice to see something you did in a project influence in future features and developments. I always feel happy and proud when I notice such scenarios happening, and this time was no different. Gary Benson, a colleague at Red Hat who works in the GDB team as well, has implemented a way of improving the interface between the linker and the debugger, and one of the things he used to achieve this is the GDB <-> SystemTap integration that I implemented with Tom Tromey 2 years ago. Neat!

The problem

You can read a detailed description of the problem in the message Gary sent to the gdb-patches mailing list, but to summarize: GDB needs to interface with the linker in order to identify which shared libraries were loaded during the inferior's (i.e., program being debugged) life.

Nowadays, what GDB does is to put a breakpoint in _dl_debug_state, which is an empty function called by the linker every time a shared library is loaded (the linker calls it twice, once before modifying the list of loaded shlibs, and once after). But GDB has no way to know what has changed in the list of loaded shlibs, and therefore it needs to load the entire list every time something happens. You can imagine how bad this is for performance...

The solution

What Gary did was to put SDT probes strategically on the linker, so that GDB could make use of them when examining for changes in the list of loaded shlibs. It improves performance a lot, because now GDB doesn't need to stop twice every time a shlib is loaded (it just needs to do that when stop-on-solib-events is set); it just needs to stop at the right probe, which will inform the address of the link-map entry of the first newly added library. It means GDB also won't need to walk through the list of shlibs and identify what has changed: you get that for free by examining the probe's argument.

Gary also mentions a discrepancy that happened on Solaris libc, which has also been solved by his patch.

And now, the most impressing thing: the numbers! Take a look at this table, which displays the huge improvement in the performance when using lots of shlibs (the time is in seconds):

Number of shlibs 128 256 512 1024 2048 4096
Old interface > 0 > 1 > 4 > 12 > 47 > 185
New interface > 0 > 0 > 2 > 4 > 10 > 36

Impressive, isn't it?

Conclusion

This is one the things I like most in Free Software projects: the possibility of extending and improving things by using what others did before. When I hacked GDB to implement the integration between itself and SystemTap, I had absolutely no idea that this could be used for improving the interface between the linker and the debugger (though I am almost sure that Tom was already thinking ahead!). And I can say it is a pleasure and I feel proud when I see such things happening. It just makes me feel more and more certain that Free Software is the way to go :-).


Hi, there! This is the report of the Document Freedom Day event that took place in Campinas, São Paulo state, Brazil. I will talk a little bit about how we (keep reading to know who "we" are!) organized it, and the conclusions that can be drawn to help for the next edition.

Organization

The DFD (or Document Freedom Day) 2013 in Campinas was organized by the LibrePlanet São Paulo (link in pt_BR) group. If you follow this blog, and if you speak portuguese, then you have probably read the announcement of the group that I made last year. If you haven't: LibrePlanet São Paulo is part of the LibrePlanet project (sponsored by the Free Software Foundation), and "... is a global network of free software activists and teams working together to help further the ideals of software freedom by advocating and contributing to free software.".

The DFD 2013 was an important event to us because it was the first serious event that we organized as a group. Despite some mistakes and errors, I believe we did fine and were able to learn some great lessons for the next events that we plan to do. By the way, if you want to see the official page which we used to promote the event (and organize it too), take a look here. The page is in pt_br.

Basically, we should have: (a) focused more on defining the venue as soon as possible, because that would have made it possible to (b) start sending announcements about the event earlier. We also should have contacted the Document Freedom organization and asked swags and banners earlier, because when we did it was too late for the shipment to arrive in time. And last but not least, we should really have taken pictures!! Unfortunately, I have absolutely no pictures to post here, so you will have to believe just in the words I write...

But well, nothing is perfect, and hey, the event happened!. So let's talk it :-).

The Event

DFD 2013 occurred on Wednesday, March 27th. After some discussion, we decided to schedule the event from 13h (1 p.m.) to 17h (5 p.m.), with 4 presentations of 50 minutes each, approximately. The venue chosen was CCUEC, the Center of Computing at the University of Campinas, UNICAMP. This center has some great people working on it who are involved with Free Software since the beginning of the movement, particularly Rubens Queiroz de Almeida, a very nice guy (very famous in the Brazilian Free Software scene) who helped us a lot with the organization of this event.

We understand that doing the event on a Wednesday afternoon was something that made it very hard for most people to attend, and that is probably the main reason for the low attendance: only 8 people in the audience. I have to say I was a little frustrated in the beginning, but hey, what really matters is that we spread the word about Free Software to 8 brave souls there, who will hopefully spread the word again to more people, and so on :-). So, it was time for the show to begin!

Our schedule was (presentation titles translated):

  1. "What is Free Software?", by me
  2. "Free Documents or the End of the World", by Rubens Queiroz de Almeida
  3. "HTML5: all the faces of the new standard", by Ricardo Panaggio
  4. "EPUB3: The book in the XXI century", by Raniere Silva

So my presentation was scheduled to be the first one, and I really liked it (surprise!). It was virtually the first time I gave a "philosophical" talk, and a very important one: a general presentation about Free Software, its history, the present, and a little bit of the future. In my opinion, what I liked about my talk is that I focused less on the "freedom" part, and more on the "respect" part of the philosophy. This is something I did because I wanted to use a different argument that was on my head for a long time: that the main thing behing the Free Software is the respect towards others, and only with that one can achieve freedom.

I watched Rubens too, who gave an excelent presentation about why we need free documents and standards. Rubens is very talkative and warm, which makes the audience feel relaxed. People liked his presentation a lot, from what I noticed.

Unfortunately, Ricardo Panaggio had a problem with his computer before his presentation, so we decided to switch: Raniere Silva would take his place as the third presenter, while Ricardo tried to fix the problem. I helped him with his problems, and because of this I was unable to watch Raniere's talk. In the end, we could not solve Ricardo's problem and he decided to give his presentation without any slides. In my opinion, he managed to catch everyone's attention (also because HTML5 is such a hot topic today), so I guess the missing slides were not so important after all!

At 17h o'clock, we declared DFD 2013 finished. I still had time to distribute some Free Software stickers (from FSF), and talk a little with two or three people there, who were satisfied with the presentations! It made my day, of course :-). And just because of that I now feel motivated to organized another DFD next year!

Acknowledgements

I would like to thank Rubens Queiroz for helping with the promotion, the location, and the presentation during the event. DFD 2013 would have been impossible without his help. Thanks, Rubens!

The LibrePlanet São Paulo team, specially Ricardo Panaggio, were also deeply involved with me in the organization. And I hope we manage to make a bigger event next year!

Finally, I would like to thank everyone who attended the event, even for watch only one talk. Your presence there was really, really important to all of us. See you all next year!