经常有人要求我确定一个给定的开放源码产品的开放源码部署总数。这是一个具有挑战性的问题,因为大多数开源解决方案都可以直接或间接地从网站下载,因此你可以得到总下载计数;但是,每个下载都可以用于多个部署,甚至没有部署。事实上,那些试图统计部署数量的人甚至都不知道从镜像或其他来源进行的“非站点”下载的数量。
一个明显的想法是实现一个“回调”操作,在这个操作中,每个部署的开放源码产品都将联系一个中央服务器,表明它已经启动并正在运行。这个概念并没有被开源世界的许多人很好地接受,因为人们不喜欢这个产品被称为家。如果应用程序所做的只是确认它的存在,而没有发送其他信息,那么我认为这是解决问题的优秀方法。回调的源代码对用户是可用的,如果他们在安装期间被告知此服务,并有关闭它的选项,那么我认为这没有问题。当然,关闭选项将减少部署总数,但它比简单的下载要好得多。
另一种选择是许可证密钥交换,用户从开源主机网站请求密钥来启动应用程序。然后,从服务器发送的每个密钥都允许应用程序运行,开源社区可以简单地计数密钥。这是一种改进的许可方式,似乎解决了回调问题;然而,大多数使用开放源码的人不会乐意要求一个密钥。
最后一个问题,为什么这很重要?知道主动部署的数量真的很重要吗?我的回答来自于社区和市场的角度,而不是开发者的角度,当然了。当考虑您的应用程序的前景以及针对更大的、资金充足的专有软件进行营销时,在市场上部署某一开放源码软件的数量是很有价值的信息。
你觉得怎么样?回调是一个重要的问题吗?有没有更好的方法?我期待着你的想法。