企业开源指南:开源开发人员招募
最大限度优化组织中运行开源计划或启动开源项目的实践。这些资源由 Linux 基金会与 TODO Group 合作开发,代表了我们的员工、项目和成员的经验。
经验丰富的开源开发人员供不应求。为了吸引顶尖人才,公司必须付出更多努力,而不仅仅是聘用一个招聘人员或在知名招聘网站上发布广告。
您的开源项目可以成为您最有效的招聘工具之一。本指南介绍了组织如何通过建设开源文化、为开源社区做贡献以及创建开源项目来招募开发人员或培养内部人才。
本指南的撰稿人
- Jeff Oiser-Mixon - 英特尔公司开源社区经理
- Gil Yehuda - Open Source Oath 高级经理
- Guy Martin - Autodesk 开源负责人
- Nithya Ruff - Comcast 开源实践高级经理
- Ian Varley - Salesforce 软件架构师
为何您需要一个招聘策略
开发人员的日益短缺是有据可依的。根据 Cloud Foundry 最新的一份报告所示,仅美国就有 25 万个软件开发人员的职位空缺,还有 50 万个要求高科技技能的职位空缺。同时预计未来十年内开发人员职位空缺数量将达到 100 万。
熟练的开发人员并不短缺,可以满足全球需求:
- 非常同意 18%
- 有点同意 18%
熟练的开发人员已经或即将出现短缺:
- 非常同意 34%
- 有点同意 30%
我的公司在聘请我们所需的熟练开发人员方面没有困难:
- 非常同意 20%
- 有点同意 23%
我的公司很难聘请具备所需技能的开发人员:
- 非常同意 27%
- 有点同意 30%
开源开发人员 —— 即具备重要开源经验的开发人员 —— 是开发人员群体的一部分。由于开源社区的分散式特性,他们经常远程工作,因此开源开发人员的需求也很大,而且甚至更少见。这意味着您正在与全球各地的公司竞争同一批人才。
果不其然,结果就是开源开发人员的薪酬稳步攀升,因为公司间为吸引并留住人才而激烈地竞争。根据最近的一份报告显示,目前开发人员的平均薪酬为 104,425 美元。这份报告还指出,考虑到美国仅有八分之一的高中(13.2%)开设 AP 计算机科学课程,因此开发人员短缺状况在短期内不太可能得到缓解。
熟练的开源开发人员可以要求薪酬溢价。2017 年度开源职业报告的调查显示,89% 的招聘经理表示很难找到具备良好的开源技能与专业知识的人才。该报告还发现,60% 的招聘经理在寻求聘用开源人才,同时还有一半的招聘经理在寻找拥有资格证书的候选人。
这意味着在可预见的未来,开源开发人员的薪酬可能会继续因竞争需求的驱动而不断攀升。
“有一个关于工程师的神话,那就是他们不太在乎金钱。他们在乎的是工作于酷炫的高科技领域;他们在乎的是学习与成长。这些都是真的,但让我们实际一点吧,如果您想吸纳人才,您还是需要建立经济激励。如果您不给予人们丰厚的薪酬, 他们将不会想要去您的公司工作。”
Camille Fournier – Two Sigma 常务董事兼平台工程负责人, 开源领导者峰会会议文章《经理之路:高科技领导者指导发展与变革的指南》作者
因此,尽管任何开发人员招聘战略的第一步都是足够的经济激励,但这只是招聘的开始。这便是您的开源项目将发挥作用之处,它可以帮助您招募各种技能层次水平的开源开发人员。
填补人才储备对于达成您的开源目标、囊括您为您所依赖的开源项目做出战略性贡献的能力,以及发展您自身开源技术与开源社区的能力都非常重要。但为了实现这一点,您需要一个战略、一套流程和目标。
以开源项目作为一种招聘工具
在我们开始深入招聘战略之前,让我们先谈谈为什么开源参与可以成为一种有效的招聘工具,以及它为留住顶尖人才带来的一些挑战(参阅下一节)。
有效的招聘具有能吸引开发人员的入职动机。如果您了解什么会吸引开发人员为您工作,并参与您的开源项目(通常还有开放源代码),您可以用一种吸引他们的方式来构建您的战略。
Camille Fournier 表示,工程师想要三样东西:奖励、尊重和目的。
- 奖励:包括从薪酬到福利和津贴等一切奖励。
- 尊重:这是较不明确但并不是较不真实的,而且这通常针对专业认可。
- 目的:一个非常明显的、具有挑战性的且可衡量的目标。没有它,尊重和认可便无法存在。
“金钱是重要的,但它的功能是作为认可的表现,而不是价值观的表现。这就是为什么对冲基金经理可以在获得 600 万美元的奖金后选择退出,因为他们原本期望的是 800 万美元。这也是为什么来自项目领导者的个人笔记或其在博客中的发言会流传至今。不要误解我的意思,钱还是重要的,但如果我们把它看作是一种认可,我们就能够把它的货币价值与情感价值区分开。“
Jeff Osier-Mixon – 英特尔公司开源社区经理
有趣的是,当公司为开发人员在开源社区的工作支付薪资时,它便满足了上述三方面要求。同时,由于多种原因,公司越来越关注为向上游做贡献的开发人员支付薪资所带来的价值。
在许多开源项目中,雇主致力于作出能够推动他们自身工作与产品发展的具体贡献。如果运行得当,这样的贡献可以让他们的开发者,甚至扩展至雇主,在社区内赢得尊重。开发人员还可以通过做出可靠的贡献来提高他们在社区内的知名度,为他们带来未来去从他们的工作中受益的公司工作的机会。
保有开源项目的挑战然而,仅仅为开发人员提供时间和公司资源来让他们为开源项目和开源社区做贡献也还不足以吸引和留住顶尖人才。雇主必须拥有准备到位的完整战略,并且该战略需要以开源转型为中心——从开源工具与开源文化,到您的整体理念与发展方式。
“我们试图创造一种能够让人才想要参与其中的工作环境。我们的工程师知道,他们工作于一个开源友好的环境中,在这种环境中,他们被支持并被鼓励与和其工作相关的开源社区合作。”
Gil Yehuda – Oath(雅虎+美国在线)开源高级经理
保有开源项目的挑战
开源招聘最大的挑战之一是开源项目超越了公司的边界。首要的是,开发人员为他们的项目工作,但同一项目却可能有不同的雇主,这让开发人员很容易地在雇主间转换。
这说明了为开源做贡献的开发人员的动机。金钱或某个职位并不是他们的最终目标。他们的职业道路是流动的,并且受到一种对于职业发展和自我实现的持续追求的驱动——Fournier 称之为“尊重”,Osier-Mixon 称之为“认可”。
根据最新的开源职业报告,开源开发人员表示,他们工作的最大优势在于有能力参与有趣的项目工作,与一个全球性社区合作以及致力于挑战尖端技术。
这种劳动力流动的特点是在开放环境工作的自然结果。贡献者的工作是非常显而易见的,这不仅是对于项目工作人员而言,对于将他们在 GitHub 上的活动看作其公开简历的潜在雇主而言亦是如此。这对于招聘人员而言是一个优势,而对于雇主而言,这是与之相对立的。
“当人力资源组织和工程组织在招聘时,开源对他们而言,则是一把双刃剑。您希望您的组织人们自由而开放,为开源做贡献,并使自己个人价值得到提升。通常情况下,您会从公司得到的反馈是:如果他们使自己变得如此具有吸引力,他们可能会被挖走。我的回答是——是的,绝对的——这就是为什么拥有让他们想要继续在其中工作的开放文化是如此重要。‘”
Guy Martin – Autodesk(Open@ADSK)开源负责
这种现实会令那些更在意投资回报率的和更加显得结构化的公司感到不安——特别人们考虑到开发人员可以通用。
一种新的招聘哲学
当理解到开源开发人员在多个层面上为您公司的成功做贡献,则很容易接受这个想法。他们代表公司,向您认为对业务战略和产品开发具有战略价值的外部项目做贡献。
吸引并留住开发人员为您的开源项目工作对于贵公司的人员雇用是同样重要的。目标是维护和培养每个项目的商业生态系统,而这一系统恰好存在于公司内外部。
给予人才更高的工资而妨碍他们在开源社区做贡献,这显得弄巧成拙。毕竟,从开源社区招聘人员往往是必要的,因为那是可以为该项目找到经验丰富的开发人员的地方。招聘成功的关键在于支持他们在公司内外部的工作。
“我们确实希望确保世界顶尖贡献者正在为我们的项目做贡献。如果他们为我们工作,那是极好的。如果他们为别人工 作,那也是很好的。因为当我们作为一个项目整体一起工作时,项目的成功就是我们共同的成功。“
Gil Yehuda – Oath(雅虎+美国在线)开源高级经理
这种关于人才获取与留用的观念转变是组织在进行开源转型时所发生的文化转变的一部分。
也许对于雇主而言,最大的惊喜是开源开发人员的独特性,以及他们在单个项目中的公司间的流动,对他们不同的雇主是有益的,如同对开发人员自身一样有益。
“在 Yocto 项目中,多名开发人员和至少两名管理人员曾为不止一家公司的 YP(Yocto项目)工作过。因此,他们倾向于更关注项目对于世界其它地区的价值,而不是制造一种仅对在专有环境中生产它的公司有价值的产品。“
Jeff Osier-Mixon – 英特尔公司开源社区经理
所以最终,是共赢的局面。这是就开源之道,也是开源项目和开发人员的独特价值。
何时招聘与培训
当您的招聘与留用战略同时解决内外部人才的问题时,它对于贵公司及其开发人员来说是最有意义的。但是本指南主要关注招聘开发人员的战略。
不同的公司用不同的方式将开发人员的入职与离职的人员流动纳入其招聘与留用战略当中。例如,一些公司提供更多的培训和项目参与机会,以吸引更多的开发人员,而其他一些公司则更偏向于采用结构较少的方式为开发人员提供支持。
“在Yocto项目中,多名开发人员和至少两名管理人员曾为不止一家公司的 YP(Yocto 项目)工作过。因此,他们倾向于更关注项目对于世界其它地区的价值,而不是制造一种仅对在专有环境中生产它的公司有价值的产品。”
Gil Yehuda – Oath(雅虎+美国在线)开源高级经理
无论您的战略如何,在贵组织中发展开源人才有两种基本方法:招聘和培训。
招聘成熟的开发人员
招聘成熟的开发人员必须是您计划的一部分。任何开发人员要在一个项目中建立关系并获得影响力都需要花费时间。但是在贵公司认为至关重要的项目中,任何影响项目方向的延迟都可能导致雇主内部项目的可用性出现一些严重的问题。
如果您正试图在您聘用的开发人员还未曾贡献,或是没有太大影响力的开源社区中迅速获得影响力,那么聘请一个在该项目中已经十分熟练和有影响力的人可能是您满足应急需求的唯一选择。
“开源领域的专业知识和领导能力有时需要相当长的时间才能在现有公司中实现。您需要将培训融合在一起,并开始与公司的员工合作,着手培养他们这种领导能力。但是,有时刚开始时您必须聘用那些已经是这些社区的领导者的人来引导。“
Guy Martin – Autodesk(Open@ADSK)开源负责
或者,也许您已经在一个关键项目上雇佣了一名顶尖的开发人员,然后他又跳槽到了另一个工作机会,并没有足够的时间培养某人来替代他们的位置。请记住,影响力跟随着个人,而不是他们工作的公司。
经验丰富的开源开发人员还可以帮助开发您的内部开源文化和开源社区领导力。一个聪明的战略定义了您希望从雇用顶尖人才中获得的所有好处,并且包含满足这些要求的策略。
许多招聘经理表示,成功的招聘更多地依靠口碑而不是营销。尽管传统的招聘仍在被使用,但人力资源和招聘团队正在探索传统的开发人员招聘方式以外的途径。最佳的方式包括搜索在 GitHub 上的项目,以及贵公司已使用的项目来寻找和接近那些可能对新机会感兴趣或可以推荐别人的顶尖贡献者。
一旦您确定了在对您很重要的项目社区内部或外部开展工作的优秀的或甚至是良好的开发人员, 请询求他们的意愿合作同事名单,并将这些人员也作为招聘的目标。
培训开源开发人员
公司经常在招募顶尖开源开发人员的努力中感到沮丧,主要是因为能获得的人才很少,而对他们的需求很大。但公司在招募成熟的开源开发人员方面的困难还有其它的原因。例如,一个新参与开源的公司可能吸引力较小。
在不断寻求缓解人才短缺的方法中,雇主转而更倾向在内部发展自己的人才储备。当然,如果您失去了关键开发人员,培训项目对填补技能差距和培养继任计划候选人至关重要。培训对于寻求提升自身开源技能的开发人员来说也是一种额外津贴。
身为项目用户或项目消费者的开发人员是下一代维护人员的合理人选。但是,那些渴望或有兴趣为开源做贡献的开发者,也是您希望花时间培训的对象。培养下一级的开发人员并将他们纳入开源决策制定过程是值得的。
开发人员通过他们对开源项目的技术贡献及其在开源社区的领导地位而受到尊重和认可,但这些并不是他们能够建立威信的唯一地方。
与高知名度的职位和项目的优秀开发人员一起工作也是一个很大的加分项。这样的机会对于那些拥有大量经验丰富的、知名的且富有天赋的工程师的公司来说是一个很大的吸引。
- 非正式的在职培训:与顶尖开发人员一同参与的非正式的在职培训也可以由更正式的项目启动或补充。
- 导师制:导师制是不需要太多额外开销便可建立更多结构的好方法。资深且经验更丰富的开发人员根据需要帮助初级且经验较少的开发人员解决技术问题,并协助培训开源方法和开源文化。
- 学徒培训:学徒培训用在顶尖开发人员的密切监督下的更加有结构的、日常的培训参与来提升培训效果。
为您的企业提升开源发展影响力的 8 个步骤:
- 从对您而言非常重要的开源项目中雇用关键开发人员和维护人员。
- 让为您的产品开发人员花费一定比例的时间为上游做贡献。
- 建立一个导师计划,让资深且更有经验的开发人员指导初级且经验较少的开发人员。
- 为您的开发人员开发并提供技术与开源方法的培训。
- 参与开源活动。让您的开发人员参与其中,并支持他们展示他们的作品。
- 提供合适的IT基础架构,以允许您的开发人员与全球开源社区无障碍地沟通与协作。
- 建立一个内部系统来追踪开发人员的贡献并衡量他们的影响力。
- 在内部,制定贡献计划并聚焦于对多个业务部门/产品线有用的领域。
招募开源开发人员的五大策略
参与开源社区,是您吸引开源开发人员第一件可以做的事,也是最重要的事。这是贵组织在开源社区获得知名度和可信度的方式。
但最有效的招聘战略旨在通过采用开源开发人员所熟悉和期望的工具、实践和文化来实现更完整的开源转型。
“您应将招聘方式集中于有意识地思考如何改变开源社区对贵公司的看法。”
Guy Martin – Autodesk(Open@ADSK)开源负责
“当公司建立开源实践时,他们发出了一个重要的信息,表明了他们对开源非常认真,并且他们希望投资于开源。”
Nithya Ruff – Comcast 开源实践高级经理
展示贵公司自身在开源项目中所做的工作是非常重要的。因为开发人员会将才能投入到感兴趣的项目上,这也是招聘能够吸引他们注意力最有效的方式。
总的来说,这五个关键战略不仅有助于招聘并留住优秀的开发人员,还有助于支持您出于商业战略考虑在开源方面的整体投资。
1. 参与开源项目并发展自身领导力
采取战略方针——瞄准您公司目前与/或即将开展的项目。加入和/或提高在开源项目上当前的参与,使您的公司对于在该领域有着熟练技能和工作经验的开发人员更为显眼和更具吸引力。从这个群体中,招聘人员可以带来完美的相互匹配。
参与符合您未来需求的项目可能会帮助您在为下一个项目获取人才时取得领先。例如,许多公司正在投资云技术、大规模数据分析和机器学习,如果您想吸引那些领域的开发人员,您需要将您的公司定位为一个在目前那些开源生态系统中有意义的参与者。
“您无法把一块石头扔到超过五英尺高的云中而不打中开源中的任何东西。我们必须让公司的开源人才来驱动我们正在努力的事物向前发展。”
Guy Martin – Autodesk(Open@ADSK)开源负责
一个大规模的大数据分析技术就类似这种情况。例如,Hadoop,是大数据革命的核心,由于雅虎对它有了解很多,它之所以问世雅虎起了不小的作用。雅虎现在作为Oath的一部分,以其在其他大规模计算项目中的成就而闻名,同时吸引了有兴趣发展自身大数据技能的开发人员。
公司可以通过将自身建立为一个开源开发人员的理想目的地,来吸引那些寻求提升自身特定技术的开发人员。初创公司,甚至是那些隐形的公司,也可以在公开的开源项目上工作,以确立其信誉和影响力,甚至在他们透露其产品之前吸引人才。开发人员在开源中拥有选择权,因此您需要让贵公司能够吸引人才来申请加入。
参与开源项目需要充分了解社区动态和一些经验。有影响力的开源社区维护人员具备这些技能并能够熟练地应用它们。如果您有能力的话,招募他们将帮助您建立自己的内部开源文化并吸引其他顶尖开发人员。您还想向这些熟练的开发人员学习,同时开发内部指导,以可以帮助您聘请或培训的其他开源开发人员也在开源社区中成功成为具有影响力的人。
“对于那些从来没有真正在开源项目或开源社区工作的人,我们帮助他们理解所有他们不应该做的事情,理解所有法律上和社区会让他们面临麻烦的事情,和他们应该做的事情,比如如何与正在从事同一项目工作但目标略有不同的其他公司的人员合作,以及大致该如何管理外部社区。”
Gil Yehuda – Autodesk(Open@ADSK)开源负责
作为开源的公司参与者,要获得尊重并建立领导地位不能只靠一个人的力量。为了经受住时间的考验,贵公司需要展现出超越一个人的个人热情的真正承诺。您最热情的一位开源领导者可能随时会离开,那么你就必须得从头开始。因此,要将以公司的身份加入并保持参与其中,作为团队的优先任务。
有意义的贡献。这意味着您需要致力于贡献重要的工作,而不仅仅只是跟随脚步。要将员工的开源贡献与他们的工作成果联系起来,而不是仅仅作为一种工作鼓励,这会让您的开发人员专注于工作,同时还要在社区中赢得他们的认可,并吸引更多的开发人员加入贵公司。
好消息是,您的贡献还驱动着开源项目朝着您公司的需求方向发展。这不仅帮助您的开发人员获得知名度并吸引更多人才,还有助于确保您所依赖的开源项目将会支持您未来的技术发展方向。这就是开源的美妙之处。
支付开发人员薪酬,让他们为开源做贡献,留出时间从事开源工作。因为您的成功与项目和开发人员的成功直接相关,所以最好的战略是通过将用于开源贡献的时间作为工作的优先事项来确保成功。时间安排应具体化并指出可用的时间。Guy Martin表示,回想他和Ibrahim Haddad在三星开始创建开源团队的时候,“被戏称为50%的独裁者”,因为他们严格要求开发人员花费50%的有偿工作时间向上游做贡献。是的,这很重要。所以相应地应为它安排时间。
开源您自己的代码,创建小型试点项目,并不断重复成功。为了在制定项目时能够发挥影响力,您必须建立领导力。为了建立领导力,您必须以身作则。您可以通过将您自己的代码开源并创建小型试点项目,并不断重复成功来领导和建立信任。如果您的代码和项目很有趣,它们会吸引开发人员主动地到您的公司。即使您的代码和项目并非真的是传说中的东西,您也可以通过向整个社区证明您的价值来获得追随者。
“如果您是像 Salesforce 这样的公司,那么为何工程师想要为贵公司工作并不总是显而易见的。他们并不使用您的产品, 他们也不一定看您做的东西,但当他们看了您的开源项目后会说‘嘿,看起来这家公司实际上涉及了许多非常纯粹的东西。’ 这在某种程度上是一个让他们看到公司内部正在进行的伟大工程的窗口,否则他们将无法了解。”
Ian Varley – Salesforce 软件架构师
2. 创建一种内部开源文化
工具和实践。开源文化可能会感觉与企业世界格格不入,但构建它的努力并非徒劳。在企业世界中,项目团队通常不会允许其他团队的开发人员贡献代码,因为它可能会破坏他们的开发节奏。开源项目通常更容易接受外部帮助,并管理其代码的两个版本,其中一个更为稳定,另一个对持续的活动开放。如果您可以在内部使您的项目适应开源流程,那么您将能够在严格要求灵活性的外部开源项目中取得成功。
开源开发人员使用的工具也不一样,而且通常需要不同的基础架构或平台。开发一个使开发人员能够没有瓶颈或无障碍地与全球开源社区进行沟通与协作的IT基础架构,是重要的第一步。协作是所有开源项目的核心。
激励和奖励。正如本指南前面提到的那样,开源开发人员被奖励、尊重和目的所驱动。具有竞争力的薪酬将吸引他们加入,但为了留住他们,应确保他们以自己对开源的贡献而获得认可。
这种尊重应该被获得,但一旦实现,它必须始终存在。您需要将其纳入您 的招聘与留用战略。由于口碑是招聘的关键,因此这是一个很好的场所,可以鼓励所有开发人员彼此讨论。
最后但并非最不重要的,正如 Camille Fournier 在她的演讲中所说,“经常出货”。开源开发人员喜欢看到他们作品投入生产,以感受完成某件事情并将其标记完成的快感。建立您的战略和流程, 以使开发人员能有一个目标,并能经常看到自己工作的成效。将具有挑战性的工作与负担较小的工作相结合,以防止他们疲惫,同时使他们保持较高的兴趣度。
3. 参加并支持开源活动
派开发人员出席会议和活动。虽然毫无疑问,好的代码和社区领导力是吸引人才的声誉。但为吸引更多开发人员参与,招聘工作需要在此基础上作出更多努力。通过战略性的社交活动,在会议上发表演讲,在开源项目中与其他人合作,让公司的优秀开发人员吸引更多优秀的开发者加入。
与您培训开发人员在公开环境中编写代码很相似,帮助他们在公开环境中表达自己。他们可以利用这类活动来测试一个想法并宣布一个新的开源项目。他们所遇到的人如果从编写代码的开发人员那里了解项目,这些人将更有可能采用您的项目。这样,您可以吸引未来的贡献者和未来的新员工。
赞助开源活动 和/或 在活动中设立展位。开发人员来参加会议,以了解新的开源发展、有趣的项目和酷炫的公司。既然他们都是听众,您不应该拿起扩音器(大声发表演讲)吗?为活动提供赞助和设立展台是清楚地展示贵公司、展示贵公司对开源社区的支持以及展示为您非常希望招募的人才提供的开发人员工作机会的两种重要方式。
举办一场编程马拉松。从各方面来看,具有挑战性的项目对于技能高超、经验丰富的开源开发人员是最具有吸引力的。编程马拉松是有奖励(现金奖励或可炫耀的荣誉)的有趣的挑战,所以它们是您招聘工作的完美补充。此外,您还可以获得评估他们的第一手工作的额外好处。
4. 将开源纳入职位描述
开源是几乎现在所有技术的核心,因此它应该成为大多数技术职位描述的一部分。告诉预期的候选人,该岗位是否期望他们贡献或管理开源项目。
现今,许多开发人员正在寻求发展自身的开源技能。他们会想要能够给予他们经验或者能够发挥他们已有经验优势的工作。向他们表示您对开源的认真态度,您将会得到能够帮助维护、贡献甚至成为您最重要的项目的提交者的人。如果工作职位有开源的元素,先说清楚。鉴于现今如此多的技术都是以开源为基础的,您的多数技术岗位都应该有一些东西涉及开源。
5. 投资于培训
从内部发展人才。鉴于经验丰富的开源开发人员的日益短缺,您需要投资培训项目以加强和更新内部人才的技能。您还需要使用培训来主动为关键项目的贡献者培养接班人,这样自然减员和人员流动才不会损害您的公司利益。
有多种方法可以用来整合培训项目:举办旨在解决特定开源问题(如许可证合规性、贡献流程和代码编辑器)的会议;开发人员与更有经验的开源开发人员一同工作的学徒培训制度,以及为难办的社区问题提供帮助的导师制。您可以正式或非正式地构建上述方法中的的任何一个。无论用哪种方法,拥有保持到位的持续的培训项目是很重要的。
有关招聘与人才留用战略的其他想法,请参阅本指南的前身,即 2015 年发表的《如何招聘和聘用开源开发人员》。
这些资源是与 TODO(Talk Openly,Develop Openly)组织合作创建的, 该组织是 Linux 基金会中专业的开源网络组织。特别感谢奉献自己的时间和知识来制作这些综合指南的开源项目负责人。参与制作的公司包括 Autodesk、Comcast、Dropbox、Facebook、Google、Intel、Microsoft、Netflix、Oath(Yahoo + AOL)、Red Hat、Salesforce、Samsung 和 VMware。如想了解更多信息,请访问:todogroup.org