Contribuindo com Flowral Linux
Antes de começar
Leia README, decisões, arquitetura, performance, segurança e roadmap. O repositório contém especificações, ainda não produto funcional.
Desenvolvimento
- Principal linguagem de apps: Rust; UI de apps próprios Slint; compositor é Swirl, não reescrever.
- Base da distro: Void glibc/runit; proibir dependência incondicional de systemd.
- Projetos separados em crates por domínio, funções pequenas, nomes descritivos, comentários e docs explicativas; sem abreviações crípticas.
- Config em
$XDG_CONFIG_HOME, estado em$XDG_STATE_HOME, cache em$XDG_CACHE_HOME; evitar paths hardcoded do usuário. - Nunca colocar segredos, dados pessoais, endereços, MAC, serial e tokens em commits ou fixtures.
- Sem alterar arquivos ou configurações pessoais sem preview + backup/rollback.
- Interfaces Slint seguem Flower Paper tokens; sem componentes paralelos com estilos hardcoded.
- Mudança de tema atualiza adaptadores com transação; mudanças de MCP/providers devem preservar campos desconhecidos.
- Prioridade para acessibilidade por teclado, mensagens curtas e claras, suporte a light/dark + reduced motion.
Fluxo de PR
- Abra issue com problema, critério de aceite, riscos e componente.
- Faça branch focada
feat/<feature>oudocs/<topic>. - Acrescente testes unitários/integração antes de alegar compatibilidade com hardware, APIs ou GUI.
- Atualize documentos de decisão e roadmap no mesmo PR, se aplicável.
- Rode
cargo fmt,cargo clippye testes Rust quando o workspace existir; não afirmar que testes foram rodados se não foram. - Para alterações do build/ISO: executar em VM e disco de teste, capturar artefatos sem segredos; testar com BIOS/UEFI.
- Descrever métricas de memória usando protocolo versionado.
Política de dependências
- Preferir APIs estáveis, pequenas, mantidas e auditadas.
- Não trocar Slint por Tauri/egui/Qt sem ADR; testar integração Layer Shell separadamente.
- Não distribuir software proprietário não redistribuível, ROMs/fonts/imagens sem licença.
- Exigir manifest de origem/hash/versão para downloads upstream.
- Evitar
curl|shautomático sem auditoria e controle de versão.
Segurança
Não publicar credenciais mesmo mascaradas parcialmente se puderem ser recuperadas; segredos nunca em logs; confirmar código executado por MCP; não alterar o bootloader/discos em ambiente do usuário ao testar.
ADR
Nova decisão relevante: adicionar em docs/02-decisoes.md com FL-xxx + status proposto/aprovado/aberto, justificativa, alternativas, testes, rollback e data. Não confundir proposta da assistência com autorização explícita.