Defesa da minha dissertação de mestrado

Atualização 24/10/2017: atualizei o PDF da dissertação com a versão final que incorpora as sugestões feitas pela banca durante a defesa.

Para quem se interessar, a defesa da minha dissertação de mestrado, cujo título é “O discurso do global nas comunidades de software livre: estudo de caso do WordPress”, será no dia 28/09 às 13h no bloco H na sala 324-B do Centro de Tecnologia da UFRJ na Ilha do Fundão. A sala ainda não foi definida. Publicarei mais informações no evento abaixo no Facebook:

https://www.facebook.com/events/1445220408900858

O texto na íntegra está disponível para download neste link. Segue o resumo da dissertação:

As comunidades de software livre comumente se identificam como globais, como sendo compostas por pessoas distribuídas por todo o mundo. A ideia difundida é que a participação nestes grupos é aberta a todas e que o local de residência das colaboradoras não é relevante. Neste contexto, esta dissertação busca problematizar o discurso do global destas comunidades por meio de um estudo de caso do software livre WordPress, inspirada pela desconstrução da ideia de uma ciência universal, defendida por autores dos Estudos CTS (Ciências-Tecnologias-Sociedades). Para isso, são apresentados um histórico do software, como o seu desenvolvimento é organizado, a distribuição das contribuições ao repositório de código por indivíduo e um levantamento do país de residência e do idioma falado pelas desenvolvedoras*. Os resultados mostram que, pelo menos no que diz respeito às pessoas que estão construindo o software, existe uma concentração grande em poucos países, especialmente nos Estados Unidos e em outros países de língua inglesa, o que coloca em questão o discurso do global presente nas comunidades de software livre.

* Na dissertação optei por utilizar o gênero feminino ao invés do costumeiro masculino quando me refiro genericamente a pessoas (a/s programadora/s, a/s alunas, a/s desenvolvedora/s,etc).

A first look at the WordPress developer community

I’m researching the organization of WordPress development as part of my master’s degree. The full article is available in Portuguese in this link. In this post I will briefly share the first results I got analysing WP code repository with two goals in mind:

  1. Compare core developers’ contributions made directly on the repo with the community’s contributions made via a patch on Trac.
  2. Problematize the notion that free software communities are composed by individuals from all over the world by checking where WordPress developers live.

The data was extracted from WP Git repository (git://develop.git.wordpress.org/) on May 2014 using a modified version of gitinspector. The software was adapted to parse the commit message searching for a “props” tag to identify contributions made by non-core developers. Only commits changing PHP, JS or CSS files were taken into account. 25,692 commits were analysed. Among those, 32 core developers made 14,882 commits (58% of total) and 1346 non-core developers made 10,810 commits (42% of total). Considering only non-core developers, 767 individuals made a single contribution and 368 made two contributions.

After getting the list of developers that contributed to WordPress, their location was retrieved by a script from their profile page on wordpress.org. The location field on the profile page is an open non-mandatory field so OpenStreetMap API was used to normalize the data. Using this method it was possible to determine the country of residence of 603 developers (43% of total).

Figure 1 shows the cumulative distribution of core developers’ contributions to the code base (including the commits they made with contributions sent by others via Trac). The different lines shows the cumulative fraction of commits, lines added and lines removed. As can be seem 9 developers were responsible for more than 80% of the contributions.

fig1

Figure 2 plots the cumulative distribution to the code base made by core and non-core developers. In this case there is a larger distribution of the work, 50 developers did 80% of the commits.

fig2The next four figures show the country of residence of the developers and the main language spoken in those countries. Figure 3 represents core developers’ country of residence. The majority of the 32 core developers are based in USA (56%). There are no core developers in Latin America and Africa and only one in Oceania and one in Asia.

fig3As shown in figure 4, the vast majority (84%) of core developers live in countries where the main language is English (27 out of 32).

fig4Figure 5 shows the same analysis as figure 3 but considering core and non-core developers. It was possible to identify developers from 58 different countries. Almost 50% (298 individuals) of them live in USA, 10% (55 individuals) in UK and 5% (32 individuals) in Canada. The remaining 35% are distributed across 55 countries. 55% of the total number of developers are in North America, 32% in Europe, 9% in Asia and the remaining 4% in Oceania, South America and Africa.

fig5At last, figure 6 represents the main language spoken in core and non-core developers’ country of residence. Again the majority (67%) is based in English speaking countries.

fig6The results shown in this post are part of an ongoing research. Any feedback or suggestion will be greatly appreciated. Next I intend to expand this study  applying the same analysis to the plugins repository and Trac.

Palestra sobre o WP-CLI no WordCamp BH 2014

Hoje dei uma palestra sobre o WP-CLI no WordCamp Belo Horizonte 2014.

O WP-CLI é um conjunto de ferramentas para gerenciar o WordPress na linha de comando.

A apresentação foi muito parecida com a que dei ano passado no WordCamp São Paulo. Fiz algumas pequenas modificações nos slides e publiquei eles no link abaixo:

http://rodrigoprimo.github.io/wp-cli-wordcamp-bh-2014/

Palestra sobre o WP-CLI no WordCamp São Paulo 2013

Amanhã vou dar uma palestra sobre o WP-CLI no WordCamp São Paulo 2013.

O WP-CLI é um conjunto de ferramentas para gerenciar o WordPress na linha de comando.

Segue abaixo o link para os slides que fiz para a apresentação:

http://rodrigoprimo.github.io/wp-cli-presentation/

Relato do WordCamp San Francisco 2013

Na última semana de julho, eu, Leo e Catia fomos, representando o Hacklab, para San Francisco para participar do WordCamp San Francisco 2013, o maior evento da comunidade do WordPress. Foi uma ótima oportunidade para conhecer alguns dos desenvolvedores da Automatic e saber quais são os planos para o futuro do projeto e da comunidade.

Os dois primeiros dias do evento foram dedicados a palestras dividas em duas trilhas. A primeira tinha como público alvo desenvolvedores e designers e a segunda usuários e empreendedores. O terceiro e último dia foi reservado para o Contributor Day, onde os interessados tem a oportunidade de contribuir diretamente com o WordPress.

Saguão de entrada do WordCamp San Francisco 2013
Saguão de entrada do WordCamp San Francisco 2013

Do primeiro dia destaco as palestras Confident Commits, Delightful Deploys do Mark Jaquith (slides) e a Writing Code as User Experience Design do Nikolay Bachiyski.

A palestra do Mark Jaquith tratou de boas práticas para todos os desenvolvedores e sysadmins que trabalham com WordPress, em especial na hora de publicar uma nova versão do código. Ele reforçou algumas coisas que já deveriam ser senso comum (e que infelizmente ainda não são), como o uso de um sistema de controle de versão. Também citou algumas ferramentas que facilitam bastante o fluxo de trabalho como o WP Stack ou o Capistrano-WP para fazer deploys, Puppet ou Chef que são ferramentas para o gerenciamento das configurações dos servidores e, por fim, o Vagrant para criar um ambiente de desenvolvimento semelhante ao servidor onde o site está publicado.

Na palestra do  Nikolay Bachiyski, ele explorou o que os desenvolvedores podem aprender da experiência de quem estuda user experience designConsiderando que um desenvolvedor passa mais de 70% do seu tempo de trabalho lendo código e não escrevendo, quando criamos código temos que nos preocupar com a experiência do usuário, que neste caso serão os outros desenvolvedores que terão contato com ele. Além de sugerir algumas boas práticas para criação de código, ele mostrou alguns vídeos da tela e cara de alguns desenvolvedores enquanto estes criavam uma página usando a Settings API do WP.

Já do segundo dia destaco as palestras Three Security Issues You Thought You’d Fixed do Mike Adams e a Magical WordPress Management using WP-CLI do Mike Schroder (slides).

No último dia teve ainda o State of the Word 2013 do Matt Mullenweg. Nele o fundador do WordPress falou do crescimento do software que agora representa 18,9% de todo o conteúdo da web (ano passado era 16,7%), do uso crescente a partir de plataformas móveis e de um novo modelo de desenvolvimento para o core. A ideia é implementar ciclos mais curtos de release com o lançamento das versões 3.7 e 3.8 ainda esse ano e organizar os desenvolvedores do core em pequenos times que trabalhem em plugins. Quando um plugin estiver pronto ele é incorporado ao código principal. Este novo modelo já está sendo testado com o desenvolvimento da nova interface para o admin.

No Contributor Day trabalhei na automatização dos testes unitários do core do WordPress utilizando o Travis CI junto com o Bryan Petty e com a ajuda do Nikolai Bachiyski. Criamos um fork do repositório do WordPress no github e nele configuramos o serviço de integração continua que pode ser visto neste link. Nas próximas semanas o Andrew Nacin deve integrar o que fizemos no repositório do WordPress.

Contributor Day no novo escritório da Automattic
Contributor Day no novo escritório da Automattic

O arquivo de configuração que criamos para o Travis CI pode ser visto neste link. Ele roda os testes do WP usando PHP 5.2, 5.3 e 5.4 e para cada uma dessas versões com o modo multisite habilitado ou desabilitado. Por enquanto, o Travis só é chamado quando há um commit no core e não quando há um commit no repositório de testes. O próprio Nacin disse que a intenção é juntar os dois num único repositório.

Uma vez com a integração dos testes do WordPress com o Travis CI funcionando partimos para resolver os testes que estavam falhando. Conseguimos resolver cerca de dez testes, não deu tempo de resolver apenas um que foi resolvido uns dias depois. Após o WordCamp descobrimos mais três testes que falham quando executados com o PHP 5.2. Estes ainda estão pendentes e podem ser vistos na página do repositório no Travis CI.

Plugin do WordPress para usar o OpenID Delegation

No final do ano passado publiquei um plugin para WordPress que permite utilizar a URL de um blog rodando o WP como uma identidade OpenID.

Para usar o OpenID Delegation é necessário ter uma identidade OpenID em algum serviço como o myopenid.com.

Com este plugin ao invés de usar como identidade OpenID a URL fornecida pelo provider, é possível usar a URL do WordPress. No meu caso uso como identidade OpenID http://rodrigo.utopia.org.br ao invés de http://rodrigoprimo.myopenid.com/.

Para mais informações vejam a página do plugin: http://wordpress.org/extend/plugins/wordpress-openid-delegation/

Para quem estiver procurando um provider e/ou consumer OpenID vejam o plugin WordPress OpenID.

 

Erro ao importar um blog do Blogspot para o WordPress

Estou trabalhando na importação do blog de receitas da Rede Ecológica que ficava no Blogspot para dentro do novo site que usa o WordPress (o que já está pronto pode ser visto em http://redeecologicario.org/blog e o blog original em http://ecosdarede-receitasecologicas.blogspot.com/). Já fiz importações como essa anteriormente sem grandes problemas. Mas dessa vez me deparei com um erro estranho e como demorei um tempo para descobrir a melhor solução compartilho aqui nesse post caso alguém passe pelo mesmo problema.

O WordPress possui uma ferramenta (o plugin Blogger Importer) para facilitar essa migração. Após instalá-lo o primeiro passo é clicar no botão “Authorize” para autorizar o acesso do WordPress ao conteúdo que está no Blogspot. Porém para minha surpresa apareceu o seguinte erro:

“Não é possível exibir a página solicitada. Outro site estava solicitando acesso à sua conta do Google, mas enviou uma solicitação incorreta. Entre em contato com o site que estava tentando usar quando recebeu essa mensagem para informá-los do erro. Segue abaixo uma mensagem de erro detalhada:

O site “http://redeecologicario.org” não foi registrado.”

Ou em inglês:

The page you have requested cannot be displayed. Another site was requesting access to your Google Account, but sent a malformed request. Please contact the site that you were trying to use when you received this message to inform them of the error. A detailed error message follows:

The site “http://example.com” has not been registered.

Infelizmente, como acontece muitas vezes no mundo dos computadores, a mensagem de erro não explica exatamente qual é o erro como vamos ver mais abaixo. Encontrei muitos relatos desse mesmo erro porém sem a solução. Parecia que o único jeito era contornar o problema exportando o blog do Blogspot para um arquivo XML e então convertendo esse arquivo para o formato do WordPress usando o site http://blogger2wordpress.appspot.com/ ou uma conta temporária no wordpress.com.

Só depois de um tempo que encontrei uma explicação para o erro em questão e a respectiva solução no post abaixo:

http://bloggertowp.org/solution-error-the-site-has-not-been-registered-during-wordpress-import/

Para poder utilizar o importador é necessário primeiro registrar o site que importará conteúdo do Blogspot na sua conta do Google. Para fazer isso acesse a URL:

https://www.google.com/accounts/ManageDomains

E pronto, agora é só seguir com a importação. Muito estranho isso não estar documentado no próprio plugin.

Como impedir que o editor do WordPress (TinyMCE) remova quebras de linha

Atualização (21/12/2010): Não utilizo mais o TinyMCE Advanced pois simplesmente mudando para o modo de edição HTML e apertando enter consigo gerar uma quebra de linha. Não sei se isso já existia no WordPress antes e eu nunca reparei ou se é algo de alguma versão recente.

Atualização (15/10/2009): o Rafael Biriba deixou um comentário falando do PS Disable Auto Formatting, um outro plugin do WordPress que também server para impedir a remoção automática das tags “br” e “p”.

Mais de uma vez quis formatar o texto de um post do WordPress usando algumas quebras de linha (enter) para separar dois blocos de texto ou então um bloco de texto de uma imagem. Porém, por padrão o editor do WordPress, o TinyMCE, remove qualquer tag “br” ou “p” que ele considere que esteja “sobrando”.

Talvez exista uma forma mais inteligente de se fazer isso sem usar quebra de linha, porém eu desconheço e já perdi um bom tempo tentando enganar o editor.

Ontem, encontrei o TinyMCE Advanced um plugin que tem uma opção para que as tags “br ”

e “p” não sejam removidas e além disso permite customizar os itens que aparecem na barra de edição. Abaixo um screenshot de parte da tela de administração:

Parte da tela de administração do TinyMCE Advanced