此文乃Apache Maven项目、Plexus IoC框架、Apache Velocity项目的创始人,他还帮助设立了收到广泛尊敬的开源社区项目孵化器设施Codehaus。他目前的身份是Eclipse Foundation董事、Sonatype的CTO。
今天的软件已不同于过去,这一点已经不是什么秘密。今天的软件往往是基于云的、包含有社会化功能,且随时随地对任何人开放,开源加载在任何类型的设备上。但这些都是表面上地不同,在这些表象底下还有大家看不到的地方,其创建和交付的方式也已经很不一样。
今 天的软件应用大都是由软件组件组装而成,而这些组件基本上都是开源的,且大都出自于开发最终应用以外的组织。一个典型的Java应用有80%属于对公共开 放的开源组件。这一软件创作的新过程允许开发者的行动敏捷了许多,开源持续地交付,只有在必要的情况下才会白手起家撰写代码。对于企业来说,这意味着推向 市场的速度更快、成本更低。
看到Andreessen-Horowitz对程序员的代码共享网站及社交网络GitHub的1亿美元投资,我们就已经知晓协作式、开源化的开发的流行程度。GitHub之类的套件库使得开源开发得以大众化,同时帮助了年轻项目的发展,并培育出了一个相互协作、生机勃勃的大众化社区,以前所未有的速度制造出各种新软件。
GitHub帮助的是软件生产者,也就是那些创建组件的开发者。但是那些组件的消费者—最终利用开源组件开发应用的开发者和组织又该如何呢?一旦代码完成并准备大规模部署,项目团队则会将其完工的产品通过Central Repository来 分发。后者是一个免费、公开、基于云的套件库,可供开发者将自己的软件分发给全球数百万的用户。Central Repository正迅速成为开源组件的好去处,每年会接受到对6万多家组织的超过75亿项请求,组件数超过40万。Central Repository是由Sonatype运营的,其开发的产品和信息服务可以帮助软件开发者更好地使用其所消费的组件。
为什么说软件就像汽车,这又意味着什么?
今天的软件可以快速装配,但是跟汽车制造商的一样,软件也有着一条极为复杂的“供应链”。最终产品(应用)也跟汽车类似有着成千上万个由数百个供应商外包的组件。每一个组件都有自己的生命周期、自己的补丁和功能增强以及自身潜在的风险。
跟汽车一样,一个组件的缺陷会给用用户来严重的问题。最糟糕的情况下,这些问题会导致安全、数据泄漏、稳定性及性能问题,乃至于与知识产权有关的法律行动。
是的,你每天使用的大多数应用,还有那些构成你业务运营的基础的应用,都是由会给你的组织带来风险的组件构成的,不管你信不信,反正我信了。
这里有可能引发的问题可以列举一个简单的例子。最近 Aspect Security利用Central Repository的数据进行了分析,发现在最常用的开源组件中存在着普遍的安全漏洞。
令人遗憾且具有讽刺意味的是,使用这些组件的组织对此竟然毫不知情,甚至在这些组件已经修补了相关漏洞的情况下也是如此。由于任何应用中的组件均有可能源自于许多不同的项目,而且新版本每年都要发布很多次,最终用户想要跟进是很难的。
如何避免这一切?
组件需要像其他企业资产一样加以“管理”。需要进行分析、监控和评估以便确保搭建应用的组件具备最高品质、最低风险。不过这一切在今天可以很容易地实现—组件生命周期管理(CLM)可以帮助开发者选择、使用并监控那些成为自己应用支柱的组件。
CLM通过帮助开发者从一开始就选择最好的组件、在开发过程中监视组件、跟踪新版本、补丁和安全检测把组件的使用流程管理妥当。
在软件开发周期过程中对开源组件的使用进行适当的管理可以保证组件的健壮性、安全性以及版本的更新,让组织可以专注于开发和交付最好的应用。这一切都可以让开发者保持平和的心态,带来更多的创新。也正因为此,它在今天对开发者的意义之大前所未见。