About me
Career
- 2014.11~NAVER Whale
- 2009.2~2014.11 LG전자
- 2012~ Chromium contribution
Public speaking
- 브라우저는 VSync 를 어떻게 활용하고 있을까 - DEVIEW 2015
- Unified BeginFrame - BlinkOn4
3.
Contents
0. 백그라운드
1. 웨일브라우저 개발의 시작
2. 첫번째 리베이스
3. 첫번째 회고
4. 리베이스 시간, 조금 더 줄여보자
5. 두번째 리베이스
6. 두번째 회고
7. 앞으로..
0.2 Chromium
오픈소스 웹브라우저 프로젝트
웨일은 오픈소스 Chromium 기반 브라우저
다양한 상용 브라우저의 기반 프로젝트
- Chrome (www.google.co.kr/chrome/)
- Opera (www.opera.com)
- UC 브라우저 (www.ucweb.com)
- 스윙 브라우저 (swing-browser.com)
- MS의 안드로이드 Edge 브라우저 프리뷰(Google Play)
이미지 출처: https://blog.chromium.org/
7.
0.3 리베이스
직접 수정하여사용중인 오픈소스 프로젝트의 버전을 변경하
는 경우,
변경된 버전에 수정 사항을 옮기는 작업
Version A Version B
Changes Changes
수정 사항 적용
1.1 Chromium을 선택
WebKit기반의 자체 엔진으로 브라우저 개발을 시작
했으나
결국 Chromium 기반으로 구현하기로 결정
- 5년간의 네이버 웹엔진 개발/삽질기 그리고... (DEVIEW 2016)
11.
1.2 어떻게 수정할것인가
Chrome layer 를 직접 사용하여 개발
Chromium
WebView(Contents layer)
Browser(Chrome layer)
브라우저의 기능이 구현된 계층
(ex, 탭, 옴니박스, 북마크, 히스토리 등
등)
웹컨텐츠 렌더링을 담당하는 계층
(웹뷰, 멀티 프로세스 렌더링)
12.
1.3 웨일 베타출시
Chrome layer 의 사용으로
짧은 5개월여의 개발기간에 베타 버
전의
웨일 브라우저 출시
13.
1.4 빠르게 발전하는크로미움
베타 출시 때부터 최신 크롬과 큰 버전 차이가 생김
- 웨일은 52
- 크롬은 56
사용자들의 크로미움 버전업 요구
14.
1.5 리베이스 필요
그당시 베타버전이었던 Chromium 58버전으로
리베이스 결정
Chromium
52
Chromium
58
Whale Whale
수정 사항 적용
2.2 Chromium changes
Major6 version update (52 -> 58)
- 152896 files changed
- 7514461 insertions(+)
- 5542626 deletions(-)
- 36주 개발기간(6주 릴리즈)
- 큰 버전 차이로 인해 많은 부분들이 변경 됨
2.4 리베이스 방식
모든개발자가 담당영역 리베이스 동시에 시작
리베이스 방식
- 커밋 리플레이
- 처음과 마지막 버전의 차이 적용
20.
2.5 코드 리팩토링(C++)
Conflict해결을 좀 더 쉽게 하기 위해
- 가드 사용해서 구분함 (#ifdef WHALE_DEV)
Conflict를 줄이기 위해 섞여있는 코드를 구분하고 파일을 분
리
- 상속으로 동작 변경이 가능할 경우, 별도의 파일로 구현
- 소소한 코드 수정 팁
* In-class initialization
* 파일/함수의 중간에 추가코드 삽입
* Alias 사용
4.1 새로운 리베이스방식 시도
개발자 한명이 리베이스를 시도
- 기계적인 리베이스
- 간단한 Conflict 는 직접 해결
- 구현자의 도움이 필요한 부분은 남겨둠
- 2주 정도에 대부분의 코드를 리베이스 함
웨일 신규 기능 구현을 위해 더 이상 진행하지 않았지만,
이 방식으로 좀 더 빠르게 완료할수 있겠다는 가능성을 봄
30.
4.2 리소스 처리
리소스(이미지,문자열, 다국어)의 경우
크로미움의 리소스를 직접 수정하여 웨일의 리소스를 적용
크로미움의 리소스를 건드리지 않고 웨일의 리소스를
적용할 수는 없을까?