acm-header
登录

ACM通信

首页 / 的意见 / 文章 / 交出 /全文
Kode恶性

交出


回到顶部亲爱的KV

当大多数开源项目只是建议你采用GitHub或SourceForge上的最新内容时,如何基于开源软件制作合理的软件包呢?我们可以像GitHub鼓励我们做的那样,把代码分叉,然后制作我们自己的版本,但这样就把我们期望从项目中得到的版本工程工作交给了我们。

交出

回到顶部

亲爱的分叉的

简短的回答是,你不能,但如果这就是我要说的,我就不会费事回这封信了,所以让我对此做更多的解释。

这是好处之一而且从打包系统到SaaS(软件即服务)的转变的缺点是不断的滚动发布。当用户和他们的软件之间的所有交互都通过Web浏览器代理时——去掉任何客户端代码,实际上是在软件开发人员的控制下与服务器交互——那么推出一个新的软件版本只是更改服务器上的软件的问题。大多数以这种方式提供软件的公司能够并且经常每天推出软件,有时一天推出好几次。SaaS为软件行业的一部分提供了极大的自由。当bug可以在下一个版本中修复时,为什么还要担心它们呢?

这种思维模式的缺点是,它在接口维护中引入了一定程度的惰性。如果你可以在下次推送时推出升级,为什么还要关心维护API呢?如果你的API只有少数消费者,这种态度几乎不会产生负面影响。然而,一旦你把你的软件放在GitHub或类似的服务上共享,你就有了一个依赖于你的软件的未知社区。您是否对这些外部用户有责任?好吧,如果你没有,那么你就不应该费心去分享你的软件,因为它不是真正的可共享的,除非在这个词最广泛的意义上。是的,任何人都可以“分叉”你的回购或下载代码并使用它,但如果你对它的公开面(它所展示的API)的态度是如此漫不经心,以至于你在做API更改时甚至都懒得标记你的源代码树,他们就不能依赖它。

无论软件是为打包开发的还是为SaaS开发的,一旦它有了一组消费者,就需要使用一些标准实践来维护它。你可能不会删减一个版本就像术语所说的那样,在那里有一个单独的软件包可以下载,尽管这样的软件包确实使我们这些维护软件包存储库(如FreeBSD/MacPorts、Red Hat rpm、Yum等)的人的生活更加轻松。但是,您至少必须指出何时更改了API,因为API是您的包与世界其他部分之间的契约。指示此API更改的最简单方法是用发布标记标记源代码树。选择标记名称是一个独立的、痛苦的和乏味的讨论,我在这里不进行讨论,只是说标记含义的一致性将有助于下游用户。

考虑何时用发布标签标记您的树有一些方便的副作用。首先,它迫使你和你的团队专注于一个最终目标。软件工程师是出了名的喜欢完美,讨厌发布软件,直到它完成完成通常定义很差。考虑是什么组成了软件的发布,使开发人员关注一个他们所有人都能工作的终点。API更改是创建这样一个发布点的一个很好的理由。

其次,它有助于将一个大型项目分解成逻辑上相关的阶段。很少有项目小到在第一次发布之后才完成,除非那是他们完全失败的时候。因为你知道这个软件会有不止一个版本,所以最好做好计划——尽管我知道,对许多人和团体来说,“计划”是一个四个字母的单词。当你这样做的时候,维护良好的关于更改的发布说明将有助于让下游用户感到愉快。


如果您对共享您的软件是认真的,那么您应该认真对待您如何共享它。


如果您对共享您的软件是认真的,那么您应该认真对待如何你共享它:考虑发布点,标记你的树,不要在不通知用户的情况下更改api。

KV

回到顶部

亲爱的KV

在使用开源软件的过程中,我最不喜欢的一点是它似乎永远都不会完成。我会下载、构建并安装一个开源包,尝试使用它,发现它几乎可以工作,但它以不可预知的方式失败。然后我将阅读该项目的论坛或邮件列表,或者只是搜索Stack Overflow,并发现该软件有严重的限制,这些限制在项目主页上没有显示出来。应该有一个Web页面来对开源软件的质量进行评级,这样用户就可以快速确定某个软件是否适合使用。

被开源所欺骗

回到顶部

亲爱的短

我觉得你在信中提到开源很奇怪。你是否从未使用过不符合预期或不符合营销宣传的专有产品?

在软件和一般的计算系统中,“几乎可以工作的工具”是一个经常出现的问题。开发人员是乐观主义者,他们会承诺月球,但只会把你送到LEO(近地轨道)。是的,从近地轨道上看到的景色令人惊叹,但它并不能给你的全球通信卫星提供它真正需要的视野。除了告诉你要对所有开发者和营销陈述持保留态度外,还能做些什么来避免意外呢?

您应该以相反的顺序执行这些操作,而不是使用该工具,然后在它没有按照预期的方式工作时运行到Web。关于互联网的一个伟大的事情是它持有的错误消息的数量,以及在注释中进行的对话很少消失的事实。与“下载并尝试”的工作模式相比,与您所选择的包相关联的几个精选词可能更能告诉您它是否适合您的需求。我特别喜欢这句话:崩溃,无法构建,部分失败,段错误,.将这些信息与您的软件包名称结合起来,在您最喜欢的搜索网站中输入它们,您至少可能会得到预先警告。

您还提到了一个项目的论坛和邮件列表。你为什么不先看看?你会不检查就买房子吗?你会看不见就买二手车吗?如果不是,那么为什么不阅读用户的意见就尝试一个软件呢?而罗马人从来没有一个词来形容下载,软件也同样受制于购者自慎就像你买的其他东西一样。

最后,对于研究生项目中的任何软件,我会非常小心。虽然许多这样的项目产生了完整的系统,但有相当多的项目产生的系统只够获得学位,然后学位授予的那一刻就被放弃了。随着政府开始要求受资助的研究项目不仅把他们的论文,而且把他们的软件也放到网上——他们应该这样做——我预计我们将看到这种“几乎可以工作”的工具继续扩散。

KV

ACM队列的q戳相关文章
queue.acm.org

开源到核心
约旦哈伯德
http://queue.acm.org/detail.cfm?id=1005064

开放与封闭:哪个来源更安全?
理查德•福特
http://queue.acm.org/detail.cfm?id=1217267

开源适合你吗?
大卫·亚瑟
http://queue.acm.org/detail.cfm?id=1005065

回到顶部

作者

乔治·v·内维尔·尼尔kv@acm.org)是Neville-Neil Consulting的东主及ACM队列编辑委员会。他从事网络和操作系统代码方面的工作,教授各种与编程相关的课程,并鼓励您的评论、俏皮话和与他相关的代码片段通信列。


版权归作者所有。

数字图书馆是由计算机协会出版的。版权所有©2014 ACM, Inc.


没有找到条目

Baidu
map