이번 주 프로젝트: Beaker Browser
이번 주에는 Beaker Browser의 창시자인 Paul Frazee와 이야기를 나눴다. Beaker는 실험적인 피어 투 피어 웹 브라우저로, 사용자의 기기에서 사이트를 호스팅하기 위해 Dat 프로토콜을 사용한다.
Beaker는 무엇이고 왜 만들었는가?
Beaker는 참여형 브라우저다. 독립 개발자를 위한 브라우저이다.
현재의 웹은 폐쇄적이다. 소셜 미디어의 작동 방식을 바꾸고 싶다면 Facebook이나 Twitter에서 일해야 한다. 검색 엔진을 바꾸려면 Google에 들어가야 한다. 사용자보다 기업이 모든 것을 통제한다.
Beaker는 새로운 웹 프로토콜인 Decentralized Archive Transport를 사용한다. "Dat"이라고 부른다. 이 프로토콜은 필요할 때마다 무료로 사이트를 생성하고, 기기에서 직접 공유한다. 서버가 필요 없다. 이것이 우리의 혁신이다.
Beaker에서 Dat 사이트를 방문하면 파일을 다운로드한다. 그 사이트는 영원히 여러분의 것이다. 저장하거나 포크해서 수정한 후, 새로운 버전을 무료로 공유할 수 있다. 모든 것이 오픈소스다.
이것이 Beaker의 핵심이다. 우리는 오픈소스 웹사이트를 위한 브라우저를 만든다. 소셜 해킹을 위한 도구 키트가 되길 바란다.
Beaker를 누가 사용해야 할까?
해커, 모더, 창의적인 사람들, 그리고 뭔가를 직접 만져보고 개조하는 걸 좋아하는 사람들이 적합하다.
Dat을 사용하는 새 프로젝트를 어떻게 만들까?
우리는 bkr라는 커맨드라인 도구를 제공한다. 이 도구는 git과 npm을 합친 것과 비슷하다. 다음은 사이트를 만드는 예제다:
$ cd ~/my-site
$ bkr init
$ echo "Hello, world!" > index.html
$ bkr publish
다음은 사이트를 포크하는 예제다:
$ bkr fork dat://0ff7d4c7644d0aa19914247dc5dbf502d6a02ea89a5145e7b178d57db00504cd/ ~/my-fork
$ cd ~/my-fork
$ echo "My fork has no regard for the previous index.html!" > index.html
$ bkr publish
이렇게 만든 사이트는 브라우저에서 호스팅된다. BitTorrent와 비슷한 방식으로, P2P 메시지를 통해 사이트를 공유한다.
GUI가 필요하다면, 브라우저에 기본적으로 제공되는 도구를 사용할 수 있다. 하지만 우리는 이 도구들을 사용자 영역으로 옮기고 있다. 모든 것이 사용자 앱으로 수정 가능할 것이다.
Beaker를 Electron 기반으로 개발한 이유
이 프로젝트에는 Electron이 가장 적합했다. 만약 Chrome을 직접 포크해서 개발했다면 지금쯤 C++로 코딩하고 있었을 것이다. 아무도 그걸 원하지 않는다. 나는 웹 기술 스택을 잘 알고 있고, 이를 활용하면 빠르게 개발할 수 있다. 이건 명백한 선택이었다.
사실, Electron 없이는 이 모든 걸 해낼 수 있었을지 확신이 없다. Electron은 정말 훌륭한 소프트웨어다.
Beaker를 개발하며 어떤 어려움을 겪었나요?
절반 정도는 도구들을 살펴보면서 어디까지 할 수 있는지 알아내는 과정이었다.
브라우저 자체를 만드는 건 꽤 쉬웠다. Electron은 브라우저를 만드는 도구와 다름없었다. 하지만 브라우저 탭은 오랜 시간이 걸렸다. 결국 SVG를 배우기로 결심했다. 훨씬 더 나아 보이긴 하지만, 제대로 만들기까지 3~4번의 시도가 필요했다.
Electron에서 개선해야 할 부분은 무엇인가?
웹뷰 내부에서 개발자 도구를 도킹할 수 있으면 정말 좋을 것 같다.
Beaker의 미래에는 무엇이 있을까?
Dat 사이트를 위한 보안 DNS 이름이 추가될 예정이다. 또한 "앱 스키마"라고 불리는 사회적으로 구성 가능한 URL 체계가 도입된다. 더불어 다양한 Dat API도 추가될 것이다.
프로젝트에 기여하고 싶은 분들을 위해 Beaker가 도움을 필요로 하는 분야는 무엇인가요?
현재 많은 이슈가 열려 있습니다. 언제든지 저에게 연락해도 좋습니다. Freenode에서 #beakerbrowser 채널을 이용하세요. 기여자 페이지를 운영하고 있으며, 기여하시는 분들을 해당 페이지에 추가할 예정입니다. 또한, 오스틴을 방문하시면 맥주를 사드리겠습니다.
다른 개발자에게 유용할 수 있는 Electron 팁
-
이미 존재하는 빌드 도구를 활용한다. 직접 해결책을 만들려고 고민하지 말고 electron-builder를 사용한다. 보일러플레이트 리포지토리를 활용한다.
-
Electron 리포지토리에 이슈를 올릴 때는 재현하기 쉽도록 최대한 노력한다. 이렇게 하면 더 빠른 응답을 받을 수 있고, 팀도 고마워할 것이다. 더 나아가 직접 문제를 해결해보는 것도 좋다. 내부 구조를 살펴보는 것은 꽤 흥미로운 일이다.
-
모든 가이드와 고급 문서를 최소 한 번은 읽어본다.
-
브라우저를 만들지 않는다. 이미 포화 상태인 시장이다.