Wayland 전환이 진행되는 Linux 데스크톱에서 입력 접근성과 Talon Voice, 그리고 그로 인해 배제될 위기에 놓인 한 사용자의 경험을 다룹니다.
이 글은 꽤 오랜 시간에 걸쳐 쓰인 글이다. 지난 4개월 동안 이 글의 초안을 3번이나 4번쯤 썼고, 정말 딱 맞는 말을 찾으려 했다. 이번 초안을 처음 쓴 뒤에도 정말 마무리하기까지 다시 2개월 동안 초안 상태로 남아 있었다. 결국에는, 솔직하게 말하는 것이 가장 좋은 방법이라고 판단했고, 그래서 이렇게 적는다:
Linux 데스크톱이 Wayland 전용 미래로 전환되면서, 내가 의존하는 접근성 소프트웨어가 뒤처진 채 남겨져 나는 내 컴퓨터에서 배제될 것이다.
내가 사용하는 데스크톱 환경인 KDE Plasma는 발표했다 초반 2027년에 시스템에서 X11 지원을 제거하겠다고. 이는 대략 9개월 정도 뒤면, 내가 더 이상 그 데스크톱 환경에서 환영받지 못하게 된다는 뜻이다. 결국 오래된 버전에 매달리거나, 여전히 이를 지원하는 더 틈새적인 환경으로 옮겨가야 한다.
Wayland 데스크톱은 최근 접근성 측면에서 큰 진전을 이루고 있지 않은가? 그런데 접근성에는 절대로 아무도 이야기하지 않는 하위 영역이 하나 있고, 오늘 내가 바로 그 이야기를 하려 한다:
입력 장치.
접근성에 대한 대부분의 논의는 출력 을 가리키며, 시력이 제한된 사용자나 시각장애인을 대상으로 한다. 지난해 Fireborn이 쓴 연속 글은 시각장애인으로서 Linux 데스크톱을 사용하려 할 때 존재하는 무수한 문제를 다루고 있고, 마찬가지로 GNOME은 예를 들어 자사 애플리케이션에서 AccessKit 지원에 집중해 왔는데, 이는 Orca 같은 스크린 리더가 텍스트 음성 변환으로 내용을 렌더링하는 데 도움을 준다.
하지만 접근성은 양방향이며, 사람들이 자신의 시스템에 입력 을 전달하는 데 어려움을 겪는 것 또한 똑같이 타당하다. 내 경우가 바로 그렇다. 지난해 점진적이지만 꾸준한 악화 끝에 나는 Ehlers-Danlos Syndrome 진단을 받았는데, 이는 근골격계 유전 결함으로 몸에 온갖 문제를 일으킨다. 이 글의 더 이른 초안에는 이 희귀하고 자주 오진되는 질환을 진단받고 치료받기까지의 길고 괴로운 과정이 전부 들어 있었지만, 사실 그렇게 중요하지는 않다. 중요한 점은, 적어도 내 경우에는 이 병이 손목의 중요한 작은 근육들을 거의 망가뜨렸다는 것이다. 손가락을 구부려 키보드를 쓰거나 마우스를 움직이게 해 주는 바로 그 근육들 말이다.
과운동성 질환 전문의와 수개월간 집중적인 물리치료를 받은 덕분에, 나는 손의 부분적 사용 능력을 되찾았다. 날에 따라 다르지만, 특수 키보드를 사용하면 몇 시간 정도는 타이핑을 버틸 수 있다.
(덧붙이자면, 내가 조금이라도 사용 능력을 되찾은 것은 거의 기적에 가깝다. 이는 전문의를 만나기 좋은 위치, Massachusetts의 관대한 병가 정책, 그리고 처참하게 망가진 미국 의료 시스템 안에서 내가 가진 부정할 수 없는 특권 덕분이 크다. 나는 영구 장애를 안고 살게 되면서도 그 이유조차 끝내 모르는 세계선이 아주 많다.)
하지만 한꺼번에 시들어 버린 수많은 작은 근육을 다시 키우는 일은 몹시 느리고, 매우 고통스럽고, 아마 완전하지도 않을 것이다. 나는 끝내 완전한 기능을 회복하지 못할 수도 있다. 내가 이뤄낸 진전만으로는 하루 종일 일하기는커녕, 몇 주를 연달아 버티는 것도 어렵다. 나는 삶과 경력을 이어가기 위한 다른 방법이 필요하다.
여기서 Talon Voice가 등장한다.
아마도 존재하는 것 중 가장 절제된 랜딩 페이지 중 하나를 가진 Talon은, 첫인상만으로는 이것이 아마도 지금까지 만들어진 가장 강력한 핸즈프리 입력 시스템이라는 사실을 거의 전달하지 못한다. Talon은 매우 빠르고 정확한 음성-텍스트 변환 ML 모델, 맞춤형 스크립트 언어, 그리고 Python이 조화롭게 함께 작동하는, 깊이 있고 세심하게 설계된 핵심 시스템이다. 이를 통해 사용자는 자신의 애플리케이션과 소통하기 위한 거의 무한히 확장 가능한 핸즈프리 방식을 직접 만들 수 있다. 애플리케이션과 협력해서 동작할 수도 있고… 혹은 그것에 맞서 동작할 수도 있다. (“적대적 접근성”이라는 개념은 꽤 자주 등장한다!)
Talon을 유용하게 만들기 위해 가장 먼저 설치해야 하는 것은 community 스크립트 모음인데, 이건 정말 엄청나다. 여기에는 수만 줄의 코드가 들어 있고, 모두 각자의 필요를 충족하기 위해 개인들이 세심하게 손으로 작성한 뒤, 다른 사람들도 그 작업의 혜택을 누릴 수 있도록 하나로 합쳐 놓은 것이다.
Talon으로 나는 다음과 같은 일을 할 수 있다:
목록은 끝도 없이 이어지지만, 여기서 언급할 것들 중 가장 뛰어난 두 가지 확장은 마지막으로 남겨 두었다:
gaze_ocr는 OCR을 이용해 화면을 직접 제어할 수 있게 해 주는 믿기 어려울 만큼 멋진 확장이다.
OCR 백엔드를 사용하면(Linux에서는 기본 제공되지 않지만, 나는 RapidOCR을 연결할 수 있었다) gaze_ocr는 화면의 내용을 직접 읽어 어떤 객체든 바로 클릭할 수 있게 해 준다. 시선 추적기를 사용하면, 문자 그대로 네가 보고 있는 위치에 따라 화면의 텍스트를 구분해 주기까지 한다.
이건 정말 영상 없이는 충분히 설명할 수가 없으니, 여기 있는 60초짜리 소개 영상을 꼭 보길 강력히 권한다: https://youtu.be/qkFy66WF3bU
간단히 말해 이것만으로도 삶이 정말 멋져진다. 관련 애플리케이션 어느 쪽에서도 통합 작업이 전혀 필요 없다. 그런데도 나는 그것들과 상호작용할 수 있다. 적대적 접근성의 정수다! 나는 이 패키지를 쓸 때마다 마치 공상과학 영화 속에 들어와 있는 것 같다. 하지만 이것조차 내가 쓰는 가장 강력한 확장은 아니다…
정말, 이건 너무 멋지다.
Cursorless를 설명하는 가장 좋은 방법은 영상 시연인데, 메인 웹사이트가 그것을 제공한다. 그런 방식이 취향이 아니라면, Xe Iaso가 몇 년 전에 텍스트 형식의 꽤 훌륭한 시연을 써 두었다.
둘 다 보고 싶지 않은 사람을 위해 아주 짧게 설명하자면, Cursorless는 visual studio code용 확장으로, 소스 코드의 구문 트리를 인식하는 표현을 만든 다음 그 위에 그려진 모자를 통해 토큰을 가리킬 수 있게 한다. 이것을 community 저장소에 내장된, 음성으로 수십 가지 프로그래밍 언어를 작성할 수 있는 지원과 결합하면, 완전히 핸즈프리로 코드를 작성할 수 있는 강력한 수단이 된다!
나는 Vim을 끝내 “이해”하지 못했다. 물론 사용하는 방법은 알지만, 나에게는 잘 “감”이 오지 않았다. 버퍼, 매크로, 그리고 코드베이스를 미친 듯이 돌아다니는 복잡한 액션 같은 고급 시스템도 도무지 와닿지 않았다. 반면 Cursorless는 학습 곡선이 필요하긴 하지만 실제로는 꽤 직관적이다. 예를 들어 내가 이 문장의 시작으로 이동하고 싶다면, “Cursorless” 위의 모자가 분홍색이고 ‘C’ 위에 있다는 것을 보고 이렇게 말한다: “pre pink cap”. Talon의 phonetic alphabet을 사용해 그 문자를 가리키는 것이다.
Cursorless는 다른 어떤 편집기도, 키보드 기반이든 음성 기반이든, 내게 준 적 없는 방식으로 글을 쓰고 코드를 짜게 해 준다. 나는 이것이 너무 좋아서 직장에서 쓰는 소프트웨어를 위해 아예 이것의 맞춤형 구현까지 직접 작성해 왔다.
정말로, Talon 전체가 하는 일이 바로 그것이다. 내 장애에도 불구하고 컴퓨터와 상호작용하게 해 주는 것이 아니라, 진정으로 새롭고 더 강력한 방식으로 상호작용할 수 있게 해 준다. 어떤 의미에서는, 인간 입력 시스템의 최전선에 서 있다는 점이 오히려 고맙기도 하다. 나는 Cursorless를 자랑할 기회가 있으면 절대 놓치지 않는다.
그리고 바로 그것을 Wayland 전용 미래가 내게서 빼앗아 갈 것이다.
Linux 데스크톱 사용자라면, 40년이 넘은 X11 표준에서 벗어나 Wayland로 전환하는 이야기를 적어도 한 번쯤은 들어 봤을 것이다. 중요한 점은 이제 절대로 아무도 그 불타는 쓰레기더미 같은 코드베이스를 건드리고 싶어 하지 않는다는 것이고, Wayland가 FOSS 데스크톱 커뮤니티가 선택한 미래라는 사실이다.
하지만 그들은 중요한 것들을 많이 뒤에 남겨 두었고, 이를 따라잡기 위해 수십 년 동안 허둥대고 있다.
Talon은 가장 기본적인 기능을 수행하기 위해서조차 윈도우 매니저와 컴포지터와의 깊은 통합이 필요하다. 그런데 Wayland는… 그런 동작을 어느 것 하나도 수행할 방법을 전혀 제공하지 않는다.
가장 기본적인 작업, 즉 시스템에 텍스트를 입력하는 일조차, 진정으로 “Wayland다운” 방식으로는 그냥 불가능해 보인다. 지난해 X11의 사실상 표준 입력 자동화 도구인 xdotool의 유지보수자는 이것을 어떻게 해야 할지 조사했고, 혼란만 안고 돌아섰다. 더 고급 API들, 예를 들어 창 관리, 마우스 위치 지정, 클립보드 관리, 화면 읽기 등은 말할 것도 없다… Wayland는 생태계 차원에서 이것들을 전혀 지원하지 않는다.
“GNOME에서는 방법이 있는데 KDE에는 없다”, 또는 “그래, wlroots는 이걸 예전에 구현했다”는 식의 말은 이 문제의 답이 아니다. Linux는 이미 틈새 생태계다. (우리 모두 그렇지 않기를 바라더라도 말이다.) 그런데 여기에 더해 크로스플랫폼 개발자들에게 자신들의 깊게 통합된 시스템에 대해 3개 이상의 서로 다른 컴포지터용 구현을 쓰라고 요구하는 것은 완전히 비합리적이다. (Smithay compositor를 쓰는 Niri는 또 어쩔 것인가?) 아, 그리고 말인데, 그 컴포지터들 중 어느 하나도 당신이 필요로 하는 전체 API 표면을 다 구현하고 있지 않다.
생태계 전체를 위한 진짜 해결책을 향한 진전이 끝없이 부족한 데에 지쳤고, 자신이 제공할 수 없는 Wayland 지원 요청이 끝없이 밀려드는 상황에 시달리던 Talon의 주 개발자이자 유일한 개발자인 Aegis는 선언을 내렸다. 이제 그만. Talon Voice는 공개 릴리스에서 Linux 지원을 전부 제거할 예정이다. X11은 계속 일몰 단계로 접어들고 있고, 사용자들은 시스템이 더 이상 동작할 수 없는 환경으로 전환되고 있으며, 되돌아갈 선택지도 없기 때문이다.
Talon은 무료 등급과 유료 등급으로 나뉘어 있다. 유료 등급은 당분간 X11 지원을 유지할 것이다. 이것은 무료 사용자가 소프트웨어를 설치했다가 작동하지 않는다는 사실에 끝없이 놀라는 부담을 덜기 위한 측면이 더 크다.
이것은 누구에게도 바람직한 결과가 아니다. 그리고 이것은 악의로 내려진 선언이 아니라, 실용적 판단에 따른 것이다. 2027년의 Linux 데스크톱을 지원할 수단이 전혀 없는 이상, 유일하게 가능한 답은… Linux 데스크톱 지원을 제거하는 것뿐이다.
Aegis는 Linux에서 Talon이 사라지는 것을 원치 않는 우리에게 다음을 요청했다:
그런 다음에야 Talon을 위한 새로운 Wayland 백엔드를 고려하겠다고 했다.
커뮤니티로서 우리는 이것에 어떻게 접근해야 할지 고심해 왔고, 그것이 이 글을 쓰는 일이 이토록 어렵고 오래 걸린 이유 중 하나이기도 하다. Wayland라는 생태계는… 사용자가 겪는 문제에, 어떻게 표현해야 할까, 그다지 친절하지 않은 것으로 알려져 있다. 그 길고 긴 사례들의 가장 최근 예시는 xdg-session-management protocol인데, 최초의 pull request부터 완료까지 무려 6년이 걸렸다. 그 다음 사례는 역시 최근 병합된 ext-zones protocol로, 초기 개념을 개발하기 위한 그 이전 수년간의 연구개발은 제외하고도 병합까지 2년이 넘게 걸렸다.
처음 이 글을 쓰기 시작했을 때 나는 이렇게 생각했다. “이건 유지보수자들이 단지 우리의 필요를 모르고 있는 문제처럼 보인다. 아무도 이 문제를 이야기하지 않는다면, 논의조차 되지 않는 문제에 대한 해결책을 구현하는 것은 불가능하다.”
이제는 “아무도 이 이야기를 하지 않는다”는 것이 사실상 자기충족적 예언에 더 가깝다는 생각이 든다. 예비 조사로 나는 메일링 리스트를 아주 많이 읽었는데, 대부분 2년에서 3년 전의 것들이었다. 우리가 겪는 문제를 두고 유지보수자들과 진지하게 접촉하려는 노력이 마지막으로 이루어진 시점이 아마 그때였던 것 같다.
그리고 내가 읽은 내용은 정말 끔찍했다.
내가 읽은 수많은 것들의 가장 극단적인 부분까지 독자들에게 전부 들려주지는 않겠지만, 특히 두 가지 답변이 내 눈에 들어왔다.
이 두 답변과, 이와 비슷한 많은 스레드들, 그리고 wayland-protocols의 전반적 상태를 읽는 일은, 약간의 추가적인 소통만 있으면 된다고 믿었던 나에게 당시에도 지금도 엄청나게 의욕을 꺾는 일이었다. 그것이 내게 말해 주는 것은, Wayland라는 생태계가 우리에게 참여를 요구하면서도, 정작 그 참여를 불가능하게 만들거나(“아, 당신은 accessibility maximalist군요, 그럼 당신 말을 들을 필요 없습니다”) 아니면 상황을 아주 조금이라도 앞으로 밀어 움직이기 위해 여러 해의 전업 노동을 요구한다는 것이다. (지난 5년 동안 작성된 주요 Wayland 프로토콜이라면 무엇이든 보라.)
그래서 이제 나는 이것이 아무도 이 이야기를 하지 않는 이유라고 생각한다. 시도해 봐야 아무 의미가 없어 보이기 때문이다.
Aegis가 뒤에서 이런 종류의 논의를 얼마나 많이 겪었을지 상상도 할 수 없다. 그가 Linux 데스크톱을 희망 없는 일로 보고, 그것을 구할 가능성을 전부 커뮤니티에 넘겨 버린 것도 무리가 아니다.
나도 모르겠다.
이 글의 목적은 내 접근성 필요가 무엇인지, Talon이 어떻게 그 필요를 충족하는지, 그리고 Wayland 전용 미래가 왜 그 필요를 충족하지 못하게 만들지를 분명하게 설명하는 것이었다.
나는 Linux 데스크톱을 사랑하고, 억지로 떠나고 싶지 않다. 나는 내가 아끼는 Plasma DE, 내가 하고 싶은 모든 게임에 대한 지원, 내가 필요한 개발 도구, 새로운 하드웨어 블록을 위한 최첨단 도구, 광고도 없고 형편없는 UI 재설계도 없고 모든 구석에 AI가 주입되지도 않은 깔끔한 경험을 좋아한다.
내가 아직도 이 글을 쓰고 있는 진짜 이유는 아마도 fireborn이 지난해 말했듯이 이것일 것이다: Wayland는 성장하고 있고, 이제 우리는 기여하려고 노력하는 것 외에는 선택지가 없다.
그러니 어쩌면 앞으로 나아갈 방법을 아는 누군가가 정말 어딘가에 있을지도 모른다. 이 글은 그런 사람들에게 닿기를 바라는 마음으로 쓰였다. 우리를 도와줄 수 있는가?
내가 이 기술을 사용하기 시작한 지 6개월이 지난 지금, 나는 이것을 사랑하게 되었다. 물론 전통적인 키보드와 마우스를 그냥 쓸 수 있고 이런 엉뚱한 건강 문제들이 없었다면 더 행복했겠지만, 내가 받은 패를 생각하면(혹은 오히려 패가 없는 셈이지만) 나는 제법 잘 지내 왔다!
인간 입력 장치의 틀 바깥에서 생각해야 했던 경험은 가능성의 폭이 얼마나 넓은지, 그리고 화면의 모든 문자를 스캔하고, 그 문자들 중 내가 눈으로 보고 있는 문자가 무엇인지 추적하고, 1초 안에 그 텍스트를 직접 클릭할 수 있는 머신러닝 모델을 사용할 수 있을 정도로 강력한 현대 컴퓨터가 있는 시대에 키보드와 마우스 패러다임이 얼마나 제한적인지를 깨닫게 해 주었다. 극단적인 예 하나만 들자면 그렇다.
그런 의미에서 나는 HID의 최전선에 서 있다는 점이 고맙다. 그리고 그 최전선에 서기에 참 대단한 시대이기도 하다! 나는 곧 내가 사용하는 특수 키보드인 Svalboard에 대한 글도 하나 더 올릴 예정이다. 이 제품은 불과 3년 전만 해도 존재하지 않았다. Talon은 계속해서 점점 더 좋아지고 있고, 이미 사용할 수 있는 명령이 셀 수 없이 많으며, 그것들로 충분하지 않다면 직접 쉽게 작성할 수도 있다.
이 글을 읽는 누구도 내가 겪는 건강 문제를 안고 살아가게 되지 않기를 바란다. 하지만 동시에, 여러분도 스스로 무엇이 가능한지 한번 들여다보게 되기를 바란다. 세상에는 새롭고 더 나은 방법들이 있다!
다만 그걸 시도하려면… Wayland를 쓰고 있지 않아야 할 뿐이다.