我们正在我的工作场所中寻找良好的源代码控制和项目管理解决方案,我建议创建一个GitHub组织和私有存储库。我之所以喜欢GitHub有很多原因,但这并不是关于GitHub的事实(事实上,我的同事们会提出支持竞争平台的观点),而是关于在线存储我们的私有代码。
我试图了解这是否是一个好主意。这显然是有优势的,因为它消除了服务器成本(至少直接),并且使代码搜索(所有内容都在线)更加容易。
但是我们的团队还没有定论,这使我想到我的问题,为了做出这个决定,我们应该考虑什么?
我们正在我的工作场所中寻找良好的源代码控制和项目管理解决方案,我建议创建一个GitHub组织和私有存储库。我之所以喜欢GitHub有很多原因,但这并不是关于GitHub的事实(事实上,我的同事们会提出支持竞争平台的观点),而是关于在线存储我们的私有代码。
我试图了解这是否是一个好主意。这显然是有优势的,因为它消除了服务器成本(至少直接),并且使代码搜索(所有内容都在线)更加容易。
但是我们的团队还没有定论,这使我想到我的问题,为了做出这个决定,我们应该考虑什么?
Answers:
如果您公司的办公室烧毁了,则代码仍在服务器上。
如果您公司的办公室没有烧毁,但是git存储库所在的服务器确实没问题,那么您仍然拥有本地副本。
如果将存储库托管在公司办公大楼中的服务器上(例如使用网络共享驱动器...?),则如果公司办公室烧毁,则两者都会丢失。
当然,您仍然需要照常备份...
随时用“被勒索软件感染”代替“烧钱”。
基本上,可用性提高了。
您必须与托管代码的第三方共享文件。如果您有非常重要的公司机密,则可能不允许这样做。例如,如果您有一个包含来自欧洲公民的个人信息的数据库,则可能不允许您将代码托管在来自美国的第三方上-因为它们会受到美国法律的约束,因此不能依赖于遵守欧盟隐私法。即使这不是法律问题,您也应该注意,第三方可能会受贿而泄露您的私人文件。对于第三方来说,这可能真的很糟糕(巨大的声誉损失),但是这可能会发生。
基本上,保密性下降了。
如果您对交易的机密性可以接受,那么与第三方在线托管私人代码是个好主意。否则,请不要。您可以解释这些折衷方案,以使您的老板做出明智的决定-但您可能会听到“否”的声音。如果您给某人一个决定,那将会发生。如果老板说不,那就是那样。我认为强行说服你的老板不是一个好主意。
显然,这是对提供者的信任以及您对源代码有多重视的问题。
但是,我认为很明显,至少在过去,人们高估了他们的源代码。
用于“业务流程自动化”产品;内部团队会专门为业务需要创建网站和其他软件。该软件对其他人的价值通常非常低。
对于可售软件;它是您所出售的二进制文件,可以在不访问源代码的情况下进行复制和修改。
其次,您还应该考虑是否将代码存储在第三方中是否实际上将您的风险暴露提高到当前水平之上。在许多情况下不会
简而言之,大多数现代企业在日常业务中都会信任各种第三方。甚至对他们而言至关重要的事物。
这个决策过程的一部分可能是一些测试,反复试验。参加一个小型项目,让一些成员尝试一些不同的站点。这应该涵盖团队的可用性,但是还有其他注意事项。
开始完成编码和交付的整个过程。参与此过程的人员越多越好。您不想采用基于某些标准的源代码控制平台,只是让管理人员改变一切。“这种分散的敏捷功能不起作用,因此我们需要所有人从星期一开始,在8-7点从办公室开始工作,好的。”
我并不一定要说您不应该将公司的存储库托管在云中,但是我个人经历了云托管的一些弊端和痛苦。
您的互联网连接速度和可靠性如何?
对我来说,这是最大的考虑因素。例如,我的公司位于一个美丽的乡村地区。尽管我们的内部网速度飞速发展,但我们的内部网速度充其量却是缓慢的,最坏的情况是直立的。
根据您使用的VCS,可以减轻某些痛苦。像Git 这样的分布式版本控制系统还不错,因为您仍然可以在本地工作。如果确实需要与同事共享一些代码,则甚至可以在网络驱动器上启动新的存储库。相比之下,即使使用整个Team工作区,您都无法真正使用Team Foundation进行任何这些操作。
但这仅仅是代码。云托管存储库中不仅有代码,还有很多其他功能。您的工作项(功能/错误列表)如何?您的文档(维基)呢?您的持续集成构建如何?所有这些内容也可能与代码一起托管在云中。如果您的互联网连接中断,如果没有这些东西,您将如何工作?
Gitlab提供了一个免费的内部版本,可能会提供超出团队需求的版本。我强烈建议您进行本地安装。它将大大降低风险。
为了做出这个决定,我们应该考虑什么?
您应该考虑不利因素。我(以及其他人)成功地鼓励我的现任雇主停止在私人github仓库中托管公司的王牌知识产权珠宝。不要误会我的意思。github非常适合开源软件。
对于封闭源代码软件,您是否已经让github.com(或某些替代方案)签署了保密协议(NDA),不将您的源代码发布给全世界?祝你好运!
在我看来,在其他实体与您签署保密协议之前,将其皇冠上的知识产权珠宝泄露给其他实体是完全疯狂的。您计划使用不与客户签署NDA的服务(例如github)。相反,它们以非常长的EULA(最终用户许可协议)的形式提供了模糊的承诺。
Github自己意识到这可能是一个重要的问题,因此,他们提供了Github Enterprise作为一种在自己的服务器上托管源代码(和其他私有内容)的机制。