해커뉴스(Hacker News)의 'Show HN' 코너에는 개발자들이 주말이나 여가 시간에 만든 소소한 사이드 프로젝트가 꾸준히 올라온다. 대부분은 상업적 야심보다 호기심과 재미에서 출발한다. 앙투안 르클레르(antoineleclair)가 공개한 'Is It Greg?'라는 크롬 확장 프로그램도 그런 부류다. 이 확장은 해커뉴스 페이지에서 특정 인물, 즉 그레그(gregsadetsky)와 관련된 글을 자동으로 찾아내 표시해 준다. 실용성보다는 커뮤니티 내부의 유머 코드에 가까운 프로젝트지만, 그 구현 방식은 브라우저 확장을 만드는 실무자에게 참고할 만한 지점을 담고 있다.
무엇을 하는 도구인가
동작 자체는 단순하다. 이 확장은 해커뉴스에 올라온 제출물 가운데 greg.technology 도메인이나 그 하위 도메인으로 연결되는 링크, 그리고 그레그 본인이 올린 글과 댓글을 찾아낸다. 조건에 맞는 항목에는 그레그의 얼굴이 그려진 작은 주황색 배지가 붙는다. 프런트 페이지를 훑어 그가 제출했거나 그의 사이트로 연결되는 글을 표시하고, 배지에 마우스를 올리면 왜 표시되었는지 이유를 설명해 준다. 페이지에 해당 항목이 하나라도 있으면 화면 오른쪽 아래 구석에 춤추는 그레그 캐릭터가 나타나고, 현재 페이지에 몇 개가 있는지 숫자로 함께 보여준다.
인터랙션에도 나름의 재치가 담겨 있다. 구석의 캐릭터를 클릭하면 화면 곳곳으로 여러 개의 그레그가 흩뿌려지고, 옆에 붙은 주황색 숫자는 그 자체가 버튼이어서 누르면 페이지 안의 다음 항목 위치로 바로 이동한다. 즉 장식과 탐색 기능을 겸하도록 설계된 셈이다. 기능의 무게는 가볍지만, 사용자가 '무엇이 왜 표시되었는가'를 즉시 이해하도록 만든 점은 눈여겨볼 만하다.
가벼움이 곧 설계 철학
기술적으로 이 프로젝트에서 가장 인상적인 부분은 오히려 '없는 것'들이다. 개발자는 별도의 빌드 단계가 없고, 외부 의존성도 없으며, 요구하는 권한 역시 news.ycombinator.com에서 실행되는 것 이상은 없다고 밝히고 있다. 요즘 웹 프런트엔드 프로젝트가 번들러와 트랜스파일러, 수십 개의 패키지 의존성을 기본으로 깔고 시작하는 것과 대비된다. 단일 사이트에서 DOM을 읽어 배지를 붙이는 정도의 작업이라면, 순수 자바스크립트만으로 충분하다는 점을 이 확장은 그대로 보여준다.
권한을 최소화한 대목은 특히 실무적으로 의미가 크다. 크롬 확장은 사용자의 브라우징 데이터에 접근할 수 있는 만큼 권한 남용이 오랜 보안 이슈였고, 광범위한 권한을 요구하는 확장은 스토어 심사에서도 위험 요소로 취급된다. 'Is It Greg?'처럼 하나의 도메인으로 실행 범위를 못 박아두면 공격 표면이 줄고, 사용자 입장에서도 이 도구가 무엇을 할 수 있고 없는지가 명확해진다. 장난 프로젝트지만 권한 최소화 원칙(least privilege)을 자연스럽게 지킨 사례다.
접근성 고려도 빠지지 않았다. 운영체제나 브라우저에서 '동작 줄이기(reduce motion)' 설정을 켜두면 캐릭터는 춤추지 않고 가만히 있으며, 흩뿌려지는 그레그들도 날아다니는 대신 착지한 자리에서 서서히 나타났다 사라진다. 화려한 애니메이션이 핵심 재미인 프로젝트에서조차 사용자의 모션 민감성 설정을 존중하도록 분기 처리를 해둔 것이다. 재미 위주의 개인 프로젝트에서 이런 배려까지 챙기는 경우는 드물다.
실무자가 가져갈 것과 그 한계
분명히 이 확장 자체는 특정 개인을 둘러싼 커뮤니티 농담에서 출발한 도구이며, 그레그와 무관한 대다수 사용자에게 실질적 효용을 주지는 않는다. 범용 도구가 아니라는 점, 그리고 대상이 해커뉴스라는 단일 사이트에 한정된다는 점은 명확한 한계다. 다만 그 안에 담긴 설계 판단들, 즉 빌드리스 구조, 의존성 배제, 실행 도메인 한정, 그리고 접근성 대응은 규모와 상관없이 재사용 가능한 원칙이다. 무언가를 'DOM에 표시해 주는' 소형 브라우저 도구를 만들 때, 프레임워크를 얹기 전에 이 정도로 얇게 시작해도 충분한지 먼저 자문해 볼 만하다. 작고 명확한 도구가 종종 크고 무거운 도구보다 오래 살아남는다는 점을, 이 춤추는 캐릭터가 의외로 진지하게 상기시킨다.