Retirando a bifurcação do blockly

Este documento é destinado a desenvolvedores que já bifurcaram o Blockly e querem atualizar para uma versão recente do Blockly, sem corrigir a biblioteca. Embora pareça uma tarefa assustadora, há algumas etapas que você pode seguir para tornar o processo mais gerenciável.

Sobre o Unforking

Usar a linha principal do Blockly significa que você está usando uma versão lançada recentemente do Blockly e todas as suas personalizações usam APIs públicas do Blockly sem monkeypatch. A bifurcação é o trabalho que você precisa fazer para implementar a funcionalidade personalizada da bifurcação com as APIs de linha principal.

Casos simples sem bifurcação

Veja abaixo dois motivos comuns para a bifurcação e as soluções para retornar à linha principal:

  • Você criou seus próprios blocos e geradores sem alterar nenhum código do Blockly: para desfazer essa situação, basta mover seus blocos e geradores personalizados do repositório Blockly para o código do seu próprio aplicativo. Depois disso, você vai conseguir atualizar sua versão do Blockly.
  • Você adicionou uma funcionalidade personalizada no namespace do Blockly sem alterar o código do Blockly: por exemplo, você adicionou campos personalizados ou métodos auxiliares usados apenas pelo seu próprio aplicativo. Para se adaptar a essa situação, mova esse código personalizado para seu próprio aplicativo fora do repositório do Blockly. Depois, você poderá atualizar sua versão do Blockly.

Estojo com várias portas

Determinar a funcionalidade bifurcada

A última razão pela qual vemos que os usuários bifurcam é corrigir o Blockly para criar uma funcionalidade personalizada que eles percebem que não está incluída no upstream no momento. Se a bifurcação estiver significativamente desatualizada, é possível que já tenhamos adicionado a funcionalidade de que você precisa, seja como plug-ins ou no núcleo. Saber quais recursos você adicionou à bifurcação pode fornecer um roteiro para os recursos que precisará atualizar.

Entender a arquitetura

Depois de entender os recursos que usam APIs específicas para ramificação, considere estas dicas:

  • Há uma maneira de replicá-lo usando as APIs Blockly para cada recurso que usa a bifurcação?
  • Se parece que não é possível replicar o recurso usando as APIs Blockly, entre em contato pelo fórum ou informe um problema no GitHub (em inglês). Nossa equipe investigará a adição de APIs para permitir a personalização.

Determinar o caminho sem bifurcação

A próxima etapa é iniciar o processo de implementação da nova arquitetura baseada em blocos para recursos que usam a bifurcação. Há duas abordagens principais que podem ser adotadas:

  • Fazer upgrade do Blockly e ver o que interrompe: você verá imediatamente as áreas no seu código que precisam ser atualizadas. Você pode usar isso combinado com o que já sabe que é um comportamento personalizado para orientar o desenvolvimento.
  • Refatorar seu código para separar seus recursos do Blockly: isso exige que você tenha uma compreensão profunda de quais recursos são personalizados para sua bifurcação e quais vieram do Blockly. Depois que o código estiver totalmente separado, substitua a versão antiga do Blockly pela versão mais recente e corrija os problemas de integração restantes.

Seguindo em frente

Confira algumas regras que você precisa seguir como desenvolvedor do Blockly no futuro:

  • Em geral, não adicione novas classes ao namespace Blockly. É possível registrar campos personalizados ou outras classes registráveis sem declará-los dentro do repositório do Blockly ou do namespace do Blockly.
  • Não dependa das ferramentas de build do Blockly para compilar seu próprio aplicativo. Não consideramos que nossas ferramentas de build fazem parte da API pública, portanto, podemos fazer alterações nelas que corrompem seu aplicativo. Você é responsável por compilar seu aplicativo, caso queira fazer isso.

Fale com outras pessoas

O Blockly está sempre disponível no Fórum do Blockly. Se você encontrar algum problema durante o processo de separação, poste-o lá para que possamos ajudar.