我想分享我为开源收集器开发桌面应用程序的经验。
根据主要活动的性质,我为嵌入式系统开发软件,很少与最终用户相交。 因此,我们将讨论在为广泛的用户开发非商业应用程序时遇到的功能,这对我来说是一个发现。

内容描述
顾名思义,OpenNumismat主要用于收集硬币。 但它也适用于其他类型的收集-邮票,卡片,徽章和更多奇特的东西。
该应用程序是用Python编写的,数据库使用SQLite来存储数据,PyQt用于接口,访问数据等等,Jinja2用于生成报告,Matplotlib用于构建统计图。 尽管我最初对此表示怀疑,但事实证明这足以确保令人满意的性能-处理带有图像的数千条记录时没有任何明显的刹车。
由于所有组件都是跨平台的,因此OpenNumismat还具有适用于Windows,Linux(Debian / Ubuntu)和macOS的程序集。
目前还没有一个Android版本。 它已被PWA(渐进式Web应用程序)取代,它允许您在任何浏览器中查看集合-使用SQLite.js。 事实证明,开发PWA来创建功能相似的本机Android应用程序要容易得多。 此外,它可立即在所有平台上使用。
竞争者
现在,收藏家有很多应用,尤其是货币学家。 他们中的大多数“看起来好像有人获得了他们的第一个Firefox版本并使用了它”。
在美国,许多人使用商业软件,其无疑的优势是可以使用现有硬币的现成数据库。 用户只能标记可用的硬币并输入购买信息-价格,日期等。
移动应用程序(大多数用于Android)和Web服务提供了类似的功能。 OpenNumismat更加专注于创建自己独特收藏的目录,而不是像一些货币学家所言,“封闭成品专辑中的漏洞”。
但是主要竞争对手是微软。 尽管事实证明Excel不能很好地与图像配合使用,但绝大多数收集器仍使用Excel。 有些人还使用Access或1C并使用他们需要的所有内容创建自己的集合数据库。 但这仍然需要一些准备。
为了吸引用户,实施了从最受欢迎的替代产品中导入的产品。
至于Linux和macOS,这些平台几乎没有类似物。
开放的好处
开源代码的主要优点是可以免费使用第三方服务进行分发,翻译和错误跟踪。 拉请求,令我非常恼火的只有三个。
出乎我意料之外,另一个优势是潜在的机会可以说服怀疑者对该程序的安全性-他们在论坛上说,他们使用grep检查了该代码,并且没有怀疑。
使用环境
最初,选择Google Code来分发OpenNumismat,它提供了方便的错误跟踪,用于文档的多语言Wiki,下载二进制文件,当然还有git存储库。 但是从2013年开始,Google Code开始死亡。 首先,选择是在SourceForge和GitHub之间。 两种服务都具有创建项目站点的能力(必须从Wiki的静态页面中重做Wiki的文档),但是对于没有准备的用户来说,从SourceForge下载二进制文件看起来很可怕。 因此,选择权落在了GitHub上。
GitHub bug跟踪器需要注册,这对远离编程的用户来说并不方便。 因此,决定使用第三方服务。
发现了Idea.Informer (针对俄语的观众的改制)-一种免费,便捷的服务,但目前尚未开发,因此造成了许多困难(Idea.Informer停止发送信件并且不支持SSL)。
最初,OpenNumismat支持英语和俄语。 但是从委内瑞拉首次发布一年后,就收到了将其翻译成西班牙语的提案。 然后是翻译成其他语言的提议。 最初,翻译是使用Qt语言学家工具进行的。 为了方便志愿者,现在正在使用在线服务,该服务为开放项目提供了便利的基础结构。 OpenNumismat当前被翻译成15种语言。
为了推广OpenNumismat,我不得不研究CEO的一些技巧。 因此,使用语义标记,我能够促进和改善应用程序站点在搜索引擎中的显示。
库版本问题
对于Windows版本,当前使用PyQt版本5.5.1。 通过用Qt WebEngine替换Qt WebKit来切换到较新的版本很复杂,后者仍然不知道如何预览用于处理报告的打印页面。
需要进行转换才能使用Qt图表构建统计图,但是在所使用的版本中不可用。 当然,您可以单独收集它,但是您的手没有伸开。 因此,为了进行统计,使用了Python包Matplotlib。
另外,Python的最新版本不支持Windows XP,少数用户仍在使用Windows XP。
Linux版本通常可以使用PyQt,Python和Matplotlib版本的任意组合。 因此,统计信息可能不适用于某些配置;在其他配置上,查看报告是受限制的。
在macOS上构建有两种选择:使用带有必需软件包的正式Python构建或MacPorts。 在第一个版本中,出现了报告中描述的问题,无法完全自定义构建过程,在第二个版本中,Matplotlib出现了问题,但是MacPorts使用Qt WebKit构建了最新版本的PyQt。 当前使用MacPorts选项。
我还想指出,SQLite开箱即用不支持非ASCII字符。 这在使用使用拉丁语和俄语以外的字符的字母对用户进行排序时引起问题(例如,乌克兰语和加泰罗尼亚语-这些国家的用户特别注意此问题)。 将排序从SQL查询转移到Qt不仅解决了问题,而且还提高了性能。
意见反馈
反馈和反馈是工作中最愉快的部分。 最重要的是,OpenNumismat已被西班牙货币主义团体所接受。 俄国人给我的评价让我感到惊讶:“该程序会等待收藏尽可能多的内容,然后报告需要的地方。” 显然害怕“俄罗斯黑客”。 通常,您必须为甚至不打算使用OpenNumismat的怀疑者找借口-这有时令人沮丧。
许多用户只是为了表示感谢,提供新的想法,寻求帮助以了解应用程序。 其中大多数描述了应用程序中的错误和问题,这些错误和问题无疑是经常发生的,因为开发和测试是由一个人执行的。
最常见的问题是“我有一个演示版,如何获得完整版”。 这是由于您第一次打开一个名为demo的演示数据库。 显然,这对于新用户来说非常令人困惑。
他们经常建议增加非常特定的功能,这些功能可能对单个用户有用,但是对于大多数用户而言,这似乎完全没有必要且很复杂。 或者它改变了数据组织的基本逻辑。 人们不得不拒绝这样的提议,或者更经常地,忽略消息。
有时我收到无法重现的错误消息。 如果建立了与用户的联系,则通常在进行一些对应和联合实验后才能解决问题。 有时无法联系,并且错误仍然没有得到纠正,并且可能不再被注意到。
同样,来自钱币网站和电子目录创建者的信件也试图进行革新,但是到目前为止没有明显的进展。
结论
开发已经进行了6年以上。 已经取得了很多成就,但是应用程序还远远不够完善。 我还想实现更多的想法。
获得积极的反馈肯定很好,我想为用户提供一个非常有用的工具。 而且由于我本人是OpenNumismat的活跃用户,所以我不会在这里停留。