---
sidebar_position: 4
title: "Código Aberto"
---

Esta página apresenta o contexto de licença da plataforma e as restrições de uso das dependências principais.

## Licença da aplicação

A aplicação está licenciada sob **GNU General Public License v3 (GPL-3.0)**.

```mermaid
graph LR
    APP[Decoda
GPL-3.0] --> USE[Uso livre
para fins educacionais]
    APP --> MOD[Modificações devem
permanecer GPL-3.0]
    APP --> DIST[Distribuições devem
incluir código-fonte]
```

A GPL-3.0 garante liberdade de uso, estudo, modificação e distribuição, mas exige que trabalhos derivados mantenham a mesma licença.

Referência externa: https://www.gnu.org/licenses/gpl-3.0.html

## Licenças das dependências principais

As dependências abaixo têm licenças compatíveis com o uso educacional não comercial, com ressalvas importantes para redistribuição.

| Dependência | Versão usada | Licença | Restrição relevante |
|---|---|---|---|
| React | 19.x | MIT | Nenhuma |
| React Router | 7.x | MIT | Nenhuma |
| Blockly | 12.x | Apache 2.0 | Atribuição obrigatória |
| Phaser | 3.90 | MIT | Nenhuma |
| js-interpreter | 6.x | Apache 2.0 | Atribuição obrigatória |
| CodeMirror | 6.x | MIT | Nenhuma |
| TailwindCSS | 3.4 | MIT | Nenhuma |
| lucide-react | 0.5x | ISC | Nenhuma |
| Vite | 7.x | MIT | Nenhuma |
| Docusaurus | 3.x | MIT | Nenhuma |

Referências externas para verificação:
- Blockly: https://github.com/google/blockly/blob/master/LICENSE
- js-interpreter: https://github.com/NeilFraser/JS-Interpreter/blob/master/LICENSE
- Apache 2.0: https://www.apache.org/licenses/LICENSE-2.0

## Restrições e implicações

### O que a GPL-3.0 permite

- Usar a plataforma para ensino, sem restrições.
- Modificar o código para adaptar ao contexto pedagógico.
- Distribuir versões modificadas, desde que o código-fonte seja disponibilizado com a mesma licença.

### O que a GPL-3.0 impede

- Distribuir a plataforma como produto proprietário sem disponibilizar o fonte.
- Integrar o código em sistemas fechados cujo fonte não será publicado.

### Dependências com Apache 2.0 (Blockly e js-interpreter)

A Apache 2.0 é compatível com GPL-3.0 quando a GPL-3.0 é a licença do trabalho resultante. Os requisitos práticos são:

- Incluir cópia da licença Apache 2.0 na distribuição.
- Manter os avisos de copyright originais.
- Documentar mudanças feitas nos arquivos originais, se houver.

## Apache 2.0 na prática: o que referenciar e onde

Esta seção resume o mínimo necessário para ficar em conformidade ao redistribuir a plataforma.

### O que precisa ser referenciado

Para cada dependência Apache 2.0 (hoje: Blockly e js-interpreter), mantenha:

1. Nome da biblioteca e URL oficial do projeto.
2. Licença da biblioteca (Apache License 2.0) com link ou cópia integral.
3. Aviso de copyright e arquivos NOTICE, quando existirem no projeto original.
4. Indicação de alterações, se você modificou arquivos do projeto original.

### Onde referenciar

No contexto deste repositório, a recomendação prática é:

1. Em código-fonte: manter `app/LICENSE` para a licença principal da aplicação (GPL-3.0).
2. Em terceiros: criar um arquivo de avisos, como `app/THIRD_PARTY_NOTICES.md`, listando Blockly e js-interpreter com licença e links.
3. Em distribuição: incluir no artefato final os arquivos de licença de terceiros (por exemplo, pasta `licenses/` com Apache-2.0 e notices).
4. Em documentação: manter esta página (`documentacao/codigo-aberto`) como referência funcional para a equipe.

### Checklist rápido de release

```mermaid
flowchart TD
    A[Release iniciado] --> B[Conferir libs Apache 2.0]
    B --> C[Atualizar THIRD_PARTY_NOTICES]
    C --> D[Incluir LICENSE/NOTICE no artefato]
    D --> E[Validar links e versões na doc]
    E --> F[Publicar release]
```

- `Bibliotecas`: Blockly e js-interpreter ainda são Apache 2.0.
- `Avisos`: `THIRD_PARTY_NOTICES` atualizado com versão e fonte.
- `Distribuição`: contém licença Apache 2.0 e notices aplicáveis.
- `Mudanças`: se houve patch em código Apache 2.0, alteração registrada.

## Diretrizes internas

- Novas dependências devem ter licença MIT, Apache 2.0, BSD ou ISC para manter compatibilidade.
- Dependências GPL devem ser avaliadas caso a caso - podem criar obrigações adicionais de divulgação.
- Dependências com licença proprietária ou Creative Commons NC (non-commercial) não devem ser adicionadas sem revisão explícita.

Referência externa sobre compatibilidade de licenças: https://www.gnu.org/licenses/license-compatibility.html
