ActivityPub
ActivityPub(액티비티펍)은 분산형 / 탈중앙형 소셜 네트워크를 위한 프로토콜입니다. 마스토돈에서는 A 인스턴스가 B 인스턴스와 서로 글, 팔로우 등의 여러 가지 정보를 주고받을 수 있습니다. 이 때 서로 대화하는 양식이 ActivityPub 입니다.
ActivityPub은 마스토돈 만의 것이 아니라, 일종의 표준안입니다. 그래서 마스토돈은 ActivityPub를 구현한 다른 SNS와도 통신할 수 있습니다.
기본적인 사항은 동일하지만, 프로그램마다 지원하는 범위가 다르거나 커스텀 기능이 있는 경우가 많아 모든 기능이 호환되지는 않습니다.
ActivityPub 을 지원하는 SNS 서버 소프트웨어들
관련 링크
프로그래머를 위한 설명
ActivityPub은 분산형 / 탈중앙형 SNS를 위한 서버 <-> 서버, 클라이언트 <-> 서버 간의 프로토콜입니다. 보통은 서버간의 프로토콜만 구현합니다.
주요 특징
- ActivityPub은 ActivityStreams 2.0 을 기반으로 한 프로토콜입니다. 특히 실제 개체는 ActivityStreams Vocabulary 권고안에 나와있습니다.
- 주고받는 내용은 JSON-LD 입니다.
- 사용자를 찾는 방법을 정의하지는 않습니다.
- 시장 지배적인 구현체인 마스토돈이 WebFinger 라는 방법으로 사용자를 탐색하므로 마스토돈과 호환되려면 WebFinger도 구현해야 합니다.
- WebFinger는
my_id@example.com
처럼 이메일과 같은 방식으로 사용자를 찾는 방법입니다.
ActivityStreams 개체 형태로 보기
실제 서비스중인 곳에서 어떤 형태로 글이나 사용자 등이 연합되는지 보면 이해하는 데 상당히 도움이 됩니다.
- 마스토돈에서는 주소 끝에 ?format=json 을 넣으면 바로 JSON 형태로 게시글 등을 확인할 수 있습니다.
- 미스키에서는 HTTP Get 요청 시 헤더에 Accept: application/activity+json 을 넣으면 JSON 형태로 받아볼 수 있습니다.
개발자용 참고 링크
- 스펙 문서
- 공식
- TODO: 링크 찾아서 걸기
- 번역
- 공식
- 구현체 공식 호환성 보고
- (영문) [마스토돈의 ActivityPub 호환성 설명]
- 도움이 되는 글들
- (영문) 마스토돈 공식 블로그의 간단한 호환 SNS 구현해보기 게시글 - 1, 2 (TODO: 링크 찾아서 걸기)
- (영문) [신규 ActivityPub 구현자를 위한 가이드 - socialhub.activitypub.rocks]
- (영문) [ActivityPub as it has been understood] - honk 개발자가 이해한 ActivityPub - 실제 구현체의 동작들도 다수 적혀있어 상당히 도움되는 자료입니다.