Skip to content

Latest commit

 

History

History
86 lines (86 loc) · 21.3 KB

Open_Souce_Foundation.md

File metadata and controls

86 lines (86 loc) · 21.3 KB

开源基金会

问:什么是开源基金会?

  开源基金会作为管理和推广开源项目的非盈利机构,为开源项目提供基础设施、活动、培训以及法律、商业、技术等服务。特点是:开放性、共享性、分布式、合作性、创新性。
“创建一个伟大的软件是一回事。让它在整个行业中留下印记是另一回事。苹果、Facebook、谷歌、IBM、英特尔、微软、GitHub、Netflix、红帽、Slack和Linux基金会,这些公司和组织的工作对其他人构建什么、如何构建,以及最终由谁来使用它产生了重大影响。”
——SD Times

问:三大基金会概况?

  • (1)Linux基金会(Linux Foundation, LF)
      Linux基金会成立于2000年,该组织致力于围绕开源项目构建可持续的生态系统,以加速技术开发和行业采用,核心目标是支持、促进、保护和标准化Linux和其他开源软件和技术。Linux基金会管理超过100个开源项目,跨越物联网、嵌入式系统、区块链和数据、云、网络、平台、安全和开源项目管理等领域,并拥有CNCF 、LFN 、SODA 等多个子基金会。Linux基金会项目中代码的总价值估计约为160亿美元,且每天都在增长。Linux基金会及其项目在美洲、亚太和欧洲、中东和非洲地区拥有超过1600名企业成员及成千上万的个人会员。
  • (2)Apache基金会(Apache Software Foundation,ASF)
      Apache基金会成立于1999年,ASF的使命是为公众提供软件,并通过为软件项目社区提供服务和支持来做到这一点。ASF目前管理超过350个开源项目(包括300+的顶级项目),涉及大数据、云、搜索和CMS、DevOps和构建管理、物联网和边缘计算、机器和深度学习、服务器、Web框架等领域,还有45个项目正在孵化中,总价值超过200亿美元的Apache开源软件产品完全免费地向公众开放。拥有813名个人成员和分布在六大洲的8000多名提交者(提交者是项目开发社区的成员,他们被授予对Apache项目的写访问权。提交者必须签署一份简短的个人贡献者许可协议ICLA,该协议清楚地定义了知识产权须贡献给ASF的条款)。Apache项目与子项目中,所发行的软件产品都需要遵循Apache许可证(Apache License)。
  • (3)OpenStack基金会(OpenStack Foundation,OSF)
      OpenStack基金会成立于2012年9月,由NASA(美国国家航空航天局)和Rackspace合作研发并发起,目标是通过提供一组共享资源来构建社区、促进协作并支持开源技术的集成,从而服务于开发人员、用户和整个开放基础设施生态系统。OSF专注于云计算平台的操作系统开源,2017年12月开始孵化新的战略重点领域,如容器基础设施、CI/CD和边缘计算,OSF管理的项目及社区有OpenStack、Kata Containers、ZUUL、Ariship、STARLINGX和EDGE COMPUTING GROUP等,其中OpenStack社区目前共有55个官方项目(official OpenStack project)。OpenStack基金会与来自世界187个国家的超过105,000名社区成员一起促进开放基础设施的全球开发、分发和采用。

问:开源基金会组织架构?

image

  • (1)基金会成员
      基金会成员通常采取会员制,会员与股东类似,会员可提名新的候补会员,并可在新的候补会员选举中投一票,亦可在董事会选举中投一票。
      Linux基金会的正式会员分为铂金会员、黄金会员和白银会员、以及无投票权的合作伙伴(Associates),铂金级是最高等级,不同等级的会员须要达到的资格和缴纳的年费也不等,铂金会员的年费高达50万美元,且拥有董事会席位,其中包括AT&T、Google、思科、富士通、日立、华为、IBM、英特尔、微软、NEC、甲骨文、高通、三星、腾讯及VMware等铂金会员。铂金会员、黄金会员和白银会员有权就基金会章程或章程明确要求其投票的事项进行投票。个人通过支付99美元,可以成为个人会员,并可以获得相应的权益,如参加Linux基金会活动或参加认证考试或培训课程等。
      Apache基金会采取的是被称为“Apache方式”的精英管理程序,基金会成员都是以个人的身份加入ASF,通过对基金会项目的持续参与和贡献,为协作开源软件有杰出贡献和价值的个人,都有资格成为ASF的会员。因此,ASF是由它最直接服务的社区,在它的项目中合作的人来管理的。个人被授予会员资格后,可以提名和批准新ASF成员,Apache基金会目前拥有730多名个人会员。
      OpenStack基金会的会员分成铂金会员(Platinum Member)、黄金会员(Gold Member)和个人会员。OpenStack基金会只允许最多8家白金会员资格和24家黄金会员资格,OpenStack的个人会员是免费的,且数量不受限制。
  • (2)基金会董事会
      基金会董事会根据基金会章程全面管理和监督基金会,制定并确保政策。董事会选举出一名主席(董事),并按惯例任命一批执行官员包括副主席、秘书、财务总监等负责具体职能。主要活动包括:
      制定和维持有关基金会的政策或规则及程序;
      对所有提交董事会的决定或事项进行投票;
      审查项目报告,决定基金会项目的进入或关闭,制定新项目的方针和政策;
      确定预算分配的原则和方针,确定年度预算分配的重点;
      提名及选举基金会新成员;
      设立或关闭特定委员会(以解决某一特定事项或支持基金会事务),监督委员会的选举;
      协助创建基金会网站内容,管理社区公告;
      规划和组织基金会活动,推动发展与合作等。
      Linux基金会董事会人数由董事会决议确定,最少为10人,目前由整个IT行业的22名高级领导人组成,铂金会员直接拥有董事会席位(但不超过20个),黄金会员中推选3名或少于黄金会员总数的董事,白银会员推选1名董事。董事任期两年。
      Apache基金会董事会目前由9人组成,由基金会成员之间选举产生,董事会至少每13个月召开一次年度成员大会,选举新董事会和新成员候选人。
      OpenStack基金会的铂金会员在董事会设定8名固定席位不用竞选,在所有黄金会员里需要竞争8名黄金会员席位,由黄金会员们在1天内投票决定,不对社区公开,再由千万个人会员经过1周投票决定的8位个人独立董事席位,构成了24位基金会董事会。
  • (3)技术委员会/TSC/PMC
      技术委员会/TSC/PMC主要负责管理与项目有关的技术事项,董事会不为其任何项目或活动提供技术指导。
      Linux基金会下的项目,拥有各自的管理以及技术指导委员会(TSC);而Linux基金会下子基金会,例如LF网络基金会(LF Networking Foundation,LFN),旗下的项目保留自己的技术指导委员会(Technical Steering Committee,TSC),并由技术咨询委员会(Technical Advisory Council,TAC)统一监管。Linux内核的技术咨询委员会提供了与Linux基金会活动的沟通,并促进与应用程序开发人员、最终用户和Linux公司的双向交互。
      Apache基金会下的项目由项目管理委员会(PMC)直接管理,PMC由董事会决议成立,负责一个或多个项目社区的管理,包括一名主席和多名成员(他们由在这些项目中表现出优点和领导能力的个人组成的)。PMC在许可、品牌、基础设施等方面遵循基金会的政策,使用“Apache方式”独立地管理项目,特别是技术指导,PMC针对新提交者和新PMC成员进行投票,并对软件产品正式发布进行投票。
      OpenStack技术委员会是OpenStack开源项目的管理机构,其职责是管理与OpenStack项目有关的技术事宜。董事会有权批准技术委员会提名的技术委员会主席,除非董事会另有决定,技术委员会不得管理与开放基础设施项目有关的技术事宜。
  • (4)其他工作组
      基金会董事会还可以设一些执行委员会,如法律委员会或其他工作小组(统称“委员会”),在其职权范围内行使董事会的权力,委员会向董事会报告工作。
      Linux基金会董事会可以随时任命董事会认为必要或适当的委员会,以开展业务,实现基金会的目标。Linux基金会下的项目通常还设有营销咨询委员会(MAC),法律委员会、财务委员会等协助进行日常管理。
      Apache基金会董事会有两个执行委员会包括法律委员会和安全小组。董事会还任命一些官员(corporate officers)在特定领域(法律、品牌、筹资、营销、基础设施等)制定和执行基金会的政策。
      OpenStack董事会可以指定一个或多个委员会,例如用户委员会、法律委员会、薪酬委员会(compensation committee)、咨询委员会等。
  • (5)社区非治理组
      作为一个基于社区的组织,还有许多其他的个人和组织团体为基金会项目提供有价值的工作和服务,但不属于基金会治理组织。包括赞助商、服务供应商(如会计、宽带服务)、开源软件用户、开源软件贡献者、其他合约商或员工等(如建设/维护基础设施)。

问:开源项目的孵化与进入?

  任何人都可以在Internet上发布项目的源代码,但是要构建一个可持续的项目社区,仅靠代码是不够的,而基金会就扮演了“社区看门人”的角色。(Apache基金会在项目孵化和进入方面的政策和管理流程比较详细全面的,Linux和OpenStack基金会在这方面找到的资料比较少,提出了一些必要条件,但流程不是很清晰。)

  • (1)Linux基金会
      Linux基金会提供两种方式来支持协助开源项目:①Core Support Programs,在Linux基金会托管的项目都可以利用Core Support Programs(包括中立的资产所有权,开放治理模式,明确的知识产权条款,提供反垄断、商标、行为准则等基础政策,实体管理、社区工具、参与社区活动)② Collaboration Support Programs,基金会将专注于选择具有可持续生态系统的项目作为LF协作项目,可以通过Collaboration Support Programs来实现更高效、更有效和更透明的协作(包括行政支持、领导和社区管理支持、市场及沟通支持、IT和发布工程支持、社区活动的支持、培训支持、资金支持)。
    1)在LF托管一个项目
      Linux基金会提供了一个平台CommunityBridge ,旨在支持维护人员、贡献者、有抱负的开发人员以及创建和依赖开源软件的组织,可以为开源项目提供资金、安全以及人员三项关键资源,促进开源社区的规模和多样性,推进开源可持续发展。CommunityBridge对公众开放,任何人都可以在平台上查看开源项目列表,申请以导师或学员的身份参与,或向某个项目捐赠资金;那些有影响力的开源项目的维护者可以通过平台开展众筹活动或导师项目。项目维护者可以向CommunityBridge免费申请托管项目,Linux基金会审查批准后,即可在平台上托管一个或多个开源项目。CommunityBridge平台上的项目,有些由LF管理(LF项目),而另一些项目则不是。
      审查条件包括但不限于:①项目是一个开源项目;②项目在社区广泛使用;③与Linux基金会支持开源项目的宗旨是一致的。
    2)申请成为Linux基金会的协作项目(LF项目)的流程
    ①确保接受Linux基金会的核心要求。包括:项目遵循开放、透明的治理模式;任何商标、Git repo账户或共同资产均应由Linux基金会拥有;确保项目在开放的许可证和IP模式下;至少有一名Linux基金会成员赞助了这个项目。
    ②与Linux基金会联系,讨论项目的使命和范围,包括已拥有或想要吸引的社区的任何背景。
    ③考虑建立项目社区,并说明谁已经加入了?基金会的1600多家会员公司和组织中是否有可能有兴趣参与?
    ④与财务总监共同起草项目治理文件。
    ⑤设计一个公告,说明项目迁移到Linux基金会。
  • (2)Apache基金会
      一个项目要进入Apache基金会,须要按照基金会的要求进行“孵化”的过程。Apache孵化器就是为那些想要进入Apache基金会的项目提供服务的,孵化一般需要一年半的时间,满足一系列质量要求之后方可毕业,通过孵化毕业的项目要么成为顶级的ASF项目(TLPs),要么成为其他顶级项目的子项目。顶级项目是成熟的ASF项目,每个项目由自己的PMC管理,并向ASF董事会报告。
      Apache孵化器创建于2002年,主要帮助那些项目(称为“podlings”)遵循和采用Apache的治理和操作方式,孵化器为每一个项目委派几名导师,与ASF的各个团队(孵化器PMC、基础设施团队等)保持联系,并指导项目团队使用ASF服务,促进业务的发展和运营。截至2019年11月,Apache孵化器已经孵化了300多个项目,其中200多个项目已经毕业。孵化器PMC(IPMC)负责管理孵化器,并帮助进入孵化器的项目完成孵化过程,任何ASF成员都可以请求加入IPMC而无需投票。每一个孵化项目有一个PPMC(Podling Project Management Committee),它像顶级项目的PMC一样运作,但是需要将一些事情委托给IPMC,比如孵化毕业发布的最终投票,PPMC向IPMC报告。
      孵化器的职责包括:吸收新的孵化项目;指导孵化项目按照Apache的方式管理和发展他们的社区;每月向董事会汇报孵化项目的进展情况;评估已孵化项目的成熟度,将其提升到正式项目/子项目状态,或者将其退出;签署知识产权转让协议。
      进入孵化器的基本条件包括:①可用代码库。经过多年的努力,在经历了几次失败后,基金会逐渐认识到,如果没有一个初始的代码库,通常很难引导一个社区(开发人员难以认识到项目的价值),且在最初设计阶段产生的摩擦可能会使社区分裂。②ASF基金会拥有该项目足够的知识产权。基金会将拥有重新分发和处理项目代码的不可撤销的和永久的权利,而不用担心被锁定为项目的用户,同时仍然允许原作者维持他们的版权。③ASF成员或官员的赞助。这个人将作为引路人,为项目指明方向,帮助解决日常细节问题,并与IPMC保持联系。
      项目孵化流程:①确保项目符合“Apache方式”;②找到一名引路人和至少两至三名孵化导师(他们将成为IPMC成员),讨论并准备孵化方案;③与IPMC讨论孵化方案,并根据IPMC的反馈,细化孵化方案;④IPMC对孵化方案在邮件列表进行至少72小时的投票,确定是否进入孵化器;⑤进入孵化器后,建设孵化项目的基础设施(包括邮件列表、网站、代码库等);⑥迁移源码,基于软件授权或贡献者协议(CCLAs),将代码转让给ASF;⑦创建项目社区,邀请新的提交者和PPMC成员;⑧软件版本发布,编写文档并完善发布过程;⑨与孵化导师一起根据ASF成熟度模型评估项目的孵化情况,准备毕业;⑩将现有商标转让给ASF,与IPMC讨论毕业事宜;?由IPMC启动毕业投票,ASF董事会决议设立顶级项目;?将基础设施资源从孵化器中转移;?更新项目状态,表明该项目不再孵化;?成立PMC对项目进行管理。
  • (3)OpenStack基金会
      在一个项目被集成到OpenStack发布版之前,成为孵化项目是必经阶段。在这个阶段里,项目开发人员需要去了解OpenStack的发布节奏、发布流程,以及要成为集成项目还有哪些工作需要完成等内容(创建一个新项目可以参照Project Creators Guide )。同时,也可以尽量寻求与其他项目合作或合并的机会。
      一般来说,这个阶段至少需要持续两个开发周期。在孵化期间,孵化项目都会被移植到OpenStack命名空间和目录中,在第一个开发周期结束时,OpenStack技术委员会会对孵化项目做一个考核,考核的结果如果被证明是足够成熟的,并且已经准备好被集成到OpenStack发布版当中时,就会被选择从孵化期“毕业”成为OpenStack集成项目;在下一个开发周期里,该项目就正式成为集成项目,成为OpenStack家族的正式成员之一。
      OpenStack技术委员会将对项目进行审查,通常需要几个月时间的考察期,主要包括以下内容:
      一是项目的任务和范围必须有明确定义,且与OpenStack的任务一致。例如通过提供云服务,进一步推进“OpenStack任务” ;为OpenStack云运营商提供服务,进一步推进OpenStack任务;为OpenStack提供部署和生命周期管理工具;提供部署OpenStack时使用的打包方法;提供客户端工具,使用户能够与OpenStack交互;或提供集成以使相邻的系统能够与OpenStack互操作等。
      二是项目遵循和采用OpenStack方式(“4个open”)。即①Open Source,项目须使用开源许可证(最好是Apache2.0许可证,因为如果项目想要使用OpenStack商标,这是必要的);项目必须没有库依赖关系,因为库依赖关系会限制项目的分布或部署方式。②Open Community,项目的领导团队须由项目的贡献者推选;且项目要为所有贡献者提供公平开放的协作平台;项目的会议要在IRC公开举行。③Open Development,项目使用OpenStack基础设施(OpenDev )上公共的代码审查;项目拥有核心审查人员,并采用OpenStack基础设施中的测试驱动来进行更改;项目提供了联络人,负责OpenStack跨项目工作的联系;在一定情况下地方,项目与现有项目合作,而不是无偿竞争或重新发明;在适当的情况下,项目采用现有OpenStack项目使用的技术和模式。④Open Design,项目的发展方向将在设计峰会(和/或)公共论坛上讨论;该项目使用openstack-dev ML(OpenStack邮件列表)来讨论问题。
      三是确保项目与OpenStack其他部分的基本互操作性。例如面向用户的API服务应该支持用于服务发现和客户端认证的Keystone。
      四是项目拥有由一个或多个贡献者组成的活跃团队。
      五是项目参与实现由TC指定的任何目标,即OpenStack-wide Goals 中定义的目标。任何没有实现的目标都应该优先考虑,并在项目加入的第一年完成。
      六是该项目满足TC要求的所有项目都要满足的任何政策。例如,项目测试接口。
      一旦项目进入了OpenStack,它可以根据需要创建额外的源代码存储库,无需事先得到TC的批准,只要额外的源代码存储库在已批准的项目任务声明的范围内。然而,最终OpenStack可交付产品的发布是由OpenStack发布管理团队(OpenStack Release Management team)通过OpenStack版本库来处理的。一旦发布生效,项目将在Gerrit ACLs(Gerrit权限控制,Gerrit是一种开源的代码审查软件)中失去创建分支等权利。作为回报,项目的贡献者可以在技术委员会选举中投票。

问:向Linux基金会捐赠项目的流程?

1、确保满足四个条件
(1)开放、透明的项目治理模式
原因:Linux基金会并不会接管或重新安排您的技术方向和愿景(Linux基金会下的项目,拥有各自的管理以及技术指导委员会(TSC)),但Linux基金会须要与项目创始人合作,并共同为其撰写一个开放治理文档,以便让决策人员和决策方式更加透明化。
(2)商标、git账户等社区资产归Linux基金会所有
原因:必须保持所捐赠开源项目的商标、项目网站、域名及托管平台账户所有权的中立性。
(3)开源
原因:遵循开源的知识产权模式,以便贡献者能够在明确的条款下参与进来,不强制使用某种开源许可证。
(4)至少一个Linux基金会会员赞助
2、在网页(https://www.linuxfoundation.org/projects/hosting/)上提交必要的信息,包括姓名、邮箱、公司、职务、联系电话、公司规模、项目名称及描述、是否已公开托管及托管网址、项目的贡献者数量、项目的开源许可证等。
3、内部评审,共同起草项目治理文件
4、发布公告,说明项目迁移到Linux基金会