Skip to main content

Maintainer Summit 2022 Recap

· 10 min read

지난달, Electron의 메인테이너 그룹이 캐나다 밴쿠버에서 모여 2023년 및 그 이후의 프로젝트 방향을 논의했다. 4일간의 회의실에서 코어 메인테이너와 초대된 협력자들이 새로운 계획, 유지 관리의 어려움, 프로젝트 전반적인 상태에 대해 이야기를 나눴다.

단체 사진! @groundwater가 촬영.

앞으로도 팀은 정기적이고 빠른 Chromium 업그레이드, 버그 수정, 그리고 모든 사용자를 위해 Electron을 더 안전하고 성능 좋게 만드는 데 전념할 계획이다. 또한 커뮤니티와 공유하고 싶은 몇 가지 흥미로운 프로젝트도 진행 중이다!

혁신적인 새로운 API

Electron 프로젝트에서 합의가 필요한 주요 API 제안은 Request for Comments(RFC) 프로세스를 거친다. 이 과정은 API 작업 그룹 멤버들의 리뷰를 받는다.

올해 우리는 Electron 앱의 새로운 가능성을 열어줄 두 가지 주요 제안을 추진했다. 이 제안들은 아직 실험적이지만, 앞으로 어떤 변화가 예상되는지 미리 살펴보자!

새로운 네이티브 애드온 개선 사항 (C API)

이 제안은 앱 개발자가 Electron의 내부 리소스와 상호작용하는 네이티브 Node 애드온을 직접 작성할 수 있도록 하는 새로운 Electron C API 계층을 설명한다. 이는 Node의 Node-API와 유사한 방식으로 동작한다. 제안된 새로운 API에 대한 더 자세한 정보는 여기에서 확인할 수 있다.

예제: Chromium 리소스를 활용해 앱 성능 강화하기

많은 Electron 앱은 Chromium 내부와 직접 상호작용하기 위해 자체 포크를 유지한다. 이러한 리소스는 일반(수정되지 않은) Electron에서는 접근할 수 없다. C API 계층에서 이러한 리소스를 노출함으로써, 이 코드는 Electron과 함께 네이티브 모듈로 존재할 수 있다. 이는 앱 개발자의 유지보수 부담을 줄이는 데 도움이 된다.

크로미움의 UI 레이어 공개 (Views API)

크롬의 사용자 인터페이스(UI) 중 웹사이트가 아닌 부분, 예를 들어 툴바, 탭, 버튼 등은 Views라는 프레임워크로 구축된다. Views API 제안은 이 프레임워크의 일부를 Electron에서 JavaScript 클래스로 제공하는 것을 목표로 한다. 이를 통해 개발자는 Electron 애플리케이션에 웹 기반이 아닌 UI 엘리먼트를 추가할 수 있게 된다. 이는 앱이 웹 콘텐츠를 임시로 조합해야 하는 상황을 방지할 것이다.

이 새로운 API 세트를 가능하게 하기 위한 기반 작업이 현재 진행 중이다. 가까운 미래에 기대할 수 있는 몇 가지 기능은 다음과 같다.

예제: WebContentsView로 윈도우 모델 리팩토링하기

첫 번째로 계획한 변경 사항은 Chrome의 WebContentsView를 Electron API로 노출시키는 것이다. 이는 기존 BrowserView API를 대체할 예정이다. BrowserView는 이름과 달리 Chromium Views와 무관한 Electron 전용 코드였다. WebContentsView를 노출함으로써 웹 콘텐츠를 표시할 수 있는 재사용 가능한 View 객체를 확보하게 되며, 이를 통해 BrowserWindow 클래스를 순수 JavaScript로 만들고 코드 복잡성을 더욱 줄일 수 있다.

이 변경 사항은 앱 개발자에게 새로운 기능을 크게 제공하지는 않지만, 내부적으로 많은 코드를 제거하는 대규모 리팩토링이다. 이를 통해 Chromium 업그레이드가 간소화되고 주요 버전 간 새로운 버그 발생 위험이 줄어든다.

앱에서 BrowserViews를 사용하는 Electron 개발자라면 걱정하지 말자. 기존 BrowserView 클래스를 WebContentsView에 대한 셰임(shim)으로 만들어 새로운 API로 전환할 수 있는 완충 장치를 제공할 계획이다.

참고: electron/electron#35658

예제: ScrollView를 이용한 스크롤 가능한 웹 콘텐츠

Stack의 개발자들은 Chromium의 ScrollView 컴포넌트를 Electron API에 노출시키는 프로젝트를 진행하고 있다. 이 새로운 API를 사용하면 자식 View 컴포넌트를 가로 또는 세로로 스크롤 가능하게 만들 수 있다.

이 API는 단일 기능을 제공하지만, 팀의 궁극적인 목표는 더 복잡한 비 HTML 인터페이스를 구축할 수 있는 유틸리티 View 컴포넌트 세트를 만드는 것이다.

참여하기

이 API 제안에 관심이 있는 Electron 앱 개발자라면, 지금 바로 참여할 수 있다. 비록 추가 RFC를 받을 준비가 완벽히 되지는 않았지만, 앞으로 더 자세한 내용이 공개될 예정이니 계속 지켜봐 주길 바란다!

Electron Forge v6 안정 버전 출시

Electron 프레임워크가 처음 등장한 이래로, 빌드 도구 생태계는 주로 커뮤니티 주도로 발전해 왔다. 이 과정에서 electron-winstaller, electron-packager, electron-notarize, electron-osx-sign 등과 같은 단일 목적의 작은 패키지들이 많이 등장했다. 이러한 도구들은 잘 작동하지만, 사용자들이 이를 조합해 동작하는 빌드 파이프라인을 구성하는 것은 부담스러운 일이었다.

Electron 개발자들에게 더 친숙한 경험을 제공하기 위해, 우리는 기존의 모든 도구를 단일 인터페이스로 통합한 올인원 솔루션인 Electron Forge를 개발했다. Forge는 2017년부터 개발되어 왔지만, 지난 몇 년 동안 프로젝트가 잠정 중단된 상태였다. 그러나 Electron의 빌드 도구 상태에 대한 커뮤니티 피드백을 바탕으로, 우리는 차세대 안정 버전인 Forge의 주요 버전을 출시하기 위해 열심히 작업했다.

Electron Forge 6은 퍼스트클래스 TypeScript 및 Webpack 지원과 함께, 개발자가 자신만의 플러그인과 설치 프로그램을 만들 수 있도록 확장 가능한 API를 제공한다.

공지 예정: 곧 발표 예정입니다

Forge를 활용해 프로젝트를 구축하거나 Forge의 확장 가능한 서드파티 API를 사용해 템플릿이나 플러그인을 개발하는 데 관심이 있다면, 이번 달 중 예정된 Forge v6 안정판 출시에 대한 공식 발표를 기대해 주세요!

다음은 무엇을 준비하고 있나?

위에서 언급한 내용 외에도, 팀은 항상 앱 개발자와 최종 사용자를 위해 Electron 경험을 개선할 수 있는 다양한 탐구 프로젝트를 고민하고 있다. 업데이터 도구, API 리뷰 프로세스, 그리고 향상된 문서화 작업도 현재 실험 중인 부분이다. 가까운 미래에 더 많은 소식을 전할 수 있기를 기대한다!