ActivityPub

한국 마스토돈 연합위키
둘러보기로 이동 검색으로 이동

ActivityPub(액티비티펍)은 분산형 / 탈중앙형 소셜 네트워크를 위한 프로토콜입니다. 마스토돈에서는 A 인스턴스가 B 인스턴스와 서로 글, 팔로우 등의 여러 가지 정보를 주고받을 수 있습니다. 이 때 서로 대화하는 양식이 ActivityPub 입니다.

ActivityPub은 마스토돈 만의 것이 아니라, 일종의 표준안입니다. 그래서 마스토돈은 ActivityPub를 구현한 다른 SNS와도 통신할 수 있습니다.

분산형 SNS에 대한 설명 동영상

ActivityPub 을 지원하는 SNS 서버 소프트웨어들

관련 링크

호환성

기본적인 사항은 동일하지만, 프로그램마다 지원하는 범위가 다르거나 커스텀 기능이 있는 경우가 많아 모든 기능이 호환되지는 않습니다. 특히 미스키앞에 misskey를 붙인 전용 정보를 많이 사용하는 편입니다.

프로그래머를 위한 설명

ActivityPub은 분산형 / 탈중앙형 SNS를 위한 서버 <-> 서버, 클라이언트 <-> 서버 간의 프로토콜입니다. 보통은 서버간의 프로토콜만 구현합니다.

주요 특징

  • ActivityPub은 ActivityStreams 2.0 을 기반으로 한 프로토콜입니다. 특히 실제 개체는 ActivityStreams Vocabulary 권고안에 나와있습니다.
  • 주고받는 내용은 JSON-LD 입니다.
  • 사용자를 찾는 방법을 정의하지는 않습니다.
    • 시장 지배적인 구현체인 마스토돈이 WebFinger 라는 방법으로 사용자를 탐색하므로 마스토돈과 호환되려면 WebFinger도 구현해야 합니다.
    • WebFingermy_id@example.com 처럼 이메일과 같은 방식으로 사용자를 찾는 방법입니다.

ActivityStreams 개체 형태로 보기

실제 서비스중인 곳에서 어떤 형태로 글이나 사용자 등이 연합되는지 보면 이해하는 데 상당히 도움이 됩니다.

  • 마스토돈에서는 주소 끝에 ?format=json 을 넣으면 바로 JSON 형태로 게시글 등을 확인할 수 있습니다.
  • 마스토돈을 포함한 모든 구현체에서, HTTP Get 요청 시 헤더에 Accept: application/activity+json 을 넣으면 JSON 형태로 받아볼 수 있습니다.

개발자용 참고 링크