우리는 급격한 혁신의 인터넷 시대를 살고 있으며, 새로운 관례가 새로운 행동의 발현시킬 수 있다. 개발자라면 즐길 만한 순간이다!
페디버스(Fediverse)는 액티비티펍(ActivityPub) 및 웹핑거(WebFinger) 등의 프로토콜과 연결되어 있는데, 이들 프로토콜은 이 글의 주제와 관련성이 거의 없다. 필자가 이 시리즈(하단에 목록 표시)에서 구축하고 설명한 대시보드를 지원하는 스팀파이프(Steampipe) 플러그인은 이런 프로토콜을 이해하거나 사용할 필요가 없기 때문이다.
하지만 마스토돈(Mastodon) API는 이해해야 할 필요가 있다. 필자는 대부분 고 SDK 포 마스토돈(Go SDK for Mastodon)을 통해 해당 API를 사용하며, 때로는 REST를 직접 호출한다. 어쨌든, 필자의 읽기 전용 대시보드는 마스토돈 API의 꽤 작은 서브셋을 사용한다. 전체 API는 꽤 광범위하고 심층적이며, API 고객이 온갖 방법으로 마스토돈 서버로부터 읽고 쓸 수 있다. 마스토돈 API 책의 챕터는 앱, 계정, 관리자, 인스턴스, 검색, 상태, 타임라인, 알림, OEM베드이다. 이 챕터들에서 웹 앱, 스마트폰 앱, 네이티브 OS 앱, 스팀파이프 대시보드 등 모든 마스토돈 고객들에 보편적인 것을 정의한다.
필자는 지금까지의 글에서 API 기반 인터옵(Interop)에 집중하기 위해 프로토콜 기반 인터옵(protocol-enabled interop)을 무시했었다. 페디버스에는 마스토돈 외에 많은 것들이 포함되어 있다. 향후 때가 되면 북웜(BookWrym), 프렌디카(Friendica), 펑크웨일(Funkwhale), 레미(Lemmy), 타카헤(takahe), 피어튜브(PeerTube), 픽셀페드(Pixelfed) 등을 살펴볼 생각이다. 하지만 지금은 마스토돈 생태계만으로도 머릿속이 복잡해진다.
예를 들어, 마스토돈을 위한 새로운 웹 클라이언트인 elk.zone이 있다. 최근 목록 지원이 추가되면서 필자가 마스토돈 영역과 상호작용할 때 선호하는 수단이 되었다. 그래서 필자는 스팀파이프 대시보드에서 엘크(Elk)로 클릭해 이동할 수 있고 이를 배터리가 포함된 마스토돈 웹 앱의 대안으로 사용하고 싶어질 수밖에 없었다.
이런 통합을 쉽게 지원할 수 있었다. 액티비티펍 때문이 아니며 API 덕분도 아니다. 계정 URL 및 투트(Toot) URL을 위한 공통 패턴인 인터옵의 3번째 레벨 덕분에 작동한다.
Mastodon.radio에서 간판을 걸고 있는 와드 커닝햄(Ward Cunningham)의 계정 URL은 https://mastodon.radio/@k9ox이다. 하지만 인스턴스 적격 마스토돈 URL에서 보았듯이 해당 URL을 직접 방문하면(홈 서버가 아닌 경우) 와드를 팔로우하거나 목록에 추가할 수 없다. 해당 URL을 복사하여 홈 서버의 검색 상자에 붙여 넣고 검색을 실행하면 도착하는 인스턴스 적격 URL(https://mastodon.social/@k9ox@mastodon.radio)에서 그를 팔로우하거나 목록에 추가할 수 있다. fosstodon.org가 홈인 경우 https://fosstodon.org/@k9ox@mastodon.radio가 될 것이다.
mastodon.radio에 있는 와드의 투트(Ward’s toots) 중 하나는 https://mastodon.radio/@k9ox/109802968820955379이다. 답신하거나 부스팅(Boosting)하거나 즐겨찾기 하고 싶은 경우 거기에서는 불가능하다. 필요한 URL은 홈 서버를 통해 라우팅하는 URL(https://mastodon.social/@k9ox@mastodon.radio/109802969999396562)이다. 같은 투트라도 ID가 다르다! 이런 차이점 때문에 필자와 다른 사람들도 놀랐으며, 이 주제는 다른 글에서 다룰 것이다. 이 2가지 패턴이 우리가 기본 웹 클라이언트를 사용하여 마스토돈 영역에서 서버 경계를 넘어갈 때 우리가 상호작용하는 방식을 관장한다.
필자가 엘크를 사용하기 시작했을 때, 또 다른 패턴 계층이 등장했다. 엘크에 있는 동일한 URL은 다음과 같다.
https://elk.zone/mastodon.social/@k9ox@mastodon.radio
https://elk.zone/mastodon.social/@k9ox@mastodon.radio/109802969999396562
결국, 필자는 스팀파이프 플러그인의 전환 기능 2개가 elk.zone을 인스턴스 적격 URL인 것처럼 만든 후 구성 옵션을 추가하는 등의 작업을 수행해야 한다. 이제 답신 또는 부스팅 또는 팔로우 또는 목록 등록을 위해 대시보드에서 마스토돈 링크를 방문하면 필자가 선호하는 엘크 경험을 얻게 된다.
액티비티펍과 웹핑거(WebFinger)는 공식적인 표준이다. 마스토돈 API가 실질적인 표준이라 할 수 있다. 하지만 이런 추가 조작은 관례에 불과하다. 다른 웹 클라이언트와 호환된다는 보장이 없으며, 기본 마스토돈 클라이언트가 제시하는 모든 URL과 호환된다는 보장도 없다. 필자는 상관없다. 관례는 매우 유용하다. 트위터(Twitter) 해시태그는 하나의 관례에 불과하며, 어쨌든 IRC 관례에서 영감을 얻은 것이다.
우리는 급격한 혁신의 인터넷 시대를 살고 있으며, 새로운 관례가 새로운 행동의 발현시킬 수 있다. 심지어 스팀파이프 대시보드가 엘크를 지원하는지도 몰랐다. 몇 시간 후 필자는 가능할지도 모른다고 생각했으며, 실제로 그랬다.
이전에도 이런 것을 본 적이 있다. 특히 브라우저가 RSS 피드를 자동으로 발견할 수 있도록 블로고소피어(bologosophere)가 <link rel=”alternate” type=”application/rss+xml” href=”{feedUrl}”>를 도입했던 사례가 있다. 약 20년 전에 이런 일이 발생했으며, 갑자기 일련의 선도적 블로그 작성 도구가 며칠만에 해당 관례를 도입했다. 그 시대는 정말로 재미있었다. 그 재미를 놓쳤다면 지금 펼쳐지고 있는 속편을 즐기자!
이번 시리즈 과거 글 목록(영문)
1. Autonomy, packet size, friction, fanout, and velocity
2. Build a Mastodon dashboard with Steampipe
3. Browsing the fediverse
4. A Bloomberg terminal for Mastodon
5. Create your own Mastodon UX
6. Lists and people on Mastodon
7. How many people in my Mastodon feed also tweeted today?
8. Instance-qualified Mastodon URLs
9. Mastodon relationship graphs
10. Working with Mastodon lists
11. Images considered harmful (sometimes)
12. Mapping the wider fediverse
* Jon Udell은 과거 인포월드의 ‘블로거 대장’이었다. 지금은 스팀파이프,io의 커뮤니티 리드다. dl-ciokorea@foundryco.com