Architecture 软件;“打电话回家”;;好吗?糟糕?邪恶?你会发出什么通知?如何?

Architecture 软件;“打电话回家”;;好吗?糟糕?邪恶?你会发出什么通知?如何?,architecture,Architecture,打电话回家 每个人都想时不时地。。。当软件成长并成为成熟产品时,它会怎么样?它不应该是一个成年人,安静地生活在它的新家里吗?或者,它应该表现出某种来自何处的情感吗 我听一些人说,他们会从盘中撕下任何试图在没有他们同意的情况下进行交流的内容。我还注意到,现在有大量的产品例行地请求许可发送统计使用信息。在这两者之间有很多层次 我正坐在篱笆上 有很长的一段解释了我是如何想到这个问题的,但为了我们的利益,我写了一篇文章,然后删除了它。可以说,我是首席科学家、公司高管和我们开发工作的负责人;这真的是一件大

打电话回家

每个人都想时不时地。。。当软件成长并成为成熟产品时,它会怎么样?它不应该是一个成年人,安静地生活在它的新家里吗?或者,它应该表现出某种来自何处的情感吗

我听一些人说,他们会从盘中撕下任何试图在没有他们同意的情况下进行交流的内容。我还注意到,现在有大量的产品例行地请求许可发送统计使用信息。在这两者之间有很多层次

我正坐在篱笆上

有很长的一段解释了我是如何想到这个问题的,但为了我们的利益,我写了一篇文章,然后删除了它。可以说,我是首席科学家、公司高管和我们开发工作的负责人;这真的是一件大事,我正在寻找编程社区的见解,因为我在这里没有得到任何有用的反馈

打电话回家的最大理由是,一些相关人员担心可能会有严重的欺诈合同企图,如果该软件偶尔打电话回家,它将有助于发现欺诈行为(会受到处罚)

其他赞成者的观点是,它可以提供使用情况统计数据,也许还可以检测更新是否合适

反对的最大理由是它具有攻击性


我也不知道该如何设计这个。很明显,所有一直在打电话回家的事情都不会发生。有六种主要的产品,有些将运行24 X 7 X 365.24,有些将像一个该死的溜溜球一样上下浮动,但是所有这些产品上的一些数据都很好-本地存储库

然后是连接策略——一封邮件消息虽然方便,但可能是一个不好的电话,因为它可能更突兀(也许)。那么,一个简单的TCP-ssh调用也可能没有那么好

那么,怎么样?如果你是职业选手,请告诉我原因。如果你反对,为什么还要反对呢。“做对了?”合同文本的例子,你喜欢或讨厌

接下来,如果我们决定这么做,我们应该怎么做——你会怎么做?为什么?

坦率地说,我非常伤心。一般来说,我讨厌这样的事情,但作为公司的一名管理人员,我必须承认,我的感受是,这里可能有很多钱,被冒犯可能不是一个好的理由


谢谢你的想法。

如果我出售了软件,我不确定我是否会这样做,如果我这样做了,我肯定会让用户选择是否参与,但我可以看到某些类型的错误(不是常见的,而是意外的)直接报告回错误数据库的真正价值。您可能需要对它们进行过滤,以便根据消息中的某些签名丢弃重复项,或者至少将其标记为重复项。

我认为这一次是由德沃夏克或类似的人介绍的。我完全同意他的立场。知情同意是最好的方式

收缩包装软件应在包装盒外部明确说明需要哪些网络端口,并应扩展到包括呼叫总部要求和收集的信息类型

其他商业软件也是如此。在安装期间和书面文档中,在“帮助/关于”中突出列出所需的端口和传输的数据类型


我认为这应该与(美国)食品成分清单一样被法律要求。

知情同意,其中知情意味着你将要发送给客户的信息的类型、频率和内容确实是唯一合理的选择,否则你开始与恶意软件作者非常相似。如果你试图偷偷摸摸地把事情搞定,人们会发现,而且会非常讨厌你。您可能可以并且应该将其作为改进服务的一种手段,但是,每个人都喜欢自己报告bug的软件


这意味着你不能依赖它作为你的欺诈检测机制,但是,考虑到有很多钱在桌子上,你可以通过合同进行一些随机检查。例如,您可以在本地注册您本来要发送的数据,然后在检查中查看这些数据。我不认为您必须声明您将在本地注册使用信息(IANAL、YMMV、WTF、BBQ)

我倾向于适度使用。任何信息活动都应选择加入而不是退出(即碰撞报告、统计数据等)

为了保护你的财产,我想没关系。很多人会告诉你,它不会停止作弊,因为人们可以愚弄它,但它可以帮助你。只是不要收集任何可能(现实地)被视为侵犯隐私的信息,我认为这没有任何问题。还要确保所做的一切都经过充分的磨练和测试,不会对用户体验产生负面影响。i、 e.如果它在打电话回家时无法连接,导致软件无法正常工作,这可能是一个大问题。

“我也不知道该如何设计它。”

一个简单的方法是编写一个应用程序,该应用程序与您的每一个创收应用程序一起安装。它知道如何确定您的软件正在运行的版本,并且可以触发它定期运行,或者从您的其他应用程序调用它,等等

您需要一个只发布/提供产品/平台和版本的映射(数据对)的服务器。然后,确定新版本是否可用的业务逻辑在客户机上。或者,您可以将该逻辑保留在服务器端(这一点有很多话要说),让客户端应用程序发送一个仅包含当前版本/平台信息的请求,并且无论是否推荐新版本或补丁,都将生成响应

这是我脑子里想不出来的——特别需要一个真正的设计