Experiencia desarrollando una aplicación gratuita para coleccionistas OpenNumismat

Quiero compartir mi experiencia en el desarrollo de una aplicación de escritorio para coleccionistas de código abierto.

Por la naturaleza de mi actividad principal, desarrollo software para sistemas integrados y rara vez se cruza con los usuarios finales. Por lo tanto, hablaremos sobre las características que encontré al desarrollar una aplicación no comercial para una amplia gama de usuarios, lo que se convirtió en un descubrimiento para mí.

imagen

Descripción


OpenNumismat, como su nombre lo indica, está destinado principalmente a dar cuenta de la colección de monedas. Pero también es adecuado para otros tipos de coleccionismo: sellos, tarjetas, insignias y cosas más exóticas.

La aplicación está escrita en Python, la base de datos usa SQLite para almacenar datos, PyQt se usa para la interfaz, acceso a datos y mucho más, Jinja2 se usa para generar informes, Matplotlib se usa para construir gráficos estadísticos. A pesar de mi escepticismo inicial, esto resultó ser suficiente para garantizar un rendimiento aceptable: se procesan varios miles de registros con imágenes sin frenos notables.
Dado que todos los componentes son multiplataforma, OpenNumismat también tiene ensamblados para Windows, Linux (Debian / Ubuntu), macOS.

También hay una versión de Android actualmente abandonada. Ha sido reemplazado por PWA (Progressive Web App), que le permite ver su colección en cualquier navegador: se utiliza SQLite.js. Resultó ser mucho más fácil desarrollar PWA para crear una aplicación nativa de Android con capacidades similares. Además, está disponible de inmediato en todas las plataformas.

Competidores


Ahora hay muchas aplicaciones para coleccionistas y, en particular, numismáticos. La mayoría de ellos "parece que alguien obtuvo su primera versión de Firefox y la usó".

En los Estados Unidos, muchos usan software comercial, cuya ventaja indudable es la disponibilidad de bases de datos preparadas de monedas existentes. El usuario solo puede marcar las monedas disponibles e ingresar la información de compra: precio, fecha, etc.

Las aplicaciones móviles (la mayoría para Android) y los servicios web proporcionan características similares. OpenNumismat está más centrado en crear un catálogo de su propia colección única, en lugar de "cerrar agujeros en el álbum terminado", como dicen algunos numismáticos.

Pero el principal competidor es Microsoft. La gran mayoría de los coleccionistas usan Excel a pesar del hecho de que no funciona bien con imágenes. Algunos también usan Access o 1C y crean su propia base de datos de colección con todo lo que necesitan. Pero aún requiere algo de preparación.

Para atraer usuarios, se implementan las importaciones de las alternativas más populares.
En cuanto a Linux y macOS, prácticamente no hay análogos para estas plataformas.

Los beneficios de la apertura.


La principal ventaja del código fuente abierto era la capacidad de usar servicios de terceros para distribución, traducción, seguimiento de errores de forma gratuita. Solicitud de extracción, para mi disgusto, solo había tres.

Inesperadamente para mí, otra ventaja fue la oportunidad potencial de convencer a los escépticos de la seguridad del programa: dicen en los foros que verificaron el código con grep y no hay sospechas.

Entorno utilizado


Inicialmente, se eligió Google Code para la distribución de OpenNumismat, que proporcionaba un conveniente seguimiento de errores, un wiki multilingüe para documentación, descargas de binarios y, por supuesto, un repositorio git. Pero a partir de 2013, Google Code comenzó a morir. Para el movimiento, la elección fue entre SourceForge y GitHub. Ambos servicios brindan la capacidad de crear sitios de proyectos (la documentación de la wiki tuvo que rehacerse en las páginas estáticas del sitio), pero descargar binarios de SourceForge parece aterrador para un usuario no preparado. Por lo tanto, la elección recayó en GitHub.

El rastreador de errores de GitHub requiere registro, lo que no es tan conveniente para los usuarios que están lejos de programar. Por lo tanto, se decidió utilizar un servicio de terceros. Se encontró Idea.Informer (Reformal para una audiencia de habla rusa): un servicio gratuito y conveniente, pero actualmente no se está desarrollando y esto causa una serie de dificultades (Idea.Informer dejó de enviar cartas y no admite SSL).

Inicialmente, OpenNumismat era compatible con inglés y ruso. Pero un año después del primer lanzamiento de Venezuela, se recibió una propuesta para traducir al español. Luego vinieron ofertas de traducción a otros idiomas. Inicialmente, la traducción se realizó utilizando la herramienta Qt Linguist. Para comodidad de los voluntarios, ahora se está utilizando un servicio en línea que proporciona una infraestructura conveniente para proyectos abiertos. OpenNumismat está actualmente traducido a 15 idiomas.

Para promover OpenNumismat, tuve que estudiar algunos de los trucos de los CEO. Entonces, utilizando el marcado semántico, pude promover y mejorar la visualización del sitio de la aplicación en los motores de búsqueda.

Problemas de la versión de la biblioteca


Para la versión de Windows, actualmente se usa PyQt versión 5.5.1. Cambiar a una versión más nueva es complicado al reemplazar Qt WebKit con Qt WebEngine, que aún no sabe cómo obtener una vista previa de las páginas impresas utilizadas para trabajar con informes.

Se necesita una transición para usar los Gráficos Qt para crear gráficos estadísticos, pero no está disponible en la versión utilizada. Por supuesto, podrías haberlo recogido por separado, pero tus manos no alcanzaron. Por lo tanto, para las estadísticas, se usa el paquete de Python Matplotlib.

Además, las versiones recientes de Python no son compatibles con Windows XP, que todavía es utilizado por un pequeño número de usuarios.

La versión de Linux generalmente puede usar cualquier combinación de versiones de PyQt, Python, Matplotlib. Por lo tanto, las estadísticas pueden no funcionar en algunas configuraciones; en otras, la visualización de informes es limitada.

Había dos opciones para compilar en macOS: usar la compilación oficial de Python con los paquetes requeridos, o MacPorts. En la primera versión, surgen los problemas descritos con los informes, el proceso de compilación no se pudo personalizar completamente, en la segunda hubo problemas con Matplotlib, pero MacPorts tiene una compilación de la última versión de PyQt con Qt WebKit. Actualmente usando la opción MacPorts.

También quiero señalar que SQLite no admite caracteres no ASCII listos para usar. Esto causó problemas al ordenar a los usuarios usando alfabetos donde se usan símbolos distintos del latín y el ruso (por ejemplo, ucraniano y catalán; los usuarios de estos países prestaron especial atención al problema). La transferencia de la clasificación de consultas SQL a Qt no solo resolvió el problema, sino que también mejoró el rendimiento.

Retroalimentación


La retroalimentación y la retroalimentación son la parte más agradable del trabajo. Lo mejor de todo, OpenNumismat ha sido aceptado por la comunidad numismática española. Los rusos me sorprendieron con comentarios como: "El programa espera a que la colección se llene tanto como sea posible y luego informa DONDE NECESITA". Aparentemente teme a los "hackers rusos". A menudo tienes que poner excusas a los escépticos que ni siquiera van a usar OpenNumismat, esto a veces es frustrante.

Muchos usuarios escriben solo para agradecer, ofrecer nuevas ideas, pedir ayuda para comprender la aplicación. La mayoría de ellos describen errores y problemas en la aplicación, que indudablemente a menudo surgen, porque el desarrollo y las pruebas son realizados por una sola persona.

La pregunta más común es "Tengo una versión demo de cómo obtener la versión completa". Esto se debe al hecho de que la primera vez que abre una base de datos de demostración llamada demo. Al parecer, esto es muy confuso para los nuevos usuarios.

Muy a menudo, proponen agregar funcionalidades muy específicas que pueden ser útiles para usuarios individuales, pero para la mayoría puede parecer completamente innecesario y complicado. O cambia la lógica básica de la organización de datos. Uno tiene que rechazar tales ofertas o, más a menudo, ignorar el mensaje.

A veces recibo mensajes de error que no puedo reproducir. Si se establece contacto con el usuario, el problema generalmente se resuelve después de una correspondencia y experimentos conjuntos. A veces no es posible ponerse en contacto, y el error permanece sin corregir y, posiblemente, ya no se nota.

Además, las cartas provienen de los creadores de sitios numismáticos y catálogos electrónicos que están tratando de revolucionar, pero hasta ahora no hay un progreso notable.

Conclusión


El desarrollo ha estado en curso durante más de 6 años. Se ha logrado mucho, pero la aplicación aún está lejos de ser perfecta. Hay muchas más ideas que me gustaría implementar.

Obtener comentarios positivos es ciertamente bueno y quiero hacer una herramienta realmente útil para los usuarios. Y como yo mismo soy un usuario activo de OpenNumismat, no voy a parar allí.

Source: https://habr.com/ru/post/439626/


All Articles