开源的开发经历我的团队也开源过,比如MEF项目,但平心而论,那个并没取得多少收获。我们认为基本的原因是缺少社区的参与。当我们只开放了源码后,并没有努力为之建立一个社区。我深深感到,建立一个社区才是开源项目成功的关键所在。而建立一个社区的关键是开发的过程也要开源地进行。 为不辜负期望,我们同样也会透明我们的开发计划是什么,我们要克服的有那些挑战,以及哪些范围还未完成。我来解释一下这些。 第一步是要停止code bombs,就像之前MEF中投的那些一样。代码炸弹本质上是不定期的公开更新的源代码,它们是系统项目组内部正在完成的代码。由于各种原因,这样做是有问题的。举个例子,公布的时间延迟,大家很难看到同一份代码,这样就很难进行公开的讨论。另一个大问题是历史版本丢失,自动同步让我们同步一致代码,但感觉像reinventing Git.
所以为防止代码炸弹,我们建立我们的开发环境在公开的GitHub 仓库,它是一个领先的系统。这意味着所有的代码修改会立即表现出来。但我们不会:
我们初步计划使用GitHub问题清单功能来跟踪bug。 巧妙的是我们也提供了其它途径,如 UserVoice论坛,微软Connect网站和我们内部的团队协作服务器(Team Foundation Server)。 它们的介绍如下:
在UserVoice和Connect网站上,当我们的团队成员在GitHub上提交了相应的问题后,你可以看到一个关闭UserVoice/Connect上问题的流程。 我们接受贡献是的,我们接受贡献!不过,与任何开源项目一样,我们不会盲目的接受所有的贡献。我们所收到的所有pull请求都会按照下面的标准进行评判:
我们相信通过为外部开发者提供足够的环境,在开源界的开发将会成功。例如,你可以看到我们的代码审查并且阅读内部是如何设计的相关文档。我们将会公布路线图。 贡献者最好提早与我们沟通你的想法。这样的话,我们就可以给你提供一些帮助,比如提供文档或者是针对你的方案进行讨论。我们也会把我们希望大家做的工作发布在GitHub的issues列表上,供大家进行选择。
通常,所有的社区贡献都要通过GitHub的 pull request 模型来完成,也就是说,你首先要fork我们的项目,并在你的分支上进行开发,最后通过pull request将代码提交到主干上。 对代码检视也同样是使用这一模型。
在我们合入你的贡献之前,你还需要签署一份 Contributor License Agreement (CLA)协定。我们目前正在把这个工作工具化,最后的效果可能和Azure CLA过程类似。 构造并运行你自己的分支要玩玩我们的程序或实验你自己做的更改,你需要构建并运行你自己的库版本。我们想要做的尽可能的简单,所以看这里:
只需要Visual Studio 2013用来构建(不用“Dev14”)。将会构建所有得库并运行单元测试。 过去我们我们做的一个更改是强命名,以防止你草率的删除已存项目的二进制文件。通过提供强命名二进制文件的新方法我们已经解决了这个隐忧,我们把新方法叫做开源签名。你可以在我们的开发者指南中找到更多信息。 .NET基金会.NET核心项目是由.NET基金会来进行管理。他将成为推动.NET核心栈不断向前的关键力量。我们还会与Xamarin/Mono项目的Miguel de Icaza进行紧密的合作,来创建一个共享的代码基线,使其发展为一个跨平台实现的.NET核心栈。
今天,只有部分代码库可以在GitHub上访问到:
我们会以下几个领域持续发力:
总结.NET核心栈将在GitHub上完全开放源代码。我们已经对其中的一些库做了一些必须要进行的工程性更改,并在核心框架代码仓库中包含了它们。从现在到生成2015 构建期间,你将看到我们在开放源代码方面所做的工作。欢迎下载源代码!
请多多使用.NET基金会的论坛,让我们知道你们所想! |