没有有关其设计或架构的文档,开源项目如何成功?


11

我想通过研究著名的开源项目来提高自己的编程技能,但是我发现仅跳入其源代码很容易迷路。

因此,我决定阅读有关其设计或体系结构的文档(例如UML图),以便首先了解其代码的组织结构。但是,令我惊讶的是,我找不到大型的开源项目(例如Hibernate,Spring,ASP.NET MVC,Rails等)的任何体系结构文档。

因此,我开始怀疑:如果新来的开发人员没有要阅读的体系结构/设计文档,或者项目经理只是打开源代码但关闭了文档,那么开源项目如何成功?


3
“最”?您可以用具体的统计数据来支持吗?你读了几本书?那里有多少?有多少人缺少适当的文档?如果您没有数字,请删除“最”之类的词,然后根据您的实际发现将其替换为真实事实。另外,在提及自己时,请大写“ I”。
S.Lott

@ S.Lott对不起,主观“最多”。我是软件行业的新手。我确实试图在他们的项目网站或代码存储库中搜索我在大学期间听说过的文档(例如UML图,流程图,简要设计文档,详细设计文档等),但都没有运气,只是找到一些用户指南文档。您能教我一些通用的搜索目的/架构文档的方法吗?
TomCaps 2011年

1
请删除“许多”。这和大多数情况一样不正确。请更新问题以明确列出特定的开源项目,这些项目缺少您要查看的特定文档。请准确而具体。请不要过于主观和含糊。
S.Lott

我怀疑ASP.NET MVC不包含UML图的原因是因为Visual Studio可以从源代码创建它们。
user16764 2011年

5
您在错误的假设下进行操作,即“企业”是一件好事。您在大学中学到的关于设计的知识全在于:UML绝对没有价值。创建项目时,您所需要的只是对它应该做什么的总体了解,以及如果您第一次做错了它,愿意将其丢弃。对于现有项目,仅浏览主标题通常就足以了解项目布局。
o11c 2014年

Answers:


10

如果新来的开发人员没有要阅读的体系结构/设计文档,为什么一个开源项目可以成功?

始终假设您知道自己在做什么,并且对要(并期望)看到的东西有合理的了解。

例如,如果您研究Symfony框架的PHP代码,那么您应该已经了解依赖注入,事件,模型/视图/控制器模式等等。

同样,如果您深入研究Linux内核的C代码,则假定您在模块化,信号,进程,线程等方面具有实际的能力。您还应该整天都吃十六进制的小知识,并用大铁铲挖掘核心堆场。

维护人员不会费心去记录架构,因为它实际上是事。有时,您会在源代码树中找到什么的轮廓。但是,更典型地,源树的组织方式使事情变得不言而喻。

简而言之,如果您缺乏维护人员期望在您查看他们的代码时所掌握的任何技能,那么您可能正在挖掘远远超出您的薪水等级的东西。首先要熟悉概念-什么是MVC模型?什么是依赖注入?等,然后潜水。


1
尽管如果您查看邮件列表,则每当有人遇到问题或希望更改某些内容时,Linux内核都会对该体系结构进行广泛的讨论。也有很多关于它的文档-尽管不在内核源代码树中。
edA-qa mort-ora-y

17

大多数成功的开源项目之所以成功,是因为该程序首先是令人印象深刻的,或者做了当时其他程序无法做的事情。这不一定意味着源文件已被很好地记录下来,因为开始项目的程序员从一开始就非常了解代码,因此不需要它。不幸的是,开放源代码项目不一定要有充分的文档记录。它要么必须是一个好的程序,要么是一个平庸的程序,但是要有充分的文档证明,以便程序员对此表示兴趣。


在我公司中,要求开发人员在提供批准之前在项目上编写任何代码,必须提供详细的设计文档。对于开源项目,此过程是否异常?
TomCaps 2011年

5
@TomCaps我认为这么少的FOSS项目拥有大量文档的最大原因很简单:如果您编写了一个小程序来解决的需求,那么很可能由于您的开发人员也不需要文档,您我们将要花费您的时间来改进程序,而不是编写不能保证对任何人​​都有用的文档(如果开发人员从未使用过该项目,那又会怎样呢?)。这不是最佳实践,但是许多FOSS项目的开发人员时间很短。
杰夫·韦林

5
@TomCaps:对于我所知的大多数公司来说,此过程都是不正常的……
Treb 2011年

1
大多数开源项目不是公司。您在想,如果要支付我要建设的项目,且有期限和预算,会发生什么情况。如果您有一堆人编码来满足他们的需求或满足他们的娱乐需求,并且没有预算或客户,那么您就没有这些东西。
Elin 2014年

1
@TomCaps-编写开源软件的任何人都可以做自己喜欢的事情。一些项目(例如Apache系列)对提交代码的任何人都有规则和准则,有时其中包括重复标准等。我也会质疑“详细设计文档”的价值,因为这总是将您锁定在物理设计中(我的个人经验)通常不是最佳选择。该程序应该执行的“详细操作”的详细说明使开发人员可以自由地优化实现并将创新策略应用于解决方案。
James Anderson

12

由于开放源代码开发人员通常都很有才华,并且还选择其专业领域中的项目,因此他们的头骨里已经有了“文档”。毫不夸张地说,只有在您缺少以下任何一项时,才需要完整的文档:o)

老实说,面对未知的代码库时,我不会真正阅读“文档”。快速介绍,也许是一些概念草图,然后直接进入代码!实验,尝试一些小的更改。非常适合精心设计的代码。如果我面对可怕的混乱局面,那么学习它们的最佳方法是一点一点地重构以提高清晰度(最好在单元测试的帮助下)。

另一个原因可能是这些项目的纯有机设计根源。因此,在开发人员的心目中,架构是一种进化的愿景,而不是陈述的“有证件”实体。


8

这样的文档经常不存在的原因很简单:程序员喜欢编程,而不是编写文档。尤其是在开源项目中,开发人员经常在他们的自由/休闲时间里贡献力量。

基本上,编写文档没什么好玩的。而且,如果他们没有为此得到报酬,谁愿意花费自己的空闲时间做一些没意思的事情?


一些大型的开放源代码项目(GCC,Linux内核,Firefox,Qt等)的大部分(或很大一部分)贡献者都为项目工作(全职或半职)付费。因此,即使使用免费软件付费,他们也不会写太多文档
Basile Starynkevitch 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.