피드로 돌아가기
I built a share button that doesn't assume where you live on the open social web
Dev.toDev.to
Frontend

오픈 소셜 웹용 범용 공유 버튼 atShare를 개발하여 플랫폼 종속성 문제를 해결함

I built a share button that doesn't assume where you live on the open social web

R. Michael Thomas2026년 4월 2일2intermediate

Context

현재 "Share to Bluesky" 버튼은 항상 bsky.app으로만 연결되어 deck.blue, Langit 등 12개 이상의 AT Protocol 클라이언트와 수천 개의 Mastodon 인스턴스에서 작동하지 않음. 사용자의 실제 활동 환경과 관계없이 단일 목적지만 강제하는 구조적 한계가 있음.

Technical Solution

  • Web Component: 태그 하나로 의존성 없이 임의 HTML 페이지에 삽입 가능함
  • PDS 저장: 사용자가 선택한 선호 네트워크를 중앙 서버가 아닌 사용자 자신의 PDS에 social.atshare.preference 레코드로 저장함
  • Microcosm 연동: 커뮤니티 유지 AT Protocol 인프라인 Microcosm으로 신원 해결을 처리하여 특정 플랫폼에 종속되지 않음
  • JSON 기반 네트워크 목록: 네트워크 목록이 repo의 JSON 파일로 관리되어 누구나 PR로 AT Protocol 클라이언트나 Fediverse 인스턴스 타입을 추가할 수 있음
  • 플랫폼 독립 설계: Bluesky API가 아닌 protocol 레벨의 통합으로 ecosystem 성장에 유연하게 대응함

Impact

12개 이상의 AT Protocol 클라이언트와 수천 개의 Mastodon 인스턴스를 단일 버튼으로 지원함.

Key Takeaway

사용자 데이터의 저장 위치를 중앙 서버에서 사용자의 PDS로 이전하면 플랫폼 종속성 없이 사용자 제어 가능한 데이터 주권을 구현할 수 있음. 커뮤니티 주도의 네트워크 목록 관리는 특정 서비스 의존성 없이 지속 가능한 ecosystem 확장의 기반이 됨.


분산 소셜 웹 환경에서 공유 기능을 구현할 때 사용자의 선호 설정이나 인증 정보를 중앙 서버가 아닌 사용자의 개인 서버(PDS)에 저장하는 구조를 검토할 것. 네트워크 목록을 하드코딩하지 않고 JSON 기반 외부 파일로 관리하면 커뮤니티 기여를 통한 지속적 확장이 가능함.

원문 읽기