现在是 2020.06.21 我来聊聊我所关注的 dotnet 的几个大开源项目的活跃以及定位情况。包括 WPF 和 WinForms 和 Xamarin 和 ASP.NET Core 和 Blazor 仓库
没有被点名的仓库不代表不活跃和不重要,只是我精力有限,没有参与开发。没有在局里面,不好评论
现在的各个仓库的分工如下:
- Windows Forms 负责全平台商业化使用,主要是 Windows 和 Linux 系统,同时支持兼容大量诡异的设备。而且开源部分正在疯狂怼功能
- WPF 负责 Windows 平台下的应用开发,支持 Win7 sp1 及以上。注意,如果需要支持 xp 依然需要使用 .NET Framework 4.0 之前版本
- Xamarin 负责移动端,以及 PC 的 MAC 系统的应用开发。兼职负责 Linux 系统的应用支持,通过 GTK 的方式,有多少坑完全取决于想要支持的 Linux 系统,在 Ubuntu 下相对稳定
- Blazor 负责浏览器端的应用开发
- ASP.NET Core 负责服务器后台的应用开发,是当前成熟度最高的项目。竟然成熟度比 WPF 还高,哈哈,原因是 WPF 开小差了6年
关于开源情况如下:
- dotnet runtime 最活跃的项目,用于提供给上面所有仓库,还包括此外的所有 dotnet 项目的运行时和底层库的支持,是整个 dotnet 的基础。有大量的硬件厂商对 dotnet 做特别优化,如 Intel 这个好基友,还有最近炒的比较火的龙芯 也都给了运行时很多支持
- ASP.NET Core 这个仓库现在主要是有 Azure 的小伙伴在维护,作为微软三架马车之一的 Azure 有着雄厚的资金,例如给了整个 GitHub 提供所有仓库免费的构建服务器等,有 Azure 超级可怕数量的超强工程师在不断堆代码。每天都有大量 PR 被创建和合并
- Windows Forms 和 Xamarin 这两个是现在商业化开源应用开发最成熟的两个仓库,每天都有大量的国际上的各个公司的小伙伴在报很多诡异的 Bug 也都有在不断修复以及探索更强大的功能。这两个仓库官方投入比社区投入的比例要少一些
- Blazor 在正式发布 WebAssembly 版本之后进入了疯狂修 Bug 状态,现在属于初步状态,特别适合小伙伴想要了解 WebAssembly 以及一个大型项目维护是如何做的,推荐小伙伴参与进去
- WPF 现在有很多小伙伴将积攒了很多年的 Bug 不断扔到 Issues 上面,因为 WPF 按照 xx 的统计,是被最多使用的框架(和上面 ASP.NET Core 和 WinForms 和 Xamarin 等比)因此任何改动都需要十分小心,牵一发而动全身。现在整个团队都在努力搞自动化测试,只有自动化测试完成之后才有勇气合并来自社区的PR否则就只能合并没有 IL 变更的社区代码了。现在 WPF 开源项目是 Issues 天天打仗,而 PR 合并不多
以上所说官方非仅指微软,而是指 dotnet 官方组织,微软是其中最大的一个参与公司。此外在 ASP.NET Core 项目里面可以看到大量 AWS 的小伙伴在贡献代码,甚至谷歌家的小伙伴也会指手画脚。而 dotnet runtime 项目就比较可怕了,我没怎么去统计各方小伙伴的占比,总体看起来 PR 和 Issues 都上天了,每天都看不过来
我现在主要活跃的是在 WPF 仓库里面,其他项目主要是作为格式化工程师的存在,做做代码格式化和修一下注释而已
回答小伙伴几个问题:
现在这些开源项目是不是意味着可以白嫖
答案:没错,不收钱。动动手就可以将其他公司投入海量开发资金开发的项目收归己有。使用这些项目进行二次开发也好,或者在此框架上开发自己的商业应用也好,都不需要交钱给官方,也不需要为此纳税
我是否可以改改项目名,假装这些项目是我拥有的
答案:不用假装,你可以对外宣称是你的。上面这几个项目都没有限制你更改和分发你的私有版本,任何公司或个人都可以在此基础上魔改然后分发。只有一点是被限制的,不能你申请专利等之后反过来告官方项目侵权以及其他使用这些框架的公司侵权。但是你声明是自主产权,这个没问题(至少比其他改系统图标说是自己研发的要好很多)至少法律上讲没问题,如果你声明之后还能将一些有趣的代码提到官方,那这也是官方鼓励的
参与这些项目开发有什么门槛
答案:会使用谷歌翻译或有道翻译或会阅读和写英文…… 任何小伙伴都能免费注册 GitHub 帐号在这几个开源项目里面发 Issues 讨论和提 PR 添加代码
如果官方拒绝我的代码怎么办
答案:很正常,不是所有的代码都符合官方的思想。但是拒绝代码基本上不是一个人能做的决定,是需要整个团队里面多数开发者同意拒绝之后才会拒绝。也就是不是特别逗比的代码,基本上都会被合并或者改改改之后合并。如果咱真的觉得官方逗比,这么好的逗比的代码都不合并,咱可以另起炉灶,自己玩不带官方。可以自己分发自己的版本,如我想要给自己公司的产品定制 WPF 框架,没问题,我可以发布我自己的版本。如果自己发布的版本做的比官方更好,那么自己的这个项目将会最终取代官方的项目哦
我是否可以对外宣称我的产品受到微软的技术支持
答案:如果没有经过授权,是不可以的…… 就像咱的软件在 Intel 的 CPU 上运行,咱是否可以说这个软件受到 Intel 工程师的技术支持?肯定是不成的啦
我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。
如果在博客看到有任何不懂的,欢迎交流