How to use Tiki with “Git”

Tiki use SVN for revision control. There has been some discussion in the community about migrating to a Distributed Version Control System (DVCS) but it is unlikely that anything will change in the near future.

I’m writing this post to briefly share my experience using git-svn locally for Tiki development. This tool allow you to synchronize a Git repository with a SVN repository. Follow the steps below to create a local git repository based on Tiki trunk.

1. Create a new Git repository from Tiki trunk SVN repository

git svn clone https://svn.code.sf.net/p/tikiwiki/code/trunk

2. Checkout external repositories

Download git_svn_externals.pl script (alternatively you can use git_svn_clone_externals) and then place it in the root directory of your Tiki. Run the script. It will download all Tiki’s svn externals and add them to .git/info/exclude.

3. Known issues

  1. It is not possible to set SVN properties using git-svn (http://stackoverflow.com/questions/1271449/how-to-set-subversion-properties-with-git-svn)
  2. You have to remember to manually call git_svn_externals.pl every once in a while to update the externals repositories.

That is it. If you are not familiar with Git take a look at Git Cheat Sheet and My git svn workflow for more information.

 

Como ajudar a traduzir o Tiki

Nesse post vou descrever como contribuir com a tradução do Tiki para o português. “O Tiki é um software livre (LGPL) para gerenciamento de conteúdo através da Web, possibilitando a criação de websites e portais na Internet e também em intranets.” (Wikipédia).

Contribuir com a tradução de um projeto de código aberto é uma das maneiras mais simples de ajudar a comunidade. No caso do Tiki existem duas formas, ambas são descritas abaixo.

A primeira consiste em editar um arquivo PHP com todas as strings. Requer na maioria dos casos um pouco mais de conhecimento técnico, mas é a mais completa. A outra opção é utilizar o sistema de tradução interativa, onde o usuário traduz o software enquanto navega pelo mesmo no browser. É a opção mais simples porém tem algumas limitações.

Nesse post vou detalhar a tradução utilizando a interface do Tiki. Vou apenas comentar brevemente os passos necessários para traduzir editando o arquivo PHP porém estou a disposição para dar mais esclarecimentos caso alguém, como eu, prefira esse caminho.

Usando a interface de tradução interativa

O recurso de tradução interativa existe a algum tempo no Tiki, porém na versão 5.0 ele foi reformulado e melhorado. Esse recurso permite que o usuário faça tradução enquanto navega por um site rodando o software. Com ele habilitado, quando você clica em algum campo de texto uma caixa aparece para que a tradução seja feita.

As traduções feitas com a tradução interativa são guardadas na base de dados e não no arquivo language.php que é o arquivo distribuído junto com o pacote de instalação do Tiki (existe um arquivo desse para cada idioma). Recentemente (para a versão 6.0 que deve sair mês que vem) adicionei um novo recurso ao software para exportar as traduções guardadas na base de dados para o arquivo language.php correspondente. Com isso, a comunidade criou o site http://i18n.tiki.org que é basicamente uma instalação do Tiki com o recurso tradução interativa habilitado para qualquer pessoa que quiser ajudar na tradução possa fazê-lo sem se preocupar em ter que instalar uma versão local do software.

De tempos em tempos alguém da comunidade verifica o que foi traduzido no site, exporta para o arquivo language.php corresponde e envia para o repositório SVN para que as traduções sejam incorporadas na próxima versão do software.

Segue abaixo o passo a passo para usar a tradução interativa dentro do i18n.tiki.org. Se você quiser usar o recurso na sua própria instalação do Tiki veja como habilitá-lo no seguinte link http://doc.tiki.org/Interactive+translation (em inglês).

  1. Crie um usuário no site i18n.tiki.org: http://i18n.tikiwiki.org/tiki-register.php
  2. Entre em contato diretamente comigo ou com algum outro administrador do site pela lista de desenvolvimento, informe o usuário e peça para ganhar permissão para usar o recurso de tradução interativa.
  3. Entre com seu usuário no site http://i18n.tiki.org
  4. Use o módulo “Site language” (“Idioma do site”) para selecionar o idioma para o qual deseja traduzir. O módulo é o segundo na coluna da direita.
  5. Entre na página “Editar idiomas”: no menu da esquerda, selecione a opção “Editar idiomas” da seção “Administrar” ou diretamente http://i18n.tikiwiki.org/tiki-edit_languages.php) e clique no botão “Ligar modo de tradução interativa” (“Toggle interactive translation on”). Atenção: Não confudir a página “Editar idiomas” com a página “Idiomas” (tiki-admin.php?page=i18n) que pode ser acessada através do painel de administração.
  6. Uma barra azul será exibida no topo do site. Essa barra é utilizada para habilitar e desabilitar o uso da tradução interativa.
  7. Navegue até a página que deseja traduzir algum conteúdo e clique no checkbox “Tradução interativa” (para poder navegar novamente pelo site você precisa deselecionar esse checkbox).
  8. Clique na frase que deseja traduzir. Uma janela será exibida com as frases relacionadas (veja a imagem).
  9. Modifique a frase e clique em “Salvar tradução”. As mudanças que você fez somente aparecerão depois que você recarregar a página. É comum aparecer na tela algumas frases não relacionadas diretamente com a clicada, em geral os resultados mais significativos estão no topo.

Editando diretamente o arquivo language.php

Conforme comentei anteriormente editar diretamente o language.php demanda um pouco mais de conhecimento técnico. É necessário baixar uma cópia do Tiki para sua máquina e instalá-lo. Visite os dois links abaixo para saber como fazer isso.

http://dev.tiki.org/Get+code

http://doc.tiki.org/Installation

Com o Tiki instalado, edite o arquivo corresponde ao idioma que deseja traduzir. No caso do português o arquivo é o lang/pt-br/language.php. Esse arquivo nada mais é que um grande array PHP. A chave do array é a frase em inglês e o valor é a tradução.

Frases que ainda não foram traduzidas possuem um comentário de código no começo da linha (//). Para que a tradução seja reconhecida pelo Tiki é necessário remover o comentário (as duas barras).

Se busca alguma frase que não aparece no arquivo é porque ele está desatualizado. Para atualizá-lo é necessário rodar o script get_strings.php com o idioma em questão como parâmetro. Como exemplo, segue a página que preciso abrir no browser:

http://localhost/tiki/get_strings.php?lang=pt-br

Após realizar as traduções você pode enviar-las para o repositório central usando o SVN. Para isso é necessário solicitar uma conta de desenvolvedor (qualquer um que pede ganha). Veja http://dev.tiki.org/DevTips (em inglês).

Para mais informações sobre como traduzir através do arquivo language.php veja http://doc.tiki.org/Interface+translation#General_process

Tiki Fest Montreal 5

Below some pictures from the first day of Tiki Fest Montreal 5. A Tiki Fest is a

is a meeting between Tiki contributors (that usually only meet
online). This is an opportunity, usually, to socialize over drinks,
get some laptops out and code wildly in group sessions and/or
discuss about wiki technology and culture, etc. depending the mood
and context. It is a great opportunity for Tiki users and Tiki
power users to meet some of the developers and learn more stuff.

http://tikiwiki.org/TikiFest

This was the third time I have been to a TikiFest (the first two were in London and Barcelona last year).

Marc did a presentation of Tiki 5.0. He did a new installation and configured  the software based on the necessities brought by some folks that might use Tiki as the wiki engine for Bixi (one of the most amazing things of Montreal and for sure a subject for a next post).

Louis-Phillipe talked about category transitions and I showed my ideas for the blog revamp. I will be working to improve Tiki Blog during this (northern) summer.

Dois vídeos e fotos do TikiFest em Barcelona

No começo de agosto estive em Barcelona para mais um encontro da comunidade do Tikiwiki, o TikiFest Barcelona (http://tikiwiki.org/TikiFestBarcelona). Enquanto eu trabalhava no meu projeto para o Google Summer of Code, o restante do pessoal estava lá para desenvolver um novo recurso para o Tikiwiki: workspaces.

O Luci publicou muitas fotos do encontro quase todas com legendas engraçadas nesse link aqui http://picasaweb.google.com/mindbro/TikiFestBarcelona2009

Além das fotos, foram feitos dois vídeos do encontro. O primeiro foi feito pela Vladislava, mulher do Luci, ela é Tcheca e trabalha para uma televisão chinesa independente (é uma televisão chinesa proibida na China). É um vídeo com um carater mais institucional, de divulgação do Tikiwiki, com entrevistas com alguns dos membros da comunidade (mais informações sobre a matéria http://english.ntdtv.com/ntdtv_en/ns_europe/2009-08-13/093675925612.html).

O segundo vídeo foi feito pelo Xavier, ele é de Barcelona e foi quem organizou toda a logística do encontro. O vídeo dele é mais longo e mostra um pouco mais da dinâmica do encontro.

[flv]http://media.ntdtv.com/ebrief/news/20090813-wn-15-tikifest in barcelona.flv[/flv]

[blip.tv ?posts_id=2588156&dest=-1]

GSOC TikiFest in London

In the first week of July I was in London for the GSOC (Google Summer of Code) TikiFest. TikiFests are a tradition in the Tikiwiki community. It is when two or more Tiki contributors get together to code, discuss about free software etc.

This time the main reason for the TikiFest was to gather together all the students from GSOC who are working in the Tikiwiki projects. This is the first year Tikiwiki is participating in GSOC and there are four students involved, including myself.

dsc01365-copy

Two students from Spain, Aldo and Ben, are working together to create the new workspaces feature (the ability to have collections of items/objects that allow different set of users to have different kinds of access in a single Tikiwiki installation). For more information on their project see the wiki page http://dev.tikiwiki.org/workspaces. At the TikiFest they presented their work done until that moment and we discussed some tricky aspects of the implementation. The development of the workspaces is of great interest for the Tikiwiki community and there are more people working on it at present besides the two GSOC students. On the first week of August there will be another TikiFest in Barcelona just to discuss and develop some parts of the workspaces.

Another student from India, Nagendra, was there to present his project which will allow online video edition in Tikiwiki using the Kaltura API. Maybe in the future we will be able to edit video the wiki way using this.

dsc01357-copy

And finally I presented my project to create a migration script from Mediawiki to Tikiwiki. As my mentor on this project, Nelson Ko, was at the TikiFest I had a great opportunity to make some crucial decisions for the project. Mainly to leave phpBB for another project and focus only on the migration from Mediawiki to Tikiwiki.

Beside the presentation of the projects, we also discussed some interesting aspects of the free software world. Aldo and Amette showed some of the great features Git has over SVN and we discussed how the Tikiwiki community could benifit from moving to Git (for example merging branches is much easier with Git). It was agreed that as an expemeriment the workspaces development would be done using Git.

dsc01360-copy

Jonny talked about the recent development of the Tikiwiki profiles and Jean-Marc showed some inconsistencies between the administration page of different Tikiwiki features and we discussed possible interface standards for those pages.

Olaf-Michael brought the discussion about Tiki as an open translation tool. He told us about http://translatewiki.com/, a place to centralize and make the translation of different open source wiki softwares as easy as possible. They are interested in putting Tikiwiki in the pool of softwares they translate and Olaf is in contact with them to make this happen. Although the way Tikiwiki handles with translations at present (a PHP array for each language with key/value pairs) is accepted by TranslateWiki I mentioned at the TikiFest that it would be a good idea for the Tikiwiki community to switch to a standard open source tool for translation like gettext.

dsc01358-copy

At present it is hard for a non-technical person to start helping with Tikiwiki translation. As I host several sites using Tikiwiki for different Brazilian social movements I am very interested in making it easier to translate. I think that using a standard tool for that purpose is a great first step. We can take advantage of all the tools built around gettext that already exist. I plan to look at this question in the next weeks, so if anyone else is also interested please do let me know. Apparently it is not that hard to convert to gettext. PHP has gettext built-in support and there is already a script to convert from Tikiwiki language.php files to gettext. Before moving, as mentioned by Jean-Marc, it is a good idea to talk with people from other projects that already use gettext to learn from their experience.

On the last day of the meeting, Aldo, Ben and I (unfortunately Nagendra had to leave the day before) talked about the difficulties we had with Tikiwiki when we started our projects. We agreed that the lack of technical documentation and tests were the two most difficult aspects.

Without technical documentation we had to read the code to understand what a function does and without tests it is much harder to know if the change you are making will break something elsewhere in the code. With this in mind we are using in our projects phpDocumentor and PHPUnit. By using phpDocumentor we can have some day, as proposed by Aldo in the devel list, api.tikiwiki.org. Very similar to http://api.joomla.org/ or http://api.cakephp.org/. Which can help to atract more contributors. PHPUnit is already used in a few parts of Tikiwiki. Louis-Phillipe created on trunk the directory lib/core. All the code there have tests. Alain Desilets and Marta Stojanovic are using PHPUnit with Selenium to write acceptance tests for Tikiwiki.

dsc013611

This is what I remember from the discussions we had during the five days of GSOC TikiFest. If I forgot to mention something please leave a comment.

De bicicleta em Londres!

A viagem pela Europa começou em grande estilo. Vim para Londres para participar de um encontro da comunidade do Tikiwiki, o GSOC TikiFest, para discutir os projetos do Google Summer of Code (em breve vou escrever um post relatando como foi o encontro e a apresentação do meu projeto).

A maioria das pessoas que participou do encontro da comunidade do Tikiwiki em Londres
A maioria das pessoas que participou do encontro da comunidade do Tikiwiki em Londres

Antes de sair de São Paulo, graças a ajuda de um amigo da Bicicletada consegui um lugar para ficar durante meus dias em Londres, a casa da irmã dele. Quando desci no aeroporto pensava que para esses dias serem perfeitos só faltava eu arranjar uma bicicleta para me locomover pela cidade. O transporte público funciona muito bem, metro e ônibus para todos os lados. Mas também é muito caro, pelo menos da ótica de alguém que ganha em reais. Se não conseguisse a bicicleta, meu plano era caminhar os cinco quilometros que separam a casa onde fiquei do local do encontro.

A viagem de São Paulo para Londres correu bem. Meu lugar era na janela, estava louco para ver o oceano de dentro do avião, porém quando começamos a sobrevoar o mar já era noite (não sei porque estava com essa idéia na cabeça de que o avião sairia de São Paulo direto para o oceano, quando na verdade ele sobrevoa o continente até o extremo norte do nordeste brasileiro). Assisti a Era do Gelo e conversei bastante com um cara de Natal e uma senhora de Buenos Aires. Eles ocupavam dois assentos e meio e eu tinha que me virar com a metade de um assento que sobrava 🙂

Vooei com a British Airways, quando fiz o checkin online solicitei refeições vegetarianas e tudo funcionou bem. Tanto na janta, como no café da manhã, eu recebi uma refeição especial. Fiquei feliz por eles terem estrutura para atender esse tipo de demanda. Não sei como funciona com outras companhias. Será que todas são amigáveis com os vegetarianos?

Chegando em Londres minha grande preocupação era com a imigração, não me animava nenhum pouco a idéia de chegar lá e ser mandado de volta para o Brasil no próximo avião. Ao mesmo tempo me sentia o imigrante ilegal perfeito. Não tenho propriedades no Brasil, não sou casado, não estudo e só consigo comprovar mais ou menos um vínculo de trabalho (não tenho CLT). Tinha mais de uma dezena de documentos para mostrar. No fim fui atendido por uma mulher super simpática que perguntou a razão da minha visita, pediu para ver minha passagem de volta para o Brasil e a passagem para a Suécia e nada mais. Grande alívio!

A bicicleta que usei durante os meus dias em Londres
A bicicleta que usei durante os meus dias em Londres

Encontrei com a Ludmila numa estação de metro e fomos para a casa da irmã dela, onde eu fiquei hospedado. Ainda no caminho, no ônibus, ela me perguntou se eu tinha interesse em usar durante meus dias lá uma bicicleta de um amigo que estava encostada há algum tempo. Perfeito! No mesmo dia sai para pedalar pela cidade.

Passei cinco dias em Londres e em todos utilizei a bicicleta. No que diz respeito a locomoção de pessoas, São Paulo tem muito a aprender com Londres. Bicicleta lá é considerado um meio de transporte (ao contrário de São Paulo que ainda teima em ver a bicicleta como lazer). Tem um site legal para planejar rotas de bicicleta: http://www.tfl.gov.uk/roadusers/cycling/11598.aspx

Óbvio que nem tudo é perfeito, nos meus dias por lá cruzei com duas ghost bikes (uma delas é a da foto abaixo) e certamente existem outras. Porém é emocionante ver o respeito dos motoristas, principalmente dos motoristas de ônibus. Em todos os meus dias não levei uma fina, nenhuma busina. Os ônibus ou me esperavam até parar no ponto ou então me ultrapassavem mudando completamente para a faixa ao lado.

Bike ghost
Bike ghost

Ao contrário de São Paulo, que continua investindo na lógica do transporte individual como fica claro na recente iniciativa da Kassab e Serra de proibir a circulação de ônibus fretado no centro da cidade e de derrubar árvores para ampliar pistas na marginal, em Londres existe uma clara política pública em favor do transporte coletivo e alternativo. Automóveis particulares tem que pagar para circular no centro, existem ciclovias e bicicletários para todos os lados (e cada vez mais também ladrões de bicicleta), os pontos de ônibus tem informação sobre o itinerário e os horários das linhas que passam por ali.

Local para guardar as bicicletas em um prédio
Local para guardar as bicicletas em um prédio

Todas são coisas relativamente simples de fazer (nenhuma delas demanda uma intervenção tão drástica na estrutura urbana com demanda por exemplo a ampliação da marginal) e podem melhorar muito o fluxo de pessoas em São Paulo.

Ps: nos seis dias que passei em Londres ouvi buzina de carro apenas duas vezes (literalmente). Interessante. Não que Londres seja o paraíso, as duas vezes que ouvi buzina de carro foram em situações típicas de stress no trânsito. Na primeira um motorista de carro buzinou para pedestres: “saiam da frente se não eu passo por cima”. E na segunda um carro reclamou com o outro. Mas de qualquer forma é curioso pensar porque será que em São Paulo tem tanto barulho de buzina.

First day of GSOC 2009

English version below

Há algumas semanas atrás saiu a lista de projetos aprovados para o GSOC 2009 (Google Summer of Code) e meu projeto de implementar um importador de MediaWiki e phpBB para Tikiwiki foi aceito.

Hoje foi o primeiro dia de trabalho, entrei em contato com o Nelson Ko (o mentor do meu projeto) e definimos alguns objetivos para essa primeira semana. Vou pesquisar alguns importadores feitos anteriormente pela comunidade do Tikiwiki e que nunca foram finalizados bem como outros scripts para importar o MediaWiki para outros softwares. Além disso pretendo dar uma olhada na documentação da sintaxe do MediaWiki (a idéia é começar por esse software e deixar o phpBB para uma segunda fase).

Para o fim da semana pretendo ter uma avaliação das implentações existentes para ter uma idéia do caminho que o software que vou criar vai seguir. E também ter uma tabela comparativa entre a sintaxe do MediaWiki e do Tikiwiki indicando quais sintaxes serão fáceis de suportar, quais serão difíceis e quais não serão suportadas.

Pretendo publicar de vez em quando algumas atualizações aqui no blog sobre esse projeto, quem quiser acompanhá-lo de perto pode monitar a página wiki usada para documentação.


A few weeks ago Google released the list of approved projects to GSOC 2009 (Google Summer of Code) and my project (a script to import MediaWiki or phpBB content to Tikiwiki) was accepted.

Today was my first GSOC working day. I talked with Nelson Ko (my mentor for this project) through Skype (he lives in Canada and I in Brazil) and we decided the goals for this first week. I’ll research some old importers made by the Tikiwiki community and some scripts to import MediaWiki content to other software. I am also going to read the syntax documentation of MediaWiki (the plan is to start with MediaWiki and leave phpBB to a second stage).

By the end of the week I intend to perform an evaluation of the old scripts to start planning my implementation and I will produce a comparative table of TikiWiki and MediaWiki syntax to define what is simple to import, what is difficult and what is not going to be imported.

Occasionally I plan to update this blog with news about the GSOC. If you are interested in the project I suggest that you monitor the wiki page used to document my progress.