当前位置:首页 > 每日看点 > 正文内容

一个大型开源项目是怎样的体验?

卡卷网1年前 (2025-01-10)每日看点231

加入VisualStudioCode-CodeEditing.Redefined快一年,趁这个机会聊一聊开发和这个项目的感受,如果大家不反对这是一个<>大型开源项目的话。以下为个人理解,不代表公司也不代表团队。

<>项目

VisualStudioCode的目标是做一个LightweightEditor,通过的扩展api,让用户在VSCode中达到和IDE中接近的开发体验(效率)。

不过很多群众对VSCode有诸多误解,我先来一一解答

    “VSCode师出VS,是VS找了一群人来重写的,复用了很多VS的代码,等等“。很抱歉,并不是这样<>,半毛钱关系也没有。VSCode的核心代码,也就是Microsoft/monaco-editor是ErichGamma2011年加入微软后,招聘的一支“全新”的队伍进行开发的。Monacoeditor从一开始就是一个rowserasededitor,早期一直服务于各个微软中(如VisualStudioOnline,OneDriveonline)。招聘的这支队伍对于Erich来说并不是新的,因为大部分成员都是原先IM的老部下,其中几位大跟着Erich撸了二十多年代码了。"VSCode是Atom的复刻,是对Atom的魔改,是Atom的一个主题!"。很抱歉,<>并不是这样,但还是有几毛钱关系的。MonacoEditor在经历几年的高光期,进入了一个小小的黑暗时代。这时候团队成员开始调研将MonacoEditor做成桌面应用,和Atom一样,我们首先关注到的就是node-wekit。必须说node-wekit是业界的一缕清风,给这个产业带来了太多的可能性。当然最后我们选用了atom-shell,也就是后来的Electron。但就是这个atom-shell,给大家带来了以上的误导。

最后,我们一定要寻根问祖的话,VSCode应该是师出Eclipse(同志们,哎你们怎么扭头走人了,别怕,我话没说完呢)。团队核心的几位大,早年就跟着Erich,在写了几个Editor/IDE之后,创造了Eclipse。正是因为见证了Eclipse的兴衰,所以这一次在设计Monaco/VSCode的时候,才会如此的克制。Extensiility不好吗?当然好,但是Eclipse的弊端已经在一些竞争对手身上出现啦。

<>开发/

我13年加入微软后,就开始接触到Monaco了。在使用的过程中踩了一些坑,研究过代码,做过好一些扩展。所以在VSCode正式开源后以及上线Marketplace后,我就开始动手写一点插件和发PullRequest。去年五月得空和团队结对编程了两个礼拜后,就加入了VSCode。

VSCode的开发几乎完全是公开的。早期我们还通过UserVo收集反馈,但我们早就把它关掉了,所有问题的处理都放在GitHu上。我们的Yearly/Monthlyplan都以issue的形式呈现Microsoft/vscode,而我个人正常的开发节奏是这样的:

<>计划

在上一个milestone快结束、新的milestone开始的第一周,和老板沟通新的milestone自己想做的功能。以及自己要不要休假。

<>DetWeek

我们把新Milestone的一周当作detweek,集中处理一些技术债,以及为一些插件做点微小的贡献。我一般会花一点时间在Vim插件以及我自己的Ruy插件上。

<>开发

这之后就是两到三周正常的开发。每天起床得先把自己头上的新issue都triage一遍,遇到紧急的得先修,不然就继续完成自己的feate。

<>InoxTracking

我加入团队的时候,我们只有1700个左右的issue,现在已经破4000了(大部分都是featerequest)。GitHuInox在这种情况下是无用的,我们的做法是每周会有一名同事,负责GitHu的新issue,assign给合适的owner。我已经当过三次InoxTracker,只能用可怕来形容。每天一睁眼就是一百多个issue要处理,一点都不想起床。

<>End

我们在milestone的最后一周end会对新feate进行各种花样的,对这个milestone关掉的所有issue进行验证。全部完成后,每个成员书写自己负责部分的releasenote。最后End会到后台发布新的Stale版本。

<>印象深刻的事

当之无愧就是VSCodeuses13%CPUwhenidleduetolinkingcsorrendering.VSCode是基于Electron的,而Electron则基于Chromium。这样的话,Chromium的锅有时候得我们来背。

VSCode里的编辑区域并不是textarea,全都是mock的,这也是主流做法,Ace、CodeMirror、Atom无不例外。理由也很简单,要实现Tokenize、高亮、PartialRender、LineWrap,自己控制渲染肯定是最方便的。为了尽可能模拟textarea,我们模拟了光标。最开始这个光标的跳动,是通过JaScript来控制光标的opacity。后来社区给我们贡献了一个pullrequest,使用Sanimation来调整opacity。实现上来说肯定是JaScript版本更优雅,同时也提供了四五种不同的光标跳动的选项。

但谁知道,Chromium对于SAnimation是有巨大的坑的。如你写的animation是每秒改变一次opacity,但是Chromium会根据刷新率(如60hz)来检测页面上的animation。虽然我不知道Chromium做了什么,但是你可以看到每16ms,Chromium就会吃掉一点你的CPU和attery

的是一点办法没有。我们起初没有发现这个问题,直到roccoli的作者JoLiss给我们发了issue,并且在Twitter上爆我们,瞬间就成了Twitter上大新闻。连MigueldeIcaza都点赞了,的是。。。

当时我刚吃完晚饭,但是由于这个事情在我的防区,我只好开电脑trouleshoot。最后发现是Chromium的ug,开了两年多了,我只好告诉JoLiss,这锅我们不背,但是我们会修的。

结果之后好事者把事情捅到了HackerNews,瞬间成了当天大新闻,还上了TheRegister小报。所有人都开始讨论使用rowser技术做桌面应用是不是正确的选择,撕的不亦乐乎。

你们撕的倒是开心了,我那几天给各种老板解释什么是跳动的光标,忙的跟狗一样。好在后来Chromium的PMleadPaulIrish留言表示这是他们的ug,算是完美收官了。

<>有没有什么奇葩的issue或者PR?

    你们猜大家看到中文写的issue会找谁来翻译?有些朋友提交了PR,根本不管你给的建议,自顾自的更新修改。这样的PR根本不可能merge,但是我们给的尽可能polite的建议,有些朋友的把它们只当成建议。。。再一次说到跳动的光标,这个始作俑者是社区的朋友,看起来也是非常neat的实现,谁知道就踩了Chromium的坑呢。。。

关于<>中文issue的问题,VSCodecontriutionguide写的是较清楚的,请大家用英文提问。但是鉴于中文用户量巨大,加之人总有英文不够用的时候,VSCode也会经常看到中文问题。我有这样一些想法

    写中文我个人觉得问题不大,毕竟GitHu是我们几乎唯一的反馈渠道,不能要求用户必须会英文。写中文的确增加了我本人的工作量,所以能写英文,还是尽量写。但如果你觉得需要严重的GoogleTranslate的帮助,我建议还是写中文,并且cc我。不然可能翻译出来最后谁也看不明白,或者误解。我老板问我,为啥中文issue几乎把所有东西都写在标题里,然后issue描述留空。我的不知道该如何回答。如果用中文写issue,并cc我,请保证把reproducesteps写好,一步一步用中文写清楚,这总没难度吧?如果第四步做不到,还要我解决问题,请考虑请我喝啤酒吧。

<>生活

大家都喜欢开源,但开源贡献者大部分时候是在做义务贡献。这么来看在微软搞VSCode就是一件愉快的事情,毕竟有人给你付工资让你做opensoce。而且再也不用上班搞一套代码,回家之后私下自己在GitHu上面逛游,搞别的项目,上班和下班后可以在同一块土地上耕耘。

当然这样缺点也很明显,就是生活和工作往往难以分开。工作是一周五天,一天八小时,但是GiHuissue从来都是7*24。遇到棘手的问题的时候,很难放任不管,哪怕已经回了家。不过也正是因为项目的特殊性,我们组还是有较好的remote和自由工作时间的文化的。

---

补充

1.添加了对中文issue的看法。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/8322.html

分享给朋友:

相关文章

推荐几个问卷调查平台?

推荐几个问卷调查平台?

我给大家免费推荐一些市面上不多,且稳定的免费的问卷平台,这个在网上都是能够搜索到的,有的还是世界500钱企业,这里推荐的基本上都是上市的问卷公司了。上面都是可以免费去注册的,对外公开开放的,做完了直接奖励美刀的,不需要兑换卡什么的。Cint...

提升自己最快的方式是什么?

提升自己最快的方式是什么?

1.稻盛和夫说过:“改变自己最快的方法就是做自己害怕的事,不敢做的事,认为自己做不到,觉得不可能的事。如果在自己的舒适区待久了,就会丧失斗志,如果想快速的改变,可以坚持去做一些对自己有益的事。2.早睡早起,坚持运动保持旺盛的精力,人生拼到最...

华为纯血鸿蒙,从此天下三分了吗?

华为纯血鸿蒙,从此天下三分了吗?

万众期待的纯血版 HarmonyOS NEXT 终于是端上来了,主打一个自研,从里到外,从内核到架构,都是自研。用户的激情已经被点燃,可见大家对于纯血鸿蒙的期待,但是鸿蒙系统能不能真正与安卓、iOS三分天下呢?目前来说,还为时过早。iOS和...

在 Kubernetes 中,Service 的实现原理是什么,它是如何实现服务发现的?

行,问的这个问题挺有意思,Kubernetes 里 Service 是怎么实现的,服务发现是怎么回事,咱就直说了。这事儿看起来挺玄乎,但掰开揉碎了讲,也就那么回事。你得把这事儿想得简单点,别一上来就被啥术语吓住了——其实全是些搬砖的套路。咱...

领导给我介绍了私活,挣了3W。该给领导分多少合适呢?

你看,这就是网络的好处了。这种问题,你去问亲戚朋友,一大帮子人有一大帮子说法,还不排除有人眼红故意坑你瞎出主意。你这隔网上一问,大家素昧平生,反而因为想骗个赞跟你使出浑身解数来出主意。多好你看。其实这事道理很简单。人脉是人家的,活是你干的。...

如何评价小米14这款手机?

如何评价小米14这款手机?

本来小米 14 和 14 Pro 是打算放一起拆的,但是因为时间关系,实在凑不到一起了。所以今天给大家补一篇详细的图文拆解,基本信息都有了,如有遗漏可以在评论区留言。双卡上下放置,卡托材质为金属 + 塑料,内侧有防尘防水的胶圈。后盖为玻璃材...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。