Neturn é uma urna virtual que usa uma mistura bem única entre o método preferencial (mais especificamente, o de voto único transferível) e o método proporcional e o repositório consiste de duas partes:
- Contagem: que é responsável pelo processo de escrutínio da eleição
- Bot: que é responsável por registrar os votos das pessoas por meio de um Bot do Discord (atualmente incompleto)
Para o fortalecimento da democracia, é muito importante ser transparente no processo eleitoral para que não haja nenhuma dúvida sobre a integridade da democracia, por isso me esforcei para explicar todo o processo eleitoral por meio de comentários no código e fazendo uma explicação por texto aqui mesmo.
A parte principal do processo e a que eu (Cupertino) decidi programar primeiro, todo o texto a seguir explica o código presente na pasta Contagem
.
Depois das eleições, os votos de todos estarão salvos em um arquivo de forma completamente anônima, é importante ressaltar que os votos no nosso sistema eleitoral funcionam de um jeito completamente diferente do que estamos acostumados, pois eu me esforcei muito para encontrar métodos de eleição que representassem de forma mais aproximada possível a maioria e o método preferencial foi a melhor opção que encontrei, que funciona de forma completamente diferente do sistema majoritário que é usado por exemplo no Brasil e nos Estados Unidos.
No método preferencial, os eleitores listam os nomes dos partidos políticos em ordem de preferência, então imagine que nós temos uma eleição com três partidos, o Trabalhista, o Social-Democrata e o Neoliberal e eu odeio o Trabalhista e quero votar no Neoliberal, mas tenho certeza que o partido que eu gosto não tem chance de vencer o Trabalhista, então, por meio do método preferencial, eu posso votar no partido que eu gosto (o Neoliberal) e ao mesmo tempo posso votar no que acho menos pior e tem mais chance de vencer, que seria o Social-Democrata, fazendo com que eu me sinta muito mais livre de votar na opção que eu realmente quero invés de votar só no que eu acho menos pior e que tem mais chance de vencer as eleições, isso faz com que os resultados das eleições realmente representem a opinião da maioria.
Depois de ler o arquivo onde os votos estão salvos, o programa vai ler apenas a primeira preferência dos eleitores e contar este voto e é agora que o sistema proporcional entra em ação, será calculado quantos assentos cada partido recebeu baseado em seu número de votos, para isso teremos que dar uma olhada na matemática:
E todo esse processo se repete até que a soma de todos os
O Bot do Discord só serve como um jeito fácil dos eleitores registrarem seu voto, essa parte do código ainda não está completa e nem se quer presente no repositório, logo não tem explicação do código, apenas como eu quero que funcione, tudo a seguir está sujeito a mudanças extremas.
O Bot por meio de um comando vai gerar uma mensagem invisível para todos exceto o próprio eleitor, nesta mensagem, o eleitor vai digitar os partidos que quer votar em ordem de preferência, depois de algumas horas desde sua inicialização, a eleição será encerrada e o bot vai salvar os votos de todos os eleitores em um arquivo, sem citar o responsável pelos votos em nenhum momento. Para evitar que uma pessoa vote duas vezes, o Bot vai salvar o ID de usuário do eleitor, criptografado com criptografia irreversível (mais especificamente, Argon2id) na memória RAM, fazendo impossível que o nome do eleitor seja acessível por alguém ou pelo próprio software e só sirva para impedir votos duplos.
- O software e derivados dele podem ser (re)distribuídos para uso comercial
- O software pode ser redistribuído por qualquer um e pode ser modificado por qualquer um
- Os contribuídores tem total direitos de patente do projeto
- O software pode ser usado de forma privada por quem quiser
- Sempre que redistribuído o software tem que continuar com seu código público para todos
- Uma cópia da licença e dos direitos autorais originais devem estar inclusos na redistribuição
- Todos que tem acesso/usam o software, tem que também ter o direito de receber uma cópia do código-fonte
- Toda redistribuição deve ser pública sobre a mesma licença
- Qualquer modificações feitas ao software original por meio de recomendações ou redistribuições devem ser documentadas
- Ninguém tem garantia de direito de marca sobre o software
- Ninguém é responsável por danos que possam ser causados pelo software
- A licença não garante qualquer tipo de garantia à ninguém