Conteúdo

 

Introdução ao Desenvolvimento do Inkscape

Acesso ao código: https://gitlab.com/inkscape/inkscape

Esse artigo é uma breve referência sobre como iniciar no desenvolvimento do Inkscape. Para mais detalhes, dê uma olhada no Wiki do Inkscape e em outras documentações específicas, e não hesite em perguntar no bate-papo ou na lista de discussão (veja abaixo). Se quiser apenas testar, mas não alterar o código, você pode economizar tempo e baixar a versão de desenvolvimento mais recente pré-compilada.

Configurando uma conta do GitLab

Para relatar erros e ajudar com assuntos técnicos você precisará de uma conta no GitLab. Instruções detalhadas para configurar uma conta estão disponíveis no Tutorial do usuário do Gitlab.

Obtendo o código-fonte

O primeiro passo é obter o código-fonte. Apenas baixar os arquivos de código-fonte de Lançamento (Release) não é suficiente, pois você precisará obter as atualizações mais recentes para desenvolver o Inkscape..

O Inkscape usa o sistema de controle de versão git. As instruções de instalação específicas da plataforma estão disponíveis aqui. Na maioria dos sistemas Linux, você precisa instalar o pacote git.

Recomendamos configurar uma conta no GitLab (veja acima) antes de obter o código-fonte, pois dessa forma é mais fácil fazer o commit mais tarde, uma vez obtido o acesso de commit. Depois de configurar sua conta GitLab, execute os seguintes comandos:

git config --global user.name "Nome Real" 
git config --global user.email "e-mail@dominio.tld"

Onde Nome Real é o seu nome real ou um pseudônimo que você deseja usar (deve ser reconhecível pelas pessoas na lista de discussão) e e-mail@dominio.tld é o seu e-mail para correspondência relacionada ao Inkscape (pode ser não pessoal se você deseja - mas o endereço de e-mail não pessoal deve ser adicionado no gitlab como um de seus endereços de e-mail, para que seus commits possam ser associados à sua conta). Com esta configuração, você poderá fazer commits assim que for aprovado como membro da equipe de desenvolvedores do Inkscape no GitLab.

Para obter o código-fonte mais recente, use o seguinte comando (baixe em um subdiretório do seu diretório de trabalho atual chamado "inkscape" por padrão):

git clone --recurse-submodules https://gitlab.com/inkscape/inkscape.git

Para atualizar este código posteriormente, vá para a pasta onde o código foi baixado e use:

git pull --recurse-submodules && git submodule update

Por padrão, o git fará o download de cada branch e de cada commit. Se você estiver em uma máquina lenta, tiver espaço em disco limitado ou largura de banda de Internet limitada, poderá usar as opções de clone superficial e clone de ramificação única para limitar a quantidade de dados que serão baixados:

git clone --depth=1 --single-branch --recurse-submodules --shallow-submodule https://gitlab.com/inkscape/inkscape.git

Compilando o Inkscape no Linux

Abra um terminal na raiz da pasta na qual você baixou o código-fonte na etapa anterior.

Instalando as dependências de compilação

Baixe e execute o script para instalar tudo o que for necessário para compilar o Inkscape (verifique o script para saber se a sua distribuição é suportada):

wget -v https://gitlab.com/inkscape/inkscape-ci-docker/-/raw/master/install_dependencies.sh -O install_dependencies.sh
bash install_dependencies.sh --recommended

Compilar

Para compilar com o CMake, faça o seguinte:

mkdir build
cd build
cmake -S .. -B . -DCMAKE_INSTALL_PREFIX=${PWD}/install_dir -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
make -j8
make install

Notas:

  • Usar ccache é opcional, mas acelera a compilação.
  • O argumento opcional -j8 do make ou ninja diz para executar 8 tarefas em paralelo. Sinta-se à vontade para ajustar isso ao número de tarefas paralelas (núcleos físicos) disponíveis em seu computador.
  • Recomendamos o argumento -DCMAKE_INSTALL_PREFIX que permite especificar um local de instalação isolado personalizado (no exemplo acima install_dir/ dentro da pasta de construção). Evita a instalação em locais do sistema (onde poderia entrar em conflito com outras versões do Inkscape) e permite executar múltiplas versões do Inkscape em paralelo. Ele ainda usará todos os arquivos (incluindo o preferences.xml) que estão no diretório ~/.config/inkscape.

Executar

Execute a partir do diretório onde foi compilado:

install_dir/bin/inkscape

Testes (opcional)

Para compilar e executar a suite de testes, use:

make check

Compilando o Inkscape no Windows

As instruções mais recentes estão sempre disponíveis no Inkscape Wiki, consulte Compilando o Inkscape para Windows.

Compilando o Inkscape no Mac

As instruções mais recentes estão sempre disponíveis no Inkscape Wiki, consulte Compilando o Inkscape para macOS.

Depurando com GDB

Veja Depurando o Inkscape.

Desenvolvimento do Inkscape

Código-base do Inkscape

O Inkscape começou com uma ramificação do Sodipodi, uma aplicação GNOME baseada em GObject. Por razões históricas, o Inkscape é escrito em uma mistura de C e C++. Esperamos eventualmente migrá-lo para C++. No entanto, ainda existe muito código baseado em GObject, portanto é necessário algum conhecimento de GObject para trabalhar com o código do Inkscape.

O Inkscape usa a biblioteca GTK+ e a biblioteca de suporte Glib. Usamos as partes somente de cabeçalho do Boost (ou seja, é uma dependência em tempo de compilação, mas não em tempo de execução). A biblioteca de geometria lib2geom, escrita em C++, pretende eventualmente se tornar um projeto separado. Você pode obter a versão mais recente do lib2geom em seu repositório no Gitlab.

Saber programar em C++ e usar GTK é essencial para contribuir com o Inkscape. Felizmente, não são tão difíceis de aprender, então leia os tutoriais relevantes.

O projeto Inkscape usa Doxygen para gerar automaticamente documentação de código-fonte (incluindo diagramas da estrutura do programa). Você pode obter rapidamente uma visão geral sobre a parte do programa na qual gostaria de trabalhar aqui.

Estilo de programação

As diretrizes de estilo de programação do Inkscape podem ser encontradas aqui.

Comunidade

Contribuição de Código

As instruções acima mostram como obter o código fonte do Inkscape e compilá-lo. Se você deseja apenas dar uma olhada ou fazer algumas alterações apenas para uso pessoal, este é um bom ponto de partida.

Depois de implementar novos recursos ou corrigir bugs, você pode querer contribuir com as alterações de volta ao código-fonte oficial do Inkscape, para que outras pessoas também possam se beneficiar de seus esforços. Para fazer isso, o método recomendado é enviar uma solicitação de mesclagem no GitLab para que os desenvolvedores possam enviar feedback sobre suas alterações.

As seções a seguir são um guia aproximado para apresentá-lo ao tópico. Eles devem ajudar você a começar, mas não são um guia detalhado e fornecem apenas algumas indicações das etapas necessárias. Se você é novo no Git, provavelmente precisará pesquisar alguns dos comandos e termos por conta própria.

Criando uma ramificação

Uma ramificação é sua própria cópia de um repositório GitLab no GitLab. Ao contrário do repositório oficial do Inkscape, você pode enviar alterações para o seu ramo (você tem acesso de gravação) e, assim, torná-las disponíveis publicamente.

Crie uma ramificação clicando no ícone Fork no canto superior direito página principal do Inkscape no GitLab. Consulte a documentação do GitLab sobre este tópico para obter mais informações. Você então trabalha com seu fork em vez do repositório oficial, ou seja, clona-o em seu armazenamento local.

Para manter seu fork atualizado com as mudanças na base de código oficial do Inkscape, você pode ativar a funcionalidade de espelhamento do GitLab. Caso contrário, você não verá alterações na base de código oficial realizadas por outros desenvolvedores em seu fork, a menos que você o atualize manualmente.

Notas: A funcionalidade de espelhamento apenas transfere alterações do repositório oficial do Inkscape para o seu fork no GitLab. Para atualizar sua cópia local, você ainda precisa executar git pull para obter as alterações do GitLab.

Mudanças nas configurações de CI

Quando você envia alterações, compilações e testes automáticos nos servidores GitLab são iniciados. O tempo limite padrão do GitLab é muito curto para a construção do Inkscape. Veja a documentação do GitLab onde encontrá-lo e altere para 3h.

Criando um ramo

As solicitações de mesclagem operam em ramificações, portanto é necessário criar uma nova ramificação para as alterações que você deseja contribuir. Suponha que você vá consertar um bug desagradável. Crie um branch com um nome apropriado, por exemplo, correcao-para-erro-xyz, executando

git checkout -b correcao-para-erro-xyz

no clone da sua ramificação local. Faça suas alterações (a correção do erro) e confirme-as.

Subindo as mudanças

Quando você terminar suas alterações, geralmente é uma boa ideia reservar alguns minutos e revisar a situação do seu repositório Git local e seu trabalho para ter certeza de que tudo está como você deseja. Enviar o novo ramo para o seu repositório GitLab o tornará disponível publicamente.

Para enviar o ramo para o seu fork do Inkscape no GitLab, execute

git push origin correcao-para-erro-xyz

Isso também produz uma notificação como

remote: para criar uma solicitação de mesclagem para correcao-para-erro-xyz, visite:
remote:   https://gitlab.com/userxxx/inkscape/-/merge_requests/new?merge_request%5Bsource_branch%5D=correcao-para-erro-xyz

com um link para criar uma solicitação de mesclagem (onde userxxx é seu nome de usuário). Esta mensagem só é emitida para ramificações recém-criadas.

Criando uma solicitação de mesclagem

Existem várias maneiras de criar uma solicitação de mesclagem. Por exemplo, você pode usar o link acima impresso por git push para criar uma solicitação de mesclagem. Como alternativa, você pode selecionar sua ramificação na interface da web do GitLab e clicar em Criar solicitação de mesclagem no canto superior direito. Consulte a documentação do GitLab para obter mais informações sobre a criação de solicitações de mesclagem.

No formulário de solicitação de mesclagem do GitLab, insira um título, uma descrição significativa e anexe os arquivos, se apropriado.

Recomenda-se marcar a caixa de seleção Permitir commits de membros que podem mesclar no ramo de destino. Isso permite que os principais desenvolvedores enviem as alterações diretamente para sua filial e, assim, simplifica a integração do seu código no Inkscape.