
atproto 생태계에서 여러 앱이 함께 사용할 수 있는 그룹 표준 opensocial.group 제안이 마련되고 있다. 사진 공유 앱 Grain에서 그룹 생성과 가입 요청, 비공개 데이터 열람 과정을 보여주며, 같은 그룹을 다른 앱에서도 다시 만들지 않고 활용하는 방식을 소개한다.
opensocial.group은 Spaces 위에서 그룹을 구성하는 커뮤니티 표준 제안이다. 그룹은 여러 권한 설정 공간을 거느린 DID로 정의되며, 특정 개인 계정이 소유하지 않아도 된다. atproto 계정처럼 그룹도 호스트를 옮길 수 있다.
이 구조를 쓰면 이벤트 일정 관리나 실시간 소통 등 서로 다른 기능을 제공하는 앱들이 같은 그룹을 공유할 수 있다. 앱을 바꿀 때 그룹을 새로 만들거나 구성원을 다시 초대할 필요가 없다는 구상이다. 제안은 아직 개발 중인 모델이며, opensocial.group 제안에서 진행 상황과 의견을 확인할 수 있다.
Grain은 Atmosphere의 사진 공유 앱이다. 앱의 Groups 탭에는 opensocial.group 규격으로 만들어진 그룹이 표시된다. 예시에서 비공개 그룹인 Rainshadow Riders에 가입을 요청하면 관리자가 승인한 뒤 해당 그룹의 Spaces 기록에 접근할 수 있다. Spaces를 지원하는 PDS를 이용하면 이 기능을 체험할 수 있다.
Grain에서 새 그룹을 만든 뒤 사진을 올리면, 그룹 페이지에서 자신이 구성원이며 공간에 사진 기록이 하나 있다는 것을 확인할 수 있다. 제작자는 같은 기록을 atproto 데이터 브라우저 pdsls에서도 살펴본다. 계정에 기록이 보이지 않는 것은 기록이 인증이 필요한 Spaces 뒤에 있기 때문이다. pdsls에서 로그인하고 Spaces 작업 권한을 허용하면 해당 기록을 둘러볼 수 있다.
그룹 구성은 여러 공간으로 나뉜다. 제안은 그룹 프로필과 규칙을 담는 meta 공간, 구성원·역할과 다른 공간의 색인을 담는 members 공간을 기본으로 둔다. 각 앱이나 기능은 같은 그룹 DID 아래에 자체 공간을 추가할 수 있다. 예를 들어 Grain의 social.grain.group 공간과 별도로 이벤트 앱이 이벤트 공간을 만들고 기존 구성원과 역할을 활용할 수 있다.
권한은 역할 기반으로 관리한다. 그룹은 역할을 정해 구성원에게 부여하고, 각 공간의 access 기록은 어떤 역할이 읽을 수 있는지 지정한다. 그룹 호스트는 공간 자격 증명을 발급할 때 이 접근 권한을 적용한다. 쓰기나 게시물 고정 같은 규칙은 각 앱의 Lexicons가 정하며, 그룹 역할을 참조할 수 있다. 그룹 계정 비밀번호를 공유하는 대신 관리자는 자신의 계정으로 로그인해 역할에 허용된 범위의 자격 증명을 받는다.
각 구성원은 자신이 사용하는 PDS에 공간 기록을 보관한다. 그룹 호스트는 공간에 어떤 저장소가 있는지 추적하고 쓰기 알림을 전달하지만 구성원의 기록 자체를 보관하지 않는다. 제안은 그룹이 구성원에게 역할을 부여하는 membership 기록과 구성원이 이를 받아들이는 acceptance 기록을 모두 두도록 한다.
그룹은 자체 콘텐츠의 조정 서비스 역할도 한다. 신고는 createReport 메서드로 접수하고, 콘텐츠에 적용되는 라벨은 해당 콘텐츠와 같은 공간에 기록해 그룹의 접근 경계 안에 둔다. 그룹을 공개적으로 찾을 수 있게 하려면 공개 저장소에 declaration 기록을 게시해 meta 공간을 가리킬 수 있다. Bluesky를 비롯한 앱은 이를 활용해 그룹 프로필을 보여주고 활동 중인 앱으로 연결할 수 있다.
기반이 되는 Spaces 제안과 그룹 모델에 관한 opensocial.group 제안에서 자세한 내용을 확인할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요