Quero compartilhar minha experiência no desenvolvimento de um aplicativo de desktop para coletores de código aberto.
Pela natureza da minha atividade principal, desenvolvo software para sistemas embarcados e raramente cruzo com os usuários finais. Portanto, falaremos sobre os recursos que encontrei ao desenvolver um aplicativo não comercial para uma ampla gama de usuários, o que se tornou uma descoberta para mim.

Descrição do produto
OpenNumismat, como o nome indica, destina-se principalmente a contabilizar a coleta de moedas. Mas também é adequado para outros tipos de coleta - selos, cartões, crachás e coisas mais exóticas.
O aplicativo é escrito em Python, o banco de dados usa SQLite para armazenar dados, PyQt é usado para interface, acesso a dados e muito mais, Jinja2 é usado para gerar relatórios, Matplotlib é usado para criar gráficos estatísticos. Apesar do meu ceticismo inicial, isso acabou sendo suficiente para garantir um desempenho aceitável - vários milhares de registros com imagens são processados sem freios visíveis.
Como todos os componentes são multiplataforma, o OpenNumismat também possui assemblies para Windows, Linux (Debian / Ubuntu) e macOS.
Há também uma versão do Android atualmente abandonada. Foi substituído pelo PWA (Progressive Web App), que permite visualizar sua coleção em qualquer navegador - o SQLite.js é usado. Acabou sendo muito mais fácil desenvolver o PWA para criar um aplicativo Android nativo semelhante em recursos. Além disso, ele está disponível imediatamente em todas as plataformas.
Concorrentes
Agora, existem muitas aplicações para colecionadores e, em particular, numismáticos. A maioria deles "parece que alguém pegou sua primeira versão do Firefox e a usou".
Nos EUA, muitos usam software comercial, cuja vantagem incontestável é a disponibilidade de bancos de dados prontos de moedas existentes. O usuário pode marcar apenas as moedas disponíveis e inserir as informações de compra - preço, data etc.
Recursos semelhantes são fornecidos por aplicativos móveis (a maioria para Android) e serviços da web. O OpenNumismat está mais focado em criar um catálogo de sua própria coleção exclusiva do que em "fechar buracos no álbum final", como dizem alguns numismáticos.
Mas o principal concorrente é a Microsoft. A grande maioria dos colecionadores usa o Excel, apesar de não funcionar bem com imagens. Alguns também usam o Access ou 1C e criam seu próprio banco de dados de coleção com tudo o que precisam. Mas ainda requer alguma preparação.
Para atrair usuários, as importações das alternativas mais populares são implementadas.
Quanto ao Linux e macOS, praticamente não existem análogos para essas plataformas.
Os benefícios da abertura
A principal vantagem do código-fonte aberto foi a capacidade de usar serviços de terceiros para distribuição, tradução e rastreamento de erros gratuitamente. Puxe pedido, para meu desgosto, havia apenas três.
Inesperadamente, para mim, outra vantagem foi a oportunidade potencial de convencer os céticos da segurança do programa - eles dizem nos fóruns que verificaram o código com grep e não há suspeitas.
Ambiente usado
Inicialmente, o Google Code foi escolhido para a distribuição do OpenNumismat, que fornecia rastreamento conveniente de bugs, um wiki multilíngue para documentação, download de binários e, é claro, um repositório git. Mas a partir de 2013, o Google Code começou a morrer. Para a mudança, a escolha foi entre o SourceForge e o GitHub. Ambos os serviços oferecem a capacidade de criar sites de projetos (a documentação do wiki precisava ser refeita nas páginas estáticas do site), mas o download de binários do SourceForge parece assustador para um usuário despreparado. Portanto, a escolha caiu no GitHub.
O rastreador de erros do GitHub requer registro, o que não é tão conveniente para usuários que estão longe de programar. Portanto, foi decidido usar um serviço de terceiros.
O Idea.Informer (reformado para um público que fala russo) foi encontrado - um serviço gratuito e conveniente, mas atualmente não está em desenvolvimento e causa várias dificuldades (o Idea.Informer parou de enviar cartas e não suporta SSL).
Inicialmente, o OpenNumismat suportava inglês e russo. Mas um ano após o primeiro lançamento da Venezuela, uma proposta foi recebida para traduzir para o espanhol. Depois vieram ofertas de tradução para outros idiomas. Inicialmente, a tradução foi realizada com a ferramenta Qt Linguist. Para conveniência dos voluntários, agora está sendo usado um serviço online que fornece uma infraestrutura conveniente para projetos abertos. O OpenNumismat está atualmente traduzido para 15 idiomas.
Para promover o OpenNumismat, tive que estudar alguns dos truques dos CEOs. Então, usando a marcação semântica, pude promover e melhorar a exibição do site do aplicativo nos mecanismos de pesquisa.
Problemas de versão da biblioteca
Para a versão do Windows, o PyQt versão 5.5.1 é atualmente usado. Mudar para uma versão mais recente é complicado substituindo o Qt WebKit pelo Qt WebEngine, que ainda não sabe como visualizar as páginas impressas usadas para trabalhar com relatórios.
É necessária uma transição para usar Qt Charts para criar gráficos estatísticos, mas ela não está disponível na versão usada. Claro, você poderia ter coletado separadamente, mas suas mãos não alcançaram. Portanto, para estatísticas, o pacote Python Matplotlib é usado.
Além disso, as versões recentes do Python não oferecem suporte ao Windows XP, que ainda é usado por um pequeno número de usuários.
A versão Linux geralmente pode usar qualquer combinação de versões do PyQt, Python, Matplotlib. Portanto, as estatísticas podem não funcionar em algumas configurações; em outras, a visualização de relatórios é limitada.
Havia duas opções para construir no macOS: use a compilação oficial do Python com os pacotes necessários, ou MacPorts. Na primeira versão, surgem os problemas descritos com os relatórios, o processo de compilação não pôde ser totalmente configurado, na segunda houve problemas com o Matplotlib, mas o MacPorts construiu a versão mais recente do PyQt com o Qt WebKit. Atualmente, usando a opção MacPorts.
Também quero observar que o SQLite não suporta caracteres não ASCII prontos para uso. Isso causou problemas ao classificar usuários usando alfabetos em que caracteres diferentes de latim e russo são usados (por exemplo, ucraniano e catalão - os usuários desses países prestam atenção especial ao problema). A transferência da classificação das consultas SQL para o Qt não apenas resolveu o problema, mas também melhorou o desempenho.
Comentários
Feedback e feedback é a parte mais agradável do trabalho. O melhor de tudo é que o OpenNumismat foi aceito pela comunidade numismática espanhola. Os russos me surpreenderam com críticas como: "O programa espera que a coleção seja preenchida o máximo possível e depois relata ONDE NECESSITA". Aparentemente, tem medo de "hackers russos". Muitas vezes, você precisa dar desculpas aos céticos que nem usam o OpenNumismat - isso às vezes é frustrante.
Muitos usuários escrevem apenas para agradecer, oferecer novas idéias, pedir ajuda para entender o aplicativo. A maioria deles descreve erros e problemas no aplicativo, que sem dúvida surgem frequentemente, porque o desenvolvimento e o teste são realizados por uma pessoa.
A pergunta mais comum é "Eu tenho uma versão demo de como obter a versão completa". Isso ocorre porque, na primeira vez em que você abre um banco de dados demo chamado demo. Aparentemente, isso é muito confuso para novos usuários.
Freqüentemente, eles propõem adicionar funcionalidades muito específicas que podem ser úteis para usuários individuais, mas para a maioria podem parecer completamente desnecessárias e complicadas. Ou muda a lógica básica da organização dos dados. É preciso recusar tais ofertas ou, mais frequentemente, ignorar a mensagem.
Às vezes, recebo mensagens de erro que não consigo reproduzir. Se o contato com o usuário for estabelecido, o problema geralmente será resolvido após algumas correspondências e experimentos conjuntos. Às vezes, não é possível entrar em contato, e o erro permanece não corrigido e, possivelmente, não é mais percebido.
Além disso, as cartas vêm dos criadores de sites numismáticos e catálogos eletrônicos que estão tentando revolucionar, mas até agora não há progresso perceptível.
Conclusão
O desenvolvimento está em andamento há mais de 6 anos. Muito foi alcançado, mas o aplicativo ainda está longe de ser perfeito. Há muitas outras idéias que eu gostaria de implementar.
Obter feedback positivo é certamente bom e eu quero fazer uma ferramenta realmente útil para os usuários. E como eu sou um usuário ativo do OpenNumismat, não vou parar por aí.