Open source 如果项目是开源的,你会费心去看源代码吗?

Open source 如果项目是开源的,你会费心去看源代码吗?,open-source,Open Source,我非常惊讶地发现,我的小开源项目的原始源代码下载的频率比编译后的即用库(本例中为jar文件,与平台无关)要高。我想知道这背后的原因是什么?缺乏信任?好奇?使用自定义设置编译?附加源以进行调试 就我个人而言,除非有什么东西不起作用或者我不明白它是如何工作的,否则我通常不会费心下载和查看源代码 第一个原因是定制应用程序 另外,下载一些代码并直接使用它而不查看代码是如何工作的也不是一个好的做法。你可以从代码中学到一些东西 此外,您可能不需要项目的全部功能。如果项目太大,您只需要使用其中的一些功能,那么

我非常惊讶地发现,我的小开源项目的原始源代码下载的频率比编译后的即用库(本例中为jar文件,与平台无关)要高。我想知道这背后的原因是什么?缺乏信任?好奇?使用自定义设置编译?附加源以进行调试


就我个人而言,除非有什么东西不起作用或者我不明白它是如何工作的,否则我通常不会费心下载和查看源代码

第一个原因是定制应用程序

另外,下载一些代码并直接使用它而不查看代码是如何工作的也不是一个好的做法。你可以从代码中学到一些东西


此外,您可能不需要项目的全部功能。如果项目太大,您只需要使用其中的一些功能,那么最好根据您的需要调整项目,然后使用它。

首要原因是编译器设置。您无法想象链接使用某些不兼容设置编译的静态库会带来多大的痛苦。使用选中的设置自行编译大大简化了生活。另外,当您决定将编译器更改为更好的编译器时,您不需要使用旧的静态库—它将由新的编译器编译


第二个原因可能是人们希望看到一些东西在里面是如何工作的。例如,他们希望在他们的商业封闭源代码项目中使用相同或类似的功能,并且不能因为病毒许可证而借用代码。然而,他们可以看到它的工作原理并获得灵感——这就是他们下载源代码并阅读的原因。

我经常下载源代码,只是为了看看其他人是如何实现某些事情的。阅读(并理解)其他人的源代码是自己成为一名更好的程序员的好方法


至于相对较高的下载数量,可能您的库包含在其他项目中,比如Linux发行版?此类项目通常从源代码下载并自行构建,以便能够正确打包。

对于我公司长期感兴趣的每一个软件,我都会查看源代码以评估其质量。其背后的理由是,写得不好的软件通常也不好使用和维护,因此从长远来看是一种商业风险

即使是像ERP系统这样的大多数商业软件,查看源代码也没有问题。仅对于COTS(比如MS Office),很难获得源代码

我还检查每个招聘决定的来源


您看到如此多源代码下载的另一个原因可能是自动构建系统,如自动下载和编译的系统。

我自己下载了库并编译了它们,但实际上我没有查看代码。当我使用一个库时,很高兴知道我可以进行更改,并且手头有源代码。如果它是一个大型库,我有时只需要一两个文件,我只需要一个大型库中的单个功能。

我查看源代码只是为了了解程序的工作原理


开源软件(如开源CRM)因缺乏文档而臭名昭著,这似乎很愚蠢。要知道它是如何工作的,唯一的办法就是用它进行实验。当实验失败时,是时候启动IDE并读取源代码了

答案可能会令人失望,但相对较高的源代码下载数量可能意味着该应用程序打包在基于端口的发行版中,如Gentoo、FreeBSD或MacPorts,在安装过程中,每个包都在本地计算机上下载和编译。

如果是框架,我总是下载源代码。我使用它们进行调试,并查看它们是如何实现某些事情的。如果它是一个独立的应用程序,我通常不会查看源代码,除非有问题或者应用程序做了一些独特的事情。

正如您所说的二进制文件是一个jar,它听起来像是一个Java库(而不是一个应用程序)。开发人员经常使用源代码:将其包含在IDE中,以便在库中进行调试并查找某些函数。此外,许多开发人员在构建过程中包括源代码,以编译依赖项。这可能是一种解释。

一些原因可能是:

由于特洛伊木马等原因,不信任二进制下载

看看你是如何实现的


检查代码的质量:)

因为这是一个库,所以对综合文档的需求要比独立应用程序高很多。我经常查找库的代码,以找出文档中有时遗漏的某些内容,例如某些函数的时间/空间复杂性。

我们在商业应用程序中使用了一些开源软件包。我总是从源代码下载和构建

  • 如果我们的托管平台在 未来,它可能会变成 一种没有特殊用途的东西 预编译二进制文件。我想成为 能够使用相同的软件包/版本 在新平台上

  • 如果包处于休眠状态或 变得不受支持,我想成为 能够在以下情况下应用更改或修复: 绝对必要

  • 如果路上出了什么问题 服务器(内存泄漏、CPU峰值、, 等等),我希望能够添加 日志记录或检测代码 确定或消除包装为 问题的根源


    • 我当然只能自己回答,但下载二进制文件(假设我信任通常情况下的项目)和调试时下载源代码的情况并不少见。但是我有一种倾向,当我认为我已经完成了源代码时,我会删除它们,因为你从来没有真正完成过,我可能不得不在以后重新下载源代码,从而导致源代码下载更高

      第二点大体上是合理的,但我无法想象