최근 셀프호스팅 워드프레스와 WordPress.com의 ActivityPub 연동 기능을 테스트하면서 느꼈던 문제점들과, 이를 개선하기 위한 아이디어를 몇 가지 정리해봤습니다. 페디버스(Fediverse) 연동을 워드프레스 생태계에 좀 더 자연스럽게 녹여내려면 어떤 방향으로 발전할 수 있을지, 그리고 Automattic과 WordPress 커뮤니티에 제안하고 싶은 내용을 정리해봅니다.
워드프레스닷컴과 페디버스 연동: 더 나은 통합을 위한 피드백 및 제안
최근 워드프레스닷컴(WordPress.com)에서 제공하는 페디버스(Fediverse) 연동 기능을 여러모로 실험해 보면서, 앞으로 워드프레스 생태계가 페디버스와 더욱 발전적으로 통합될 수 있는 몇 가지 아이디어와 개선점에 대한 고민을 공유하고자 합니다. 이 글은 워드프레스닷컴의 인터페이스인 칼립소(Calypso)와 액티비티펍(ActivityPub) 플러그인 전반에 걸친 제안을 담고 있으며, 관련 논의는 GitHub 이슈 (Automattic/wordpress-activitypub#1716)에서도 일부 진행된 바 있습니다.
1. 워드프레스 리더의 페디버스 친화적 플랫폼화 및 계정 통합 개선 제안
- 제안: 워드프레스 리더(WordPress Reader)가 페디버스와 좀 더 깊이 통합되어야 한다고 생각합니다. 예를 들어, 다음과 같은 방안을 고려해볼 수 있습니다.
- 액티비티펍 프로토콜을 워드프레스 리더에 직접 적용하여, 리더 자체가 페디버스 클라이언트처럼 기능하도록 하는 것입니다. (예: 단순히 워드프레스 블로그 구독을 넘어 외부 페디버스 계정/피드와 상호작용)
- 아래 5번 항목에서 제안할
fedi.wp.com
과 같은 중앙 릴레이 인스턴스를 옵트인(opt-in) 방식으로 제공하여, 워드프레스 리더가 이를 통해 더 광범위하고 안정적인 페더레이션 기능을 활용하도록 하는 것입니다.
- 이러한 개선이 필요한 현재 문제점 (액티비티펍 활성화 시 관찰됨):
- 불완전한 계정 통합: 액티비티펍 플러그인을 사용하는 셀프 호스팅 워드프레스 사이트와 워드프레스닷컴 계정 간의 상호작용 시, 계정 통합 및 인식이 일관되지 않습니다. 예를 들어, 동일한 사용자/블로그임에도 불구하고 페디버스 상호작용 중 다른 개체로 인식되는 경우가 있습니다.
- 리더 내 알림 누락: 워드프레스 블로그 간 (예: 셀프 호스팅 사이트가 워드프레스닷컴 블로그에 답글을 달거나 그 반대의 경우, 각자의 페디버스 ID 사용 시) 페더레이션 답글(댓글)이 발생해도, 해당 상호작용에 대한 알림이 워드프레스닷컴 리더에 표시되지 않는 경우가 많습니다.
- 중요성: 페디버스를 더 잘 이해하는 리더는 사용자에게 통일된 경험을 제공하고, 페더레이션을 통한 상호작용을 놓치지 않도록 하며, 각 계정의 정체성을 일관되게 인식하는 데 도움을 줄 것입니다.
2. 워드프레스 리더 내 ‘페더레이션 답글(Federated Reply)’ 블록 렌더링 문제
- 문제점: 액티비티펍 플러그인에서 제공하는 ‘페더레이션 답글(Federated Reply)’ 블록의 내용이 워드프레스닷컴의 리더에 제대로 표시되지 않고 있습니다.
- 중요성: 워드프레스닷컴이 페디버스 연동 옵션을 공식적으로 지원하는 만큼, 페더레이션을 위해 작성된 콘텐츠(예: 페더레이션 답글)는 리더 피드에서도 일관되게 보여야 합니다. 이는 대화의 맥락을 유지하고 사용자가 모든 상호작용을 온전히 파악하는 데 매우 중요합니다.
- 참고: 관련 내용은 GitHub 이슈 Automattic/wordpress-activitypub#1716에서 처음 언급되었습니다.
✔️ 개선 제안
페더레이션 기능을 지원하는 WordPress.com에서는 이 블록의 내용을 Reader에서도 기본적으로 렌더링해줄 수 있도록 개선 필요. 페디버스 통합 기능이 있다면 연동된 리플라이까지 읽을 수 있어야 하니까요.
3. 제트팩 앱 리더 댓글 편집 시 HTML/CSS 노출 문제 (워드프레스닷컴 리더 영향 가능성)
- 문제점: 페디버스에서 받아온 댓글이나 고급 편집기로 작성된 댓글처럼 풍부한 HTML을 포함한 댓글을 제트팩 모바일 앱 리더 등에서 보거나 처리할 때,
<style>
태그를 포함한 원시 HTML 및 CSS 코드가 그대로 노출되는 경우가 관찰되었습니다. - 워드프레스닷컴 리더(칼립소)에 대한 제안: 댓글의 출처나 서식과 관계없이 워드프레스닷컴 리더 내에서도 댓글 내용에 대한 강력한 정제(Sanitization) 과정 및 구조화된 렌더링 방식을 적용해야 합니다. 이를 통해 불필요한 코드 노출을 막고 깔끔한 UI를 유지할 수 있으며, 블록 기반 댓글 렌더링 방식 도입도 고려해볼 수 있습니다.
- 참고: 모바일 앱 관련 보고는 wordpress-mobile/WordPress-iOS#24554에서 이루어졌으며, 워드프레스닷컴 리더 역시 이러한 콘텐츠를 안전하고 일관되게 처리할 책임이 있습니다.
✔️ 개선 제안
앱에서는 댓글 콘텐츠를 적절히 sanitize 처리하거나, 블록 형태로 변환해서 노출해주는 방식으로 개선 필요.
4. oEmbed 방식이 아닌 ActivityPub ‘Announce’를 통한 WordPress 네이티브 리블로그 기능 구현 제안
- 주요 내용: 현재의 oEmbed 기반 리블로그 방식 대신, 액티비티펍의
Announce
활동을 사용하는 네이티브 워드프레스 간 “리블로그” 기능을 구현해야 합니다. - 현재 문제점: 제트팩의 리블로그 기능은 oEmbed 미리보기를 사용하는데, 이는 페디버스의
Announce
/Boost
모델과 맞지 않습니다. 이로 인해 마스토돈, 미스키 등의 페디버스 타임라인에서 어색하게 보이거나 중복된 것처럼 보일 수 있으며, 때로는 테마 충돌로 인해 레이아웃이 깨지기도 합니다. - 워드프레스닷컴에서의 기대 동작: 워드프레스닷컴 사용자가 다른 액티비티펍 활성화 워드프레스 인스턴스(닷컴 또는 셀프호스팅)의 글을 리블로그할 때, 이 행위는 해당 사용자의 워드프레스닷컴 페디버스 ID로부터
Announce
활동을 발생시켜야 합니다. - 칼립소와의 연관성: 워드프레스닷컴에서 리블로그 UI/UX 및 oEmbed와 Announce 중 어떤 방식을 사용할지 결정하는 내부 로직은 칼립소에 의해 관리되거나 영향을 받을 것입니다.
- 참고: 자세한 제안은 GitHub 이슈 Automattic/wordpress-activitypub#1715에서 확인할 수 있습니다.
✔️ 제안
두 사이트 모두 ActivityPub이 활성화된 상태라면, 리블로그 시 oEmbed 임베드가 아니라 Announce
Activity를 발생시켜서 페더레이션 네트워크로 자연스럽게 포스트를 공유할 수 있도록 구현하는 것.
예상 이점
- WordPress 블로그 간 자연스러운 부스트/리블로그 가능
- Misskey, Mastodon, Pixelfed 같은 플랫폼과도 통일된 페더레이션 공유 방식 적용
- oEmbed 임베드 시 발생하는 레이아웃 깨짐, 폰트 충돌 문제 해결
5. 워드프레스닷컴 중앙 릴레이 서버 및 페디버스 정체성 관리 방안 구상
현재 WordPress.com은 블로그 단위로 Fediverse 핸들을 생성하지만, 향후에는 WordPress.com 자체를 릴레이 서버 형태로 운영하는 것도 가능하다고 봅니다.
- 아이디어: 워드프레스닷컴 사용자의 페디버스 상호 운용성을 간소화하고, 잠재적으로 셀프 호스팅 사이트에도 서비스를 제공할 수 있는 중앙 릴레이/프록시 인스턴스(예:
fedi.wp.com
) 도입을 검토해볼 수 있습니다. - URL 구조 예시:
- 인스턴스 정보:
fedi.wordpress.com/instance-info/mastodon.social
- 사용자 프로필 (프록시 방식):
fedi.wordpress.com/@username@mastodon.social
또는fedi.wordpress.com/fediverse_profile/@username@mastodon.social
- 인스턴스 정보:
- 기대 효과:
- 워드프레스닷컴 사용자가 외부 페디버스와 상호작용 시 팔로잉/팔로워 관계 관리를 단순화할 수 있습니다.
- 셀프 호스팅 사이트가 워드프레스닷컴을 통해 페더레이션 라우팅을 선택적으로 이용할 수 있게 하여 안정성이나 추가 기능을 제공할 수도 있습니다.
- 고려 사항: 이는 워드프레스닷컴 생태계 내에서 다양한 도메인 기반 및 사용자 이름 기반 페디버스 ID를 처리하는 데 있어 복잡성이 따르는 중요한 아키텍처 변경 문제입니다.
이점
- 워드프레스 생태계와 외부 페디버스 네트워크의 브리지 역할
- 분산 인프라 기반의 Fediverse 운영 비용 부담 완화
- 통합된 연동 관리 시스템 구축 가능성
6. 워드프레스닷컴 프로필 통합과 페디버스 ID 전략에 대한 고민
WordPress.com Reader 프로필 URL (예: https://wordpress.com/reader/users/kimjiwoon96
)을 Fediverse용 핸들로 활용하는 것도 고려해볼 수 있습니다.
다만, 이건 워드프레스 생태계 내부의 프로필 통합부터 우선 정리하고, 그 이후 Fediverse ID로 확장하는 방향이 현실적.
- 아이디어: 워드프레스닷컴 리더 프로필(예:
https://wordpress.com/reader/users/kimjiwoon96
)이 사용자의 페디버스 ID 및 잠재적인 통합 ID 전략과 어떻게 연계될 수 있을지 고민이 필요합니다. - 참고: WordPress.org, 셀프 호스팅, 워드프레스닷컴 프로필을 페디버스 ID와 완전히 통합하는 것은 매우 어려운 과제이지만, 단계적인 접근을 고려할 수 있습니다. 초기에는 워드프레스닷컴 ID가 페디버스에 어떻게 표시되고 상호작용하는지에 집중하는 방식입니다.
7. 제트팩 사용자 정의 글 유형(CPT)을 활용한 마이크로블로깅 (‘노트’ 형식) 기능 제안
- 제안: 제트팩에서 지원하는 포트폴리오나 추천글과 같은 사용자 정의 글 유형(CPT)을 확장하거나 새롭게 도입하여, 마이크로블로깅에 적합한 “노트(Note)” 또는 “상태(Status)” 형식을 만들 수 있습니다. 이 형식은 액티비티펍의
Note
객체에 최적화될 것입니다. - 워드프레스닷컴의 이점: 워드프레스닷컴 블로그가 기존의 블로그 구조를 해치지 않으면서도 페디버스 내에서 짧은 상태 업데이트와 같은 마이크로블로깅 노드로서 원활하게 기능할 수 있게 됩니다. 이러한 “노트” 작성 인터페이스는 칼립소를 통해 제공될 수 있습니다.
8. 이모지 렌더링 불일치 및 페디버스 호환성 문제
- 문제점: 이모지(Emoji)가 워드프레스 플랫폼(셀프 호스팅, 워드프레스닷컴, 제트팩 리더, 데스크톱/모바일 앱) 간에 일관성 없게 표시됩니다. 특히 다음과 같은 경우에 문제가 두드러집니다.
- 국기 이모지
- 페디버스 플랫폼(예: 미스키 반응, 마스토돈 사용자 지정 이모지 – 종종
<img>
태그 사용)의 사용자 지정 이모지
- 칼립소/리더의 중요성: 만약 워드프레스 리더가 페디버스 기능을 강화한다면(1번 항목 제안처럼), 페디버스에서 사용되는 사용자 지정 이모지 세트(종종 이미지 기반)를 포함하여 이모지를 일관되고 포괄적으로 파싱하고 렌더링해야 합니다.
- 칼립소/리더에 대한 제안:
- 리더 및 기타 칼립소 관리 인터페이스 내에서 이모지 렌더링 동작을 표준화해야 합니다.
- 페디버스 콘텐츠를 충실하게 표시하기 위해 페디버스 사용자 지정 이모지(예: 마스토돈/미스키 등에서 사용자 지정 이모지에 사용하는 특정 클래스를 가진
<img>
태그 파싱)에 대한 강력한 지원을 검토해야 합니다.
- 참고: 관련된 모바일 앱 논의는 wordpress-mobile/WordPress-iOS#24551에서 찾아볼 수 있습니다.
✔️ 개선 제안
향후 ActivityPub 기반 Fediverse 피드 연동 시에도 이모지 리액션을 제대로 처리하려면, 지금부터 리더 및 앱의 이모지 렌더링 로직을 통일하고 커스텀 이모지 대응 방안을 마련해두는 게 필요.
마치며:
워드프레스의 ActivityPub 통합은 이제 막 걸음마 단계라 이런 세부적인 문제들이 예상보다 많습니다.
하지만 오히려 지금 이런 사소한 문제들을 정리하고, Automattic이나 플러그인 개발자들에게 제안하면서 생태계 전반의 페더레이션 경험을 다듬어볼 좋은 기회라고 생각해요.
이 글에서 제안된 내용들이 워드프레스닷컴을 페디버스의 더욱 강력하고 통합된 일원으로 만드는 데 필요한 논의를 촉발하는 계기가 되기를 바랍니다. 특히 워드프레스 리더의 기능 강화, 일관된 콘텐츠 표시, 그리고 정체성 및 콘텐츠 공유에 대한 전략적 고민은 앞으로 중요한 개선 영역이라고 생각합니다. 여러분의 생각은 어떠신가요?
저도 지금 하나하나 실험해가면서 느끼는 점들을 정리하고 있으니, 혹시 이 주제에 관심 있거나 같이 테스트해보고 싶은 분 있으면 댓글이나 DM 주세요!