## Simplificar instalação e distribuição do stoq e stoq-server como pacotes python ### Permitir instalar "core" do stoq sem GTK ##### Por quê - Permite instalação do stoq-server via pip sem muita dificuldade - Facilita eventual instalação do stoq-server em Windows - Instalação e build no CI mais rápida - Menos código para manter e entender ##### Como - Remover kiwi do setup: - [X] stoq-server - [X] stoqdrivers - [ ] plugins - Separar pacote stoq - [ ] stoq-gtk (tudo relacionado a gui/desktop/gtk) - [ ] stoq-domain - [ ] stoq-database (patches sql + mágicas de stoqlib.database) - [ ] stoq-utils (utils com baixa dependência utilizadas pelos projetos anteriores) - [ ] separar em múltiplos repos - Permitir instalação sem GTK - [ ] stoq - [X] stoq-server - [X] stoqdrivers - [X] kiwi - [ ] stoq-plugin-nfe - [ ] stoq-plugin-nfce - [ ] stoq-plugin-sat - [ ] outros plugins ### Mover gerenciamento de dependências do APT para poetry (ou similar) ##### Por quê - Garantia que todas as máquinas rodam mesmas versões das bibliotecas - Simplifica atualização de versões de libs (por ex. usar a versão mais recente da requests que acabou de receber fix de segurança) - Auxilia substituição do APT por pip para instalação de pacotes python ##### Como - Organizar dependências usando poetry em: - [ ] stoq-domain - [ ] stoq-database - [ ] stoq-utils - [ ] stoq-server - [ ] plugins ### Suportar múltiplas versões de python ##### Por quê - Facilitar trocar de versão de python (3.5 chegou ao fim da vida em 13/09/2020) - Estar sempre na última versão (ou algo próximo disso) faz com que não precisemos correr um dia atrás de migrar versão deprecated e podemos usufruir de novas features - Para rodar em outras distros e sistemas operacionais que usam/suportam versões diferentes de python ##### Como - Alterar CI para rodar testes em versões diferentes de python e constantemente mudar essas configs para usar últimas versões do python - Usar gitlab CI ou tox - Arrumar base de código para funcionar na última versão - Adotar política de idealmente usar sempre a última versão ### Usar PyPI para hospedar pacotes python no lugar de APT repo e eggs via stoq.link ##### Por quê: - Torna possível manter diferentes versões de todos nossos pacotes uma vez que o apt+PPA dificultam isso - Mais fácil que custom eggs etc. e com mesma funcionalidade se usarmos repositórios privados python e menos código nosso que precisamos manter, se preocupar com bugs, melhorias etc. ##### Como: - Subir plugins no pypi (privado se necessário) e pinnar versões dos plugins onde necessário ### Melhorar mudanças de banco para que a instância e os diferentes PDVs saibam sobreviver melhor com versões diferentes ##### Por quê: - Fazer alterações no banco exige um release para sql e outro para código python ou sincronização instancia <> pdv quebra, ou seja, temos que fazer 2 releases para 1 alteração ##### Como: - A decidir ### :lipstick: Modernizar / simplificar linting e testes ##### Por quê: - Vários scripts e dependências (stoq-utils/source-tests.sh por ex.) que provavelmente não vão ser mais necessários com mudanças anteriores ##### Como: - Usar flake8 do pip (no lugar de python-pyflakes) - Limpar coisas do jenkins - Simplificar stoq-utils/utils.mk