一、 增强开源管理意识,制定开源管理策略
所谓谋定而后动,在没有开源管理策略的情况下盲目的使用或参与开源,会有很大的风险。一个公司在使用开源软件或者参与开源项目之前,应该提高全员的开源管理意识,并制定相应的开源管理策略,这些策略至少应包括:使用或参与开源的基本原则、对开源软件的管理方法、对使用开源或参与开源过程中可能出现的问题的解决方法或预案等。
制定一套开源管理策略,并在该策略的指导下去使用开源软件,才能更加安全和高效的使用开源软件,让开源为公司带来更大的价值。另一方面,没有一套通用的开源管理策略,每个公司应根据自身的需求和具体情况来制定策略,而且这些策略还需要在具体实践中,根据实际情况进行完善和调整。
二、 及时、有效的发现所使用的开源软件及其风险
清楚的了解您所使用的开源软件,是对开源软件进行管理的前提。了解您所使用的开源软件有两层含义:一是了解您的软件代码中都用到了哪些开源代码;二是了解这些开源代码本身的情况及其可能造成的风险。
很多情况会导致公司无法完全了解其软中究竟引入了哪些开源代码,比如:代码的重用、开发人员随意从网络借鉴来的代码、外来代码、有些开源软件本身嵌套的其它开源代码、有时甚至是人为隐瞒了某些开源代码等等。
要发现这些潜在的隐含的开源代码,需要使用专业的开源代码检查工具对软件代码进行检查。开源代码检测工具的检测精度非常重要,不仅要能够准确的检测出您的软件中使用的整个开源组件,还要能检测出您的软件中使用的具体的开源文件、甚至是开源代码片段。在保证检测精度的前提下,检测的速度也很重要,速度太慢会影响到软件版本的发布和迭代速度。
仅仅了解到使用了哪些开源还不够,还要了解这些开源代码本身是否存在风险,如果使用开源检测工具,检测工具要能够发现这些开源软件的风险,包括许可证合规风险和安全漏洞风险等。对于许可证合规风险,通过开源软件名称及版本等信息,就可以索引到该开源软件的License,通过分析License 是否符合公司的开源管理策略,就能知道是否存在许可证违规风险;对于安全漏洞风险,可以通过开源软件名称、版本等信息,从安全漏洞库(比如NVD)中索引出相应的安全漏洞,安全漏洞通常是由于软件中的部分代码造成的,所以如果能够在代码片段级别识别安全漏洞,而不是仅仅从整个开源组件级别去识别,精确度会更高,也不容易产生误报。
三、 让开源管理成为研发流程的一部分
对大多数软件公司来说,开源审查和管理是一项长期而持续的工作,进行这项工作最有效的方式就是将其融入到日常的研发流程中。在研发的早期就引入开源审查和管理,可以从源头上避免开源带来的风险,减少“返工”所带来的高昂成本。
开源管理通常要借助专业的工具,如何在研发的过程中有效的使用开源管理工具,而又不对研发流程和开发周期造成不良的影响,这是对开源审查和管理工具提出的要求。