成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

工程獅自述:我們是怎么做出Chromium M35內(nèi)核瀏覽器的

移動(dòng)開發(fā)
本文來自UC瀏覽器電腦版技術(shù)負(fù)責(zé)人李云,微博@至簡(jiǎn)李云,詳細(xì)敘述了自己和團(tuán)隊(duì)是如何將瀏覽器內(nèi)核從Chromium M32,升級(jí)到Chromium M35的過程,對(duì)相關(guān)技術(shù)感興趣的讀者可以和他交流。

對(duì)于這次內(nèi)核升級(jí),我們花了很大的精力,也有很多感觸。下面簡(jiǎn)單分享一下,希望與同行一起探討。

為什么要基于Chromium做二次開發(fā)?

肯定會(huì)有很多人好奇,為什么國(guó)內(nèi)的雙核瀏覽器都是無一例外地基于 Chromium 開源項(xiàng)目做二次開發(fā)。其實(shí),根本原因在于,以 Google 員工為主的 Chromium 團(tuán)隊(duì)在該項(xiàng)目上做了大量的技術(shù)創(chuàng)新。像 DNS Prefetch、SPDY、QUIC、預(yù)渲染、多進(jìn)程架構(gòu)、PPAPI、v8 JavaScript 引擎等都是很好的技術(shù)創(chuàng)新例子。

二次開發(fā)的策略使得能借助這些技術(shù)創(chuàng)新給用戶帶去更好的上網(wǎng)體驗(yàn),同時(shí)又避免了“重新發(fā)明輪子”這種勞命傷財(cái)之事。

即便如此,我們團(tuán)隊(duì)對(duì)于二次開發(fā)的實(shí)施理念與其他廠商有著明顯的差異。有的廠商只考慮國(guó)內(nèi)市場(chǎng),有的則考慮全球市場(chǎng),所以我們?cè)诙伍_發(fā)時(shí)還需要考慮語言本地化等諸多跨國(guó)因素。

為什么要快速跟進(jìn) Chromium 項(xiàng)目的發(fā)展?

我們團(tuán)隊(duì)將快速跟進(jìn) Chromium 項(xiàng)目的發(fā)展作為重要的技術(shù)開發(fā)戰(zhàn)略。從用戶層面來看,Chromium 每一個(gè)大版本的出現(xiàn)都會(huì)在性能、軟件結(jié)構(gòu)和安全上做優(yōu)化,且會(huì)修復(fù)一些嚴(yán)重影響穩(wěn)定性和安全性的缺陷,快速跟進(jìn)其發(fā)展步伐意味著能讓用戶盡早享用到這些益處。從技術(shù)層面來看,快速跟進(jìn)也有極大的益處,在此列舉四點(diǎn):

***點(diǎn)是能逐步提升軟件的開發(fā)效率。由于 Chromium 項(xiàng)目的規(guī)模非常龐大,因此不斷提升開發(fā)效率是該項(xiàng)目的一個(gè)永恒話題。為此,Chromium 團(tuán)隊(duì)一直致力于改善項(xiàng)目的編譯效率問題。比如,在采用 Chromium M32 的時(shí)期,我們只能用 Visual Studio 2010 進(jìn)行編譯,當(dāng)我們升級(jí)到了 Chromium M35,我們就完全采用 ninja 這一更高效的工具完成編譯工作。

還有,現(xiàn)在我們?nèi)遣捎?gyp 來實(shí)現(xiàn)跨平臺(tái)的工程源文件管理,按 Chromium 團(tuán)隊(duì)的規(guī)劃,今年年底會(huì)用更為高效的 gn 取代它,如果我們不能快速跟進(jìn)就沒有辦法盡早分享這一好處。

第二點(diǎn)是有助于提高解決軟件缺陷的效率。一旦發(fā)現(xiàn) Chromium 的缺陷后,我們除了自己立即著手修復(fù)外,還會(huì)向 Chromium 社區(qū)報(bào)告缺陷,通過與開源社區(qū)協(xié)作的形式加速解決問題。如果內(nèi)核版本不快速跟進(jìn)的話,就會(huì)因?yàn)?Chromium 社區(qū)不理會(huì)老版本中的缺陷而無法獲得他們的協(xié)助。

我們團(tuán)隊(duì)所修復(fù)的一些缺陷會(huì)通過告知解決方案或直接 upstream 的形式提交給 Chromium 開源社區(qū)。這不僅幫助社區(qū)解決了問題,更方便了我們下次的內(nèi)核升級(jí)工作,因?yàn)槿绻粚⑦@些代碼提交到 Chromium 的代碼庫,下次升級(jí)到新版本做代碼合并時(shí)就可能面臨新的沖突點(diǎn)。

第三點(diǎn)有助于持續(xù)優(yōu)化代碼質(zhì)量。Chromium 項(xiàng)目的每個(gè)新版本較前一個(gè)版本的代碼變更量都很大,其中很重要的內(nèi)容是對(duì)代碼質(zhì)量持續(xù)改善。假設(shè)一開始我們的軟件設(shè)計(jì)是基于 Chromium 老版本中的技術(shù)方案的,當(dāng) Chromium 在新版本中對(duì)該技術(shù)方案進(jìn)行了優(yōu)化后,升級(jí)上去就意味著我們得調(diào)整原始設(shè)計(jì)以適應(yīng)新的技術(shù)方案。這就迫使我們跟著 Chromium 的腳步對(duì)自身代碼持續(xù)改善,一定程度上有助于避免“技術(shù)債”高筑。

第四點(diǎn)好處在于,通過快速跟進(jìn)有助于幫助網(wǎng)站的建議者在他們的網(wǎng)站中盡早運(yùn)用上新的技術(shù)。某種程度上這也是幫助推進(jìn)新技術(shù)的普及。

盡管快速跟進(jìn) Chromium 的發(fā)展步伐能帶來諸多好處,但并非每個(gè)廠商都能很好地實(shí)施這一技術(shù)開發(fā)戰(zhàn)略。原因在于,快速跟進(jìn)是需要從技術(shù)層面以出色的軟件設(shè)計(jì)做保障。

比如,我們?cè)?Chromium 的原生代碼中做了超過 3600 處改動(dòng)、增加了超過 2500 個(gè)文件,如果不通過出色的軟件設(shè)計(jì)將這些變更與 Chromium 的原生代碼做很好的解耦的話,那每一次內(nèi)核升級(jí)對(duì)開發(fā)團(tuán)隊(duì)都會(huì)是一次災(zāi)難,因?yàn)楣ぷ髁繉?shí)在是太大了。

Chromium 35 的另一大飛躍是實(shí)現(xiàn)了圖形界面的全面 Aura 化。Aura 是一個(gè)窗口管理框架,用于實(shí)現(xiàn)界面上的像按鈕、滾動(dòng)條和對(duì)話框等界面控件。在沒有 Aura 之前, Chromium 針對(duì)每個(gè)操作系統(tǒng)都做了封裝,然后上層應(yīng)用直接建立在這個(gè)封裝之上去構(gòu)建,以便實(shí)現(xiàn)跨操作系統(tǒng)的功能。

有了 Aura 之后,Aura 被設(shè)計(jì)成跨操作系統(tǒng)的,上面的應(yīng)用轉(zhuǎn)而構(gòu)建于 Aura 之上。更為重要的是 Aura 在軟件設(shè)計(jì)上做了很大的簡(jiǎn)化,且實(shí)現(xiàn)了使用顯卡的 GPU 對(duì)界面進(jìn)行繪制。利用 GPU 進(jìn)行繪制所帶來的好處在于,我們可以在界面上高效地實(shí)現(xiàn)一些更炫的效果。

在快速跟進(jìn) Chromium 項(xiàng)目中我們走過的一些彎路

其實(shí),在從事瀏覽器電腦版的開發(fā)歷程中,我們也走了一些技術(shù)彎路。這些彎路,使我們非??啾频耐A袅艘欢螘r(shí)間,但也讓我們實(shí)現(xiàn)了質(zhì)的突破。在此我想分享幾則:

首先,***的一個(gè)彎路在于忽視 Chromium 的軟件架構(gòu)。結(jié)果使得工程師在修改代碼和增加文件時(shí)很混亂,程序的可維護(hù)性很差。這一痛苦經(jīng)歷讓團(tuán)隊(duì)深刻地認(rèn)識(shí)到維護(hù)清晰的軟件架構(gòu)有多重要。目前整個(gè)團(tuán)隊(duì)在日常工作中都非常重視這一點(diǎn),對(duì)這類問題的敏感度很高。

另一個(gè)彎路體現(xiàn)在我們之前的做事方法上。在進(jìn)行軟件功能開發(fā)時(shí),工程師以前很容易一拿到需求就根據(jù)自己的理解立馬上手開干,以至于做了不少“重新發(fā)明輪子”的事。后來我們發(fā)現(xiàn),開發(fā)新功能所需的不少基礎(chǔ)模塊 Chromium 中已有,于是我們?cè)?UC 瀏覽器電腦版 1.0 版的開發(fā)過程中不斷地將“自己發(fā)明的輪子”給去除,用 Chromium 項(xiàng)目中現(xiàn)成的取而代之。

我們團(tuán)隊(duì)現(xiàn)在養(yǎng)成的習(xí)慣是先看一看 Chromium 中是否存在可復(fù)用的部分,之后再干。這種做事方法表面上看起來慢了,因?yàn)橐〞r(shí)間去學(xué)習(xí)和研究,但長(zhǎng)遠(yuǎn)看來利大于弊,除了通過該方法能不斷加深對(duì) Chromium 項(xiàng)目的熟悉外,所編寫出的代碼更容易升級(jí)至新內(nèi)核。

***我想分享的一個(gè)彎路是軟件設(shè)計(jì)的解耦方法。我們以前所采用的解耦方法一是很難規(guī)范化,二是難以與 Chromium 的新內(nèi)核進(jìn)行合并。現(xiàn)在的解耦方法除了規(guī)范化很容易做到外,使得在合并代碼過程中對(duì)于各沖突點(diǎn)總是存在“明亮的燈塔”在指引。

實(shí)際上,我們所采用的解耦方法很簡(jiǎn)單,用一句話總結(jié)是“無論在 Chromium 之上是增加、調(diào)整或去除功能,我們?cè)诖a層面總是做加法”。這句話不好理解,但我也只能透露到這個(gè)層面。

我的角色轉(zhuǎn)變及對(duì)技術(shù)管理的一些看法

過去的日子,我個(gè)人也在這個(gè)項(xiàng)目上也完成了一些角色轉(zhuǎn)變。我當(dāng)初應(yīng)聘阿里巴巴時(shí),在簡(jiǎn)歷上寫的是希望將來成為互聯(lián)網(wǎng)行業(yè)的技術(shù)專家,當(dāng)時(shí)楊過面試我時(shí)問了一個(gè)問題——“如果需要你做管理怎么辦?”我當(dāng)時(shí)回答說:“只要能更大程度地發(fā)揮自己的作用就會(huì)考慮”。

加入淘寶瀏覽器團(tuán)隊(duì)之初,雖沒有定義我的管理角色,但一開始我就有意識(shí)主動(dòng)承擔(dān)部分技術(shù)管理工作,只是當(dāng)時(shí)給自己的定位是架構(gòu)師。如今,我在團(tuán)隊(duì)中官方地正式承擔(dān)管理責(zé)任,這完全是因?yàn)閳F(tuán)隊(duì)的需要,因?yàn)檫@能從更大層面發(fā)揮我的影響力。

技術(shù)管理工作有不少瑣碎的事,使得工作時(shí)間被更多地碎片化了。在我看來,要做好基層技術(shù)管理工作必須對(duì)技術(shù)細(xì)節(jié)有很好的掌握,否則難以發(fā)揮管理效能。另外,只有了解技術(shù)細(xì)節(jié),才能更好地理解工程師的開發(fā)工作,否則很容易犯那種一談技術(shù)就說“這個(gè)實(shí)現(xiàn)起來很簡(jiǎn)單”的毛病。

對(duì)于我來說,掌握技術(shù)細(xì)節(jié)是了解和欣賞工程師的關(guān)鍵途徑。最近我在做 Chromium M36 的內(nèi)核升級(jí)工作時(shí)碰到一個(gè)問題,在解決它的過程中發(fā)現(xiàn)我們團(tuán)隊(duì)的小盤同學(xué)在之前己解決,而且他實(shí)現(xiàn)的技術(shù)方案極其簡(jiǎn)單,簡(jiǎn)單到只需注釋掉 grit 工具中的一行代碼就實(shí)現(xiàn)了一個(gè)很重要的功能。我一了解這一細(xì)節(jié)后,立馬起身走到他的工位上,告訴他這個(gè)技術(shù)方案真的很精彩!

如果不是因?yàn)槲谊P(guān)注技術(shù)細(xì)節(jié),光從他最終只改了一行代碼就很可能得出“這個(gè)實(shí)現(xiàn)很簡(jiǎn)單”這一結(jié)論,這種片面結(jié)論除了抹殺他在被后可能花了數(shù)小時(shí)研究***方案的努力外,更讓我失去了一次欣賞他的機(jī)會(huì)。

作為一名還算資深的工程師,我深深地知道真正能培養(yǎng)出好工程師的方法不是采用股票、工資就能實(shí)現(xiàn),也不是給他們“打雞血”,而是讓他們?cè)诠ぷ髦畜w會(huì)到成就感、在專業(yè)水準(zhǔn)上不斷有進(jìn)步,從管理層面理解和欣賞他們是非常關(guān)鍵的一環(huán)。正因如此,我在整個(gè)開發(fā)團(tuán)隊(duì)中明確規(guī)定,基層技術(shù)管理者必須在工作中持續(xù)地有技術(shù)貢獻(xiàn)。

做技術(shù)管理***的樂趣在于看到團(tuán)隊(duì)在不斷地進(jìn)步、感受到大家對(duì)自己的信任、聽到自己的理念被他們用于討論問題、看到自己的工作方法在發(fā)揮作用,這種感覺真的很棒、很享受,一點(diǎn)都不比解決技術(shù)難題所帶來的“爽”遜色。當(dāng)然,過程中也會(huì)碰到困難和壓力,但在這種相互欣賞與理解的團(tuán)隊(duì)氛圍中能得到克服。

作為技術(shù)管理者,我認(rèn)為身上最重的擔(dān)子是責(zé)任。我衷心地希望工程師在這個(gè)團(tuán)隊(duì)中能不斷地進(jìn)步,這樣在以后職業(yè)生涯中無論他們?cè)谀囊粋€(gè)團(tuán)隊(duì)都更具競(jìng)爭(zhēng)力。要實(shí)現(xiàn)這樣的目標(biāo),一定需要技術(shù)管理者在工作中不斷地為他們的成長(zhǎng)提供環(huán)境和給予幫助,這也促使我在工作中不斷地有所作為。

本文鏈接:http://www.36kr.com/p/214068.html

責(zé)任編輯:chenqingxiang 來源: 36kr
相關(guān)推薦

2018-12-14 10:30:28

瀏覽器 Chrome 內(nèi)核

2018-12-20 09:11:24

微軟瀏覽器Edge

2018-12-17 11:40:39

2021-10-08 08:20:06

LinuxChromium瀏覽器

2022-02-07 21:49:06

瀏覽器渲染chromium

2015-07-23 10:17:27

瀏覽器內(nèi)核

2010-03-04 09:10:34

Linux Chrom

2020-02-12 17:09:32

程序員疫情分布圖數(shù)據(jù)

2016-10-09 09:49:20

GoogleChrome瀏覽器

2009-04-02 14:01:59

LinuxJSChromium

2012-05-16 10:53:52

Chromium瀏覽器

2021-12-23 12:35:09

DuckDuckGo桌面瀏覽器Chromium

2017-07-20 13:11:46

Code ReviewPR評(píng)審

2015-11-19 19:54:43

2021-02-06 12:25:42

微軟Chromium瀏覽器

2011-08-03 10:15:07

2012-02-21 14:39:04

移動(dòng)瀏覽器天天瀏覽器華為

2021-03-08 06:45:38

微軟Edge瀏覽器

2012-08-28 14:23:35

傲游瀏覽器

2020-08-08 11:49:04

微軟應(yīng)用商店Chromium
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品久久久久一区二区国产 | 亚洲免费视频网站 | 亚洲一区二区三区在线视频 | 欧美日本免费 | 91精品国产综合久久久久 | 国产欧美在线 | 天堂色 | 91精品国产91久久久久青草 | 麻豆av免费观看 | 亚洲国产精选 | 中文字幕在线一区 | 国产精品免费高清 | 欧美2区| 人人玩人人添人人澡欧美 | 国产日韩精品视频 | 久久这里只有精品首页 | 亚洲精品大片 | 四虎永久免费在线 | 国产精品一区二区久久精品爱微奶 | av一级久久| 毛片视频免费观看 | 999国产精品视频免费 | 福利社午夜影院 | 国产一区二区免费 | 国产精品揄拍一区二区 | 国产精品国产三级国产播12软件 | 国产精品久久久久久久久久久久久 | 日本久草| 国产精品一区二区av | 欧美日韩在线观看一区二区三区 | 精品国产乱码久久久久久88av | h视频在线观看免费 | 亚洲最大看片网站 | 国产亚洲一区二区三区 | 久草免费在线视频 | 午夜影院网站 | 五月网婷婷 | 国产精品成人品 | 久久久久一区二区三区 | 羞羞视频在线网站观看 | 欧美一级视频在线观看 |