Je souhaite partager mon expérience dans le développement d'une application de bureau pour les collectionneurs open source.
De par la nature de mon activité principale, je développe des logiciels pour les systèmes embarqués et croise rarement les utilisateurs finaux. Par conséquent, nous parlerons des fonctionnalités que j'ai rencontrées lors du développement d'une application non commerciale pour un large éventail d'utilisateurs, ce qui est devenu une découverte pour moi.

La description
OpenNumismat, comme son nom l'indique, est principalement destiné à rendre compte de la collecte des pièces. Mais il convient également à d'autres types de collection - timbres, cartes, badges et objets plus exotiques.
L'application est écrite en Python, la base de données utilise SQLite pour stocker des données, PyQt est utilisé pour l'interface, l'accès aux données et bien plus encore, Jinja2 est utilisé pour générer des rapports et Matplotlib est utilisé pour construire des graphiques statistiques. Malgré mon scepticisme initial, cela s'est avéré suffisant pour garantir des performances acceptables - plusieurs milliers d'enregistrements avec des images sont traités sans aucun frein notable.
Étant donné que tous les composants sont multiplates-formes, OpenNumismat possède également des assemblys pour Windows, Linux (Debian / Ubuntu), macOS.
Il existe également une version Android actuellement abandonnée. Il a été remplacé par PWA (Progressive Web App), qui vous permet de visualiser votre collection dans n'importe quel navigateur - SQLite.js est utilisé. Il s'est avéré beaucoup plus facile de développer PWA pour créer une application Android native de capacités similaires. De plus, il est immédiatement disponible sur toutes les plateformes.
Concurrents
Maintenant, il existe de nombreuses applications pour les collectionneurs et, en particulier, les numismates. La plupart d'entre eux "ressemblent à quelqu'un qui a obtenu sa première version de Firefox et l'a utilisée".
Aux États-Unis, beaucoup utilisent des logiciels commerciaux, dont l'avantage incontestable est la disponibilité de bases de données toutes faites de pièces existantes. L'utilisateur ne peut marquer que les pièces disponibles et entrer les informations d'achat - prix, date, etc.
Des fonctionnalités similaires sont fournies par les applications mobiles (la plupart pour Android) et les services Web. OpenNumismat est plus concentré sur la création d'un catalogue de sa propre collection unique, plutôt que de «fermer les trous dans l'album fini», comme le disent certains numismates.
Mais le principal concurrent est Microsoft. La grande majorité des collectionneurs utilisent Excel malgré le fait qu'il ne fonctionne pas bien avec les images. Certains utilisent également Access ou 1C et créent leur propre base de données de collection avec tout ce dont ils ont besoin. Mais cela nécessite encore une certaine préparation.
Pour attirer les utilisateurs, les importations des alternatives les plus populaires sont mises en œuvre.
Quant à Linux et macOS, il n'y a pratiquement pas d'analogues pour ces plateformes.
Les avantages de l'ouverture
Le principal avantage du code open source était la possibilité d'utiliser gratuitement des services tiers pour la distribution, la traduction, le suivi des bogues. Pull request, à mon grand regret, il n'y en avait que trois.
De façon inattendue pour moi, un autre avantage était l'opportunité potentielle de convaincre les sceptiques de la sécurité du programme - ils disent sur les forums qu'ils ont vérifié le code avec grep et il n'y a aucun soupçon.
Environnement utilisé
Au départ, Google Code a été choisi pour la distribution d'OpenNumismat, qui fournissait un suivi des bogues pratique, un wiki multilingue pour la documentation, le téléchargement de binaires et, bien sûr, un référentiel git. Mais à partir de 2013, Google Code a commencé à mourir. Pour le déménagement, le choix était entre SourceForge et GitHub. Les deux services offrent la possibilité de créer des sites de projet (la documentation du wiki devait être refaite dans les pages statiques du site), mais le téléchargement de binaires à partir de SourceForge semble effrayant pour un utilisateur non préparé. Par conséquent, le choix s'est porté sur GitHub.
Le suivi des bogues GitHub nécessite une inscription, ce qui n'est pas si pratique pour les utilisateurs qui sont loin de la programmation. Par conséquent, il a été décidé d'utiliser un service tiers.
Idea.Informer (Reformal pour un public russophone) a été trouvé - un service gratuit et pratique, mais il ne se développe pas actuellement et cela provoque un certain nombre de difficultés (Idea.Informer a cessé d'envoyer des lettres et ne prend pas en charge SSL).
Initialement, OpenNumismat supportait l'anglais et le russe. Mais un an après la première sortie du Venezuela, une proposition a été reçue de traduire en espagnol. Puis vinrent des offres de traduction dans d'autres langues. Initialement, la traduction a été réalisée à l'aide de l'outil Qt Linguist. Pour la commodité des bénévoles, un service en ligne est maintenant utilisé et fournit une infrastructure pratique pour les projets ouverts. OpenNumismat est actuellement traduit en 15 langues.
Pour promouvoir OpenNumismat, j'ai dû étudier certaines des astuces des PDG. Ainsi, grâce au balisage sémantique, j'ai pu promouvoir et améliorer l'affichage du site d'application dans les moteurs de recherche.
Problèmes de version de bibliothèque
Pour la version Windows, PyQt version 5.5.1 est actuellement utilisée. Passer à une version plus récente est compliqué en remplaçant Qt WebKit par Qt WebEngine, qui ne sait toujours pas comment prévisualiser les pages imprimées utilisées pour travailler avec les rapports.
Une transition est nécessaire pour utiliser les graphiques Qt pour créer des graphiques statistiques, mais elle n'est pas disponible dans la version utilisée. Bien sûr, vous auriez pu le collecter séparément, mais vos mains n’ont pas atteint. Par conséquent, pour les statistiques, le package Python Matplotlib est utilisé.
De plus, les versions récentes de Python ne prennent pas en charge Windows XP, qui est toujours utilisé par un petit nombre d'utilisateurs.
La version Linux peut généralement utiliser n'importe quelle combinaison de versions de PyQt, Python, Matplotlib. Par conséquent, les statistiques peuvent ne pas fonctionner sur certaines configurations; sur d'autres, l'affichage des rapports est limité.
Il y avait deux options pour construire sur macOS: utiliser la construction officielle de Python avec les packages requis, ou MacPorts. Dans la première version, les problèmes décrits avec les rapports se posent, le processus de génération n'a pas pu être entièrement configuré, dans la seconde, il y avait des problèmes avec Matplotlib, mais MacPorts a une version de la dernière version de PyQt avec Qt WebKit. Utilise actuellement l'option MacPorts.
Je tiens également à noter que SQLite ne prend pas en charge les caractères non ASCII prêts à l'emploi. Cela a causé des problèmes lors du tri des utilisateurs en utilisant des alphabets où des symboles autres que le latin et le russe sont utilisés (par exemple, l'ukrainien et le catalan - les utilisateurs de ces pays ont particulièrement prêté attention au problème). Le transfert du tri des requêtes SQL vers Qt a non seulement résolu le problème, mais a également amélioré les performances.
Rétroaction
La rétroaction et la rétroaction sont la partie la plus agréable du travail. Mieux encore, OpenNumismat a été accepté par la communauté numismatique espagnole. Les Russes m'ont surpris avec des critiques comme: "Le programme attend que la collection se remplisse autant que possible, puis signale OERE LES BESOINS." Apparemment peur des «pirates russes». Souvent, vous devez trouver des excuses aux sceptiques qui ne vont même pas utiliser OpenNumismat - c'est parfois frustrant.
De nombreux utilisateurs écrivent juste pour remercier, proposer de nouvelles idées, demander de l'aide pour comprendre l'application. La plupart d'entre eux décrivent des erreurs et des problèmes dans l'application, qui se produisent sans aucun doute souvent, car le développement et les tests sont effectués par une seule personne.
La question la plus courante est «J'ai une version de démonstration de la façon d'obtenir la version complète». Cela est dû au fait que la première fois que vous ouvrez une base de données de démonstration appelée démo. Apparemment, cela est très déroutant pour les nouveaux utilisateurs.
Très souvent, ils proposent d'ajouter des fonctionnalités très spécifiques qui peuvent être utiles à des utilisateurs individuels, mais pour la plupart, cela peut sembler complètement inutile et compliqué. Ou cela change la logique de base de l'organisation des données. Il faut refuser de telles offres ou, plus souvent, ignorer le message.
Parfois, je reçois des messages d'erreur que je ne peux pas reproduire. Si le contact avec l'utilisateur est établi, le problème est généralement résolu après une correspondance et des expériences conjointes. Parfois, il n'est pas possible d'entrer en contact, et l'erreur reste non corrigée et, peut-être, n'est plus remarquée.
En outre, les lettres proviennent des créateurs de sites numismatiques et de catalogues électroniques qui tentent de révolutionner, mais aucun progrès notable n'a été enregistré jusqu'à présent.
Conclusion
Le développement est en cours depuis plus de 6 ans. Beaucoup a été fait, mais l'application est encore loin d'être parfaite. Il y a beaucoup plus d'idées que j'aimerais mettre en œuvre.
Obtenir des commentaires positifs est certainement agréable et je veux faire un outil vraiment utile pour les utilisateurs. Et comme je suis moi-même un utilisateur actif d'OpenNumismat, je ne vais pas m'arrêter là.