채팅용 Matrix 프로토콜

저는 @mattdm 같은 고객은 아니지만, 오픈소스 소프트웨어에 전념하는 여러 Discourse 인스턴스를 운영하고 있습니다. Matrix는 이 커뮤니티에서 사용되는 주요 도구 중 하나입니다. Matrix는 IRC와 브리징도 가능하기 때문에, IRC를 대체하여 여러 사람들의 주요 커뮤니케이션 도구로 자리 잡았습니다. 그럼에도 불구하고 Matrix는 “채팅” 도구로서 아직 충분히 활용되지 못하고 있습니다. Matrix는 훨씬 더 많은 것을 할 수 있으며, 결국 Matrix 기반의 연방 포럼이 등장할 것입니다. Discourse가 Fediverse에서 그러했듯이 이 분야에서도 리더가 되었으면 좋겠습니다. Matrix와의 채팅 상호운용성을 지원하는 것이 필수적인 첫 번째 단계가 될 것입니다.

@Thomas_Rother, 다음 OFFDEM에서 오픈소스 소프트웨어에 대한 추가 자금 지원 기회에 대해 더 논의해 보시겠습니까?

4개의 좋아요

@mcwumbly @sam @lindsey

저는 @hellekin님의 의견을 전적으로 지지합니다. 유럽의 많은 오픈소스 커뮤니티와 정부 기관들 사이에서 채팅 솔루션으로 Matrix를 사용하는 방향으로 강력한 움직임이 일어나고 있습니다. Discourse와 그 조직적 틀인 CDCK는 이것이 가까운 미래에 Discourse에 있어 중요한 게임 체인저가 될 수 있다는 점(또는 그 반대일 수 있다는 점)을 이해해야 합니다. 현재로서는 이것이 "기술적인 사람들"에게만 현상일 수 있습니다. 하지만 곧 기술에 덜 밝은 사람들(경영진 포함)도 Matrix가 올바른 방법임을 이해하게 될 것입니다 — 오픈소스 기반이며, 개방적이고 유연한 공개 프로토콜에 기반하며, 연동(federated)되어 있거든요.

앞서 설명했듯이, 유럽과 독일에는 이미 Matrix 기반 솔루션을 사용하거나 곧 사용할 대형 플레이어들이 다수 있습니다(예: 독일 군대의 bwmessenger, 또는 독일 GEMATIK가 운영하는 국가 의료 네트워크를 위한 미래의 TI-messenger).

따라서 CDCK는 현재 Discourse 채팅과 로컬 Discourse 인스턴스 외부의 일부 Matrix 기반 서비스("
Discourse 간" 채팅 포함) 간의 기술적 연결을 개발하기 위해 이를 공식적인 프로젝트로 삼아야 합니다. @angus님이 ActivityPub 프로토콜을 위해 이미 시작했던 개발(ActivityPub Plugin)과 유사하게 말이죠.

참고 자료:

6개의 좋아요

크라우드펀딩이 이러한 시도에 자금을 지원하는 데 도움이 될 수 있을까요?

제 생각에는 이메일의 필요성을 없애기 위한 로드맵이 있어야 합니다.
Matrix를 사용하는 것이 그 한 가지 방법이 될 수 있습니다.

자금 조달이 정말로 가장 큰 문제라고는 생각하지 않습니다. 먼저 필요한 것은 다음과 같습니다.

  • CDCK 직원이 Matrix 구현이 Discourse 제품에서 유용하고 계획된 기능/사용 사례임을 명확히 약속하는 것
  • 개발 작업을 수행할 수 있는 1~2명 (예: Discourse/Ruby 프로그래밍 1명, UX 작업 1명). 여기에 테스트, 디버깅, 문서화를 위한 추가 지원자가 필요합니다. 저는 Ruby 개발자가 아니지만, 테스트 환경 설정과 디버깅/문서화 작업에는 도움을 줄 수 있습니다.
  • @dan이 이미 작성한 코드를 GitHub - udan11/discourse-chat-matrix: A Matrix bridge for Discourse Chat · GitHub 에서 확인하여 "알파"에서 “베타” 상태로 전환하기 위해 어떤 작업이 필요한지 파악하는 것.
  • 이미 Matrix Foundation의 @joshsimmons 님이 이 주제에 참여해 주셨습니다. Matrix 측의 연결고리와 기술적 세부 사항에 있어 도움이 될 수 있습니다.

제 관점에서 자금 조달, 크라우드펀딩 또는 외부 자금 확보는 마지막 계획 단계입니다. CDCK 측에서 다른 항목들이 명확히 정리되고 합의된 후에만 자금 신청이 가능합니다. 저는 이미 SRS를 가능한 지원 출처로 언급한 적이 있으며, 다른 출처도 있을 수 있습니다. CDCK의 비즈니스 고객 중 Matrix 기능 개발을 지원할 수 있는 이해관계자가 있을 수도 있습니다.

6개의 좋아요

이 주제에 대해 조금 조사해 보니, discourse의 채팅 시스템을 matrix로 이동시키는 것이 정말 합리적인 것 같습니다. 이 기능이 곧 출시되기를 바랍니다. 베타 테스트에도 기꺼이 참여하겠습니다.

1개의 좋아요

음… 동의하기 어렵습니다.

CDCK가 반드시 적극적으로 관여하거나 의사결정자가 될 필요는 없습니다. 필요 시 제3자가 그 공백을 메울 수 있으며, CDCK 외부에서 시작되는 플러그인은 매우 많습니다.

개발자가 참여할 수 있도록 동기와 역량을 제공하는 데 있어 자금 조달은 절대적으로 중요합니다.

무엇이 개발되든, 장기적인 지원이 계획에 고려되어야 한다는 점은 인정합니다.

6개의 좋아요

자금 조달을 위해서는 일반적으로 이를 신청할 수 있는 "법적 주체"가 필요합니다. 이는 오픈소스 프로젝트 뒤의 회사나 기타 유형의 조직일 수 있지만, 개인 개발자만으로는 불가능합니다.

현재 독일의 자금 지원 신청 기간은 마감되었습니다. 올해 초 언급했던 독일 주권 기술 기금(https://www.sovereign.tech)은 이미 정원을 초과하여 더 이상 새로운 요청을 받지 않고 있습니다.

또한, 현재 독일의 연립 정부가 붕괴되면서 해당 기금의 재정적 기반도 더 이상 안정적이지 않습니다. 2월에는 총선이 열리며, 이후에는 더 보수적인 연립 정부가 구성될 전망입니다. 이는 현 연립 정부보다 오픈소스에 덜 우호적일 것으로 예상됩니다.

2개의 좋아요

그렇습니다. Matrix 조직이나 관련 기관 중 누군가가 이러한 자금 지원을 신청해야 합니다. 도움을 주려는 사람은 많지만, 자금은 신뢰할 수 있는 후보를 통해 집행됩니다. Matrix 프로토콜과 Discourse를 모두 충분히 잘 이해하여 필요한 작업을 평가할 수 있는 사람은 누구일까요?

1개의 좋아요

오래된 주제를 다시 꺼내 봅니다. LLM이라는 새로운 세상에서는 이런 종류의 프로토타입을 만드는 것이 훨씬 쉬워졌습니다.

지난 몇 주간 LLM 용량이 조금 남아 있었고 호기심도 생겼기에 한번 시도해 보았습니다.

현재 이 코드는 엄밀히 말해 개념 증명(PoC)일 뿐이며, 프로덕션 환경에 사용할 수 있는 수준은 아닙니다. 현재까지 기존 사용자는 없습니다.

하지만 충분히 가능하고 실현 가능하며, 기존 또는 미래의 디스커스(Discourse) 사용자들로부터 관심이 있다면 기꺼이 계속 작업해 나갈 것입니다. 원하시면 https://do2.musaraj.com 에서 실시간 테스트도 해볼 수 있습니다(정기적으로 업데이트를 위해 다운될 수 있는 테스트 인스턴스이므로 참고해 주세요).

6개의 좋아요

@pmusaraj, @rokejulianlockhart:matrix.org를 통해 develop.element.io/#/room/!HizmVSBEQVwREThZXz:matrix.musaraj.com 방에 참여할 수 없습니다. 다음 오류를 확인했기 때문입니다:

리소스를 가져오는 동안 NetworkError가 발생했습니다. (matrix-client.matrix.org)

1개의 좋아요

@pmusaraj 멋진데요! 네트워크가 분리되어 있는 것이 제 커뮤니티에서 계속 문제가 되어 왔기 때문에 브리지에 여전히 매우 관심이 많습니다.

위에 이미 구현에 상당한 양의 코드가 존재한다는 것을 확인하셨는지 확인하고 싶었습니다 위 링크. 그 코드가 1) 최신 discourse 버전에 맞게 업데이트되고, 2) 문서화가 추가되며, 3) 해당 게시물에 나열된 미해결 항목(미디어 업로드/입력 중 알림), 4) 2023년 이후에 변경된 부분이 있다면 matrix 스티커/반응 기능을 추가하면 되는 것 같았습니다. 저는 코드 리뷰를 하거나 직접 시도해 보지는 않았지만, 그것이 프로젝트 시작의 좋은 출발점이 될 수 있지 않을까 해서 질문해 보았습니다.

1개의 좋아요

그렇게 빠르게 테스트해 주셔서 감사합니다! https://matrix.musaraj.com/ 접속 시 상태 페이지가 표시되나요?

그 부분을 확인하는 것을 잊고 있었습니다. 3년 동안 Discourse와 Matrix/Element 모두 많이 변했으니, 그 저장소는 봇에 유용한 참고 자료로 사용할 수 있을 것입니다.

2개의 좋아요

지금은 작동할 것 같습니다 @roke_julian_lockhart. matrix.musaraj.com은 Matrix의 테스트 인스턴스이며, 이전에 연방(federation)을 활성화하지 않았고 방을 공개하지 않았습니다. 지금은 접근이 가능해야 합니다. #discourse-general:matrix.musaraj.com을 통해 두 번째 인스턴스에 추가할 수 있었습니다.

1개의 좋아요

@pmusaraj, 그런 옵션이 보이지 않아요. 어떻게 해야 하는지 보여줄 수 있을까요?


@pmusaraj, 저는 https://matrix.musaraj.com/_matrix/static/ 으로 리다이렉트됩니다. 그곳에서 다음을 확인했습니다:

<!DOCTYPE html>
<html lang="en">
  <head>
   <title>Synapse is running</title>
   <style>
       body {
         font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
         max-width: 40em;
         margin: auto;
         text-align: center;
       }
       h1, p {
         margin: 1.5em;
       }
       hr {
        border: none;
        background-color: #ccc;
        color: #ccc;
        height: 1px;
        width: 7em;
        margin-top: 4em;
      }
       .logo {
         display: block;
         width: 12em;
         margin: 4em auto;
       }
   </style>
  </head>
  <body>
    <div class="logo">
       <svg role="img" aria-label="[Matrix logo]" viewBox="0 0 200 85" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
          <g id="parent" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
              <g id="child" transform="translate(-122.000000, -6.000000)" fill="#000000" fill-rule="nonzero">
                  <g id="matrix-logo" transform="translate(122.000000, 6.000000)">
                      <polygon id="left-bracket" points="2.24708861 1.93811009 2.24708861 82.7268844 8.10278481 82.7268844 8.10278481 84.6652459 0 84.6652459 0 0 8.10278481 0 8.10278481 1.93811009"></polygon>
                      <path d="M24.8073418,27.5493174 L24.8073418,31.6376991 L24.924557,31.6376991 C26.0227848,30.0814294 27.3455696,28.8730642 28.8951899,28.0163743 C30.4437975,27.1611927 32.2189873,26.7318422 34.218481,26.7318422 C36.1394937,26.7318422 37.8946835,27.102622 39.4825316,27.8416679 C41.0708861,28.5819706 42.276962,29.8856073 43.1005063,31.7548404 C44.0017722,30.431345 45.2270886,29.2629486 46.7767089,28.2506569 C48.3253165,27.2388679 50.158481,26.7318422 52.2764557,26.7318422 C53.8843038,26.7318422 55.3736709,26.9269101 56.7473418,27.3162917 C58.1189873,27.7056734 59.295443,28.3285835 60.2759494,29.185022 C61.255443,30.0422147 62.02,31.1615927 62.5701266,32.5426532 C63.1187342,33.9262275 63.3936709,35.5898349 63.3936709,37.5372459 L63.3936709,57.7443688 L55.0410127,57.7441174 L55.0410127,40.6319376 C55.0410127,39.6201486 55.0020253,38.6661761 54.9232911,37.7700202 C54.8440506,36.8751211 54.6293671,36.0968606 54.2764557,35.4339817 C53.9232911,34.772611 53.403038,34.2464807 52.7177215,33.8568477 C52.0313924,33.4689743 51.0997468,33.2731523 49.9235443,33.2731523 C48.7473418,33.2731523 47.7962025,33.4983853 47.0706329,33.944578 C46.344557,34.393033 45.7764557,34.9774826 45.3650633,35.6969211 C44.9534177,36.4181193 44.6787342,37.2353431 44.5417722,38.150855 C44.4037975,39.0653615 44.3356962,39.9904257 44.3356962,40.9247908 L44.3356962,57.7443688 L35.9835443,57.7443688 L35.9835443,40.8079009 C35.9835443,39.9124991 35.963038,39.0263982 35.9253165,38.150855 C35.8853165,37.2743064 35.7192405,36.4666349 35.424557,35.7263321 C35.1303797,34.9872862 34.64,34.393033 33.9539241,33.944578 C33.2675949,33.4983853 32.2579747,33.2731523 30.9248101,33.2731523 C30.5321519,33.2731523 30.0126582,33.3608826 29.3663291,33.5365945 C28.7192405,33.7118037 28.0913924,34.0433688 27.4840506,34.5292789 C26.875443,35.0164459 26.3564557,35.7172826 25.9250633,36.6315376 C25.4934177,37.5470495 25.2779747,38.7436 25.2779747,40.2229486 L25.2779747,57.7441174 L16.9260759,57.7443688 L16.9260759,27.5493174 L24.8073418,27.5493174 Z" id="m"></path>
                      <path d="M68.7455696,31.9886202 C69.6075949,30.7033339 70.7060759,29.672189 72.0397468,28.8926716 C73.3724051,28.1141596 74.8716456,27.5596239 76.5387342,27.2283101 C78.2050633,26.8977505 79.8817722,26.7315908 81.5678481,26.7315908 C83.0974684,26.7315908 84.6458228,26.8391798 86.2144304,27.0525982 C87.7827848,27.2675248 89.2144304,27.6865688 90.5086076,28.3087248 C91.8025316,28.9313835 92.8610127,29.7983798 93.6848101,30.9074514 C94.5083544,32.0170257 94.92,33.4870734 94.92,35.3173431 L94.92,51.026844 C94.92,52.3913138 94.998481,53.6941963 95.1556962,54.9400165 C95.3113924,56.1865908 95.5863291,57.120956 95.9787342,57.7436147 L87.5091139,57.7436147 C87.3518987,57.276055 87.2240506,56.7996972 87.1265823,56.3125303 C87.0278481,55.8266202 86.9592405,55.3301523 86.9207595,54.8236294 C85.5873418,56.1865908 84.0182278,57.1405633 82.2156962,57.6857982 C80.4113924,58.2295248 78.5683544,58.503022 76.6860759,58.503022 C75.2346835,58.503022 73.8817722,58.3275615 72.6270886,57.9776459 C71.3718987,57.6269761 70.2744304,57.082244 69.3334177,56.3411872 C68.3921519,55.602644 67.656962,54.6680275 67.1275949,53.5390972 C66.5982278,52.410167 66.3331646,51.065556 66.3331646,49.5087835 C66.3331646,47.7961578 66.6367089,46.384178 67.2455696,45.2756092 C67.8529114,44.1652807 68.6367089,43.2799339 69.5987342,42.6173064 C70.5589873,41.9556844 71.6567089,41.4592165 72.8924051,41.1284055 C74.1273418,40.7978459 75.3721519,40.5356606 76.6270886,40.3398385 C77.8820253,40.1457761 79.116962,39.9896716 80.3329114,39.873033 C81.5483544,39.7558917 82.6270886,39.5804312 83.5681013,39.3469028 C84.5093671,39.1133743 85.2536709,38.7732624 85.8032911,38.3250587 C86.3513924,37.8773578 86.6063291,37.2252881 86.5678481,36.3680954 C86.5678481,35.4731963 86.4210127,34.7620532 86.1268354,34.2366771 C85.8329114,33.7113009 85.4405063,33.3018092 84.9506329,33.0099615 C84.4602532,32.7181138 83.8916456,32.5232972 83.2450633,32.4255119 C82.5977215,32.3294862 81.9010127,32.2797138 81.156962,32.2797138 C79.5098734,32.2797138 78.2159494,32.6303835 77.2746835,33.3312202 C76.3339241,34.0320569 75.7837975,35.2007046 75.6275949,36.8354037 L67.275443,36.8354037 C67.3924051,34.8892495 67.8817722,33.2726495 68.7455696,31.9886202 Z M85.2440506,43.6984752 C84.7149367,43.873433 84.1460759,44.0189798 83.5387342,44.1361211 C82.9306329,44.253011 82.2936709,44.350545 81.6270886,44.4279688 C80.96,44.5066495 80.2934177,44.6034294 79.6273418,44.7203193 C78.9994937,44.8362037 78.3820253,44.9933138 77.7749367,45.1871248 C77.1663291,45.3829468 76.636962,45.6451321 76.1865823,45.9759431 C75.7349367,46.3070055 75.3724051,46.7263009 75.0979747,47.2313156 C74.8232911,47.7375872 74.6863291,48.380356 74.6863291,49.1588679 C74.6863291,49.8979138 74.8232911,50.5218294 75.0979747,51.026844 C75.3724051,51.5338697 75.7455696,51.9328037 76.2159494,52.2246514 C76.6863291,52.5164991 77.2349367,52.7213706 77.8632911,52.8375064 C78.4898734,52.9546477 79.136962,53.012967 79.8037975,53.012967 C81.4506329,53.012967 82.724557,52.740978 83.6273418,52.1952404 C84.5288608,51.6507596 85.1949367,50.9981872 85.6270886,50.2382771 C86.0579747,49.4793725 86.323038,48.7119211 86.4212658,47.9321523 C86.518481,47.1536404 86.5681013,46.5304789 86.5681013,46.063422 L86.5681013,42.9677248 C86.2146835,43.2799339 85.7736709,43.5230147 85.2440506,43.6984752 Z" id="a"></path>
                      <path d="M116.917975,27.5493174 L116.917975,33.0976917 L110.801266,33.0976917 L110.801266,48.0492936 C110.801266,49.4502128 111.036203,50.3850807 111.507089,50.8518862 C111.976962,51.3191945 112.918734,51.5527229 114.33038,51.5527229 C114.801013,51.5527229 115.251392,51.5336183 115.683038,51.4944037 C116.114177,51.4561945 116.526076,51.3968697 116.917975,51.3194459 L116.917975,57.7438661 C116.212152,57.860756 115.427595,57.9381798 114.565316,57.9778972 C113.702785,58.0153523 112.859747,58.0357138 112.036203,58.0357138 C110.742278,58.0357138 109.516456,57.9477321 108.36,57.7722716 C107.202785,57.5975651 106.183544,57.2577046 105.301519,56.7509303 C104.418987,56.2454128 103.722785,55.5242147 103.213418,54.5898495 C102.703038,53.6562385 102.448608,52.4292716 102.448608,50.9099541 L102.448608,33.0976917 L97.3903797,33.0976917 L97.3903797,27.5493174 L102.448608,27.5493174 L102.448608,18.4967596 L110.801013,18.4967596 L110.801013,27.5493174 L116.917975,27.5493174 Z" id="t"></path>
                      <path d="M128.857975,27.5493174 L128.857975,33.1565138 L128.975696,33.1565138 C129.367089,32.2213945 129.896203,31.3559064 130.563544,30.557033 C131.23038,29.7596679 131.99443,29.0776844 132.857215,28.5130936 C133.719241,27.9495083 134.641266,27.5113596 135.622532,27.1988991 C136.601772,26.8879468 137.622025,26.7315908 138.681013,26.7315908 C139.229873,26.7315908 139.836962,26.8296275 140.504304,27.0239413 L140.504304,34.7336477 C140.111646,34.6552183 139.641013,34.586844 139.092658,34.5290275 C138.543291,34.4704569 138.014177,34.4410459 137.504304,34.4410459 C135.974937,34.4410459 134.681013,34.6949358 133.622785,35.2004532 C132.564051,35.7067248 131.711392,36.397255 131.064051,37.2735523 C130.417215,38.1501009 129.955443,39.1714422 129.681266,40.3398385 C129.407089,41.5074807 129.269873,42.7736624 129.269873,44.1361211 L129.269873,57.7438661 L120.917722,57.7438661 L120.917722,27.5493174 L128.857975,27.5493174 Z" id="r"></path>
                      <path d="M144.033165,22.8767376 L144.033165,16.0435798 L152.386076,16.0435798 L152.386076,22.8767376 L144.033165,22.8767376 Z M152.386076,27.5493174 L152.386076,57.7438661 L144.033165,57.7438661 L144.033165,27.5493174 L152.386076,27.5493174 Z" id="i"></path>
                      <polygon id="x" points="156.738228 27.5493174 166.266582 27.5493174 171.619494 35.4337303 176.913418 27.5493174 186.147848 27.5493174 176.148861 41.6831927 187.383544 57.7441174 177.85443 57.7441174 171.501772 48.2245028 165.148861 57.7441174 155.797468 57.7441174 166.737468 41.8589046"></polygon>
                      <polygon id="right-bracket" points="197.580759 82.7268844 197.580759 1.93811009 191.725063 1.93811009 191.725063 0 199.828354 0 199.828354 84.6652459 191.725063 84.6652459 191.725063 82.7268844"></polygon>
                  </g>
              </g>
          </g>
      </svg>
    </div>
    <h1>It works! Synapse is running</h1>
    <p>Your Synapse server is listening on this port and is ready for messages.</p>
    <p>To use this server you'll need <a href="https://matrix.org/ecosystem/clients/" target="_blank" rel="noopener noreferrer">a Matrix client</a>.
    </p>
    <p>Welcome to the Matrix universe :)</p>
    <hr>
    <p>
      <small>
        <a href="https://matrix.org" target="_blank" rel="noopener noreferrer">
          matrix.org
        </a>
      </small>
    </p>
  </body>
</html>

@roke_julian_lockhart 님의 메시지를 확인했습니다

Discourse 쪽에서는 사이드바에 ‘General’ 항목이 보일 것이며, 거기에 답글을 달아주십시오.

@pmusaraj, 저는 하지 않습니다:

저도 채팅을 볼 수 없습니다. chat_allowed_groups 사이트 설정의 기본값을 변경하지 않으셨을 수도 있습니다. 그렇게 되면 TL1 이상의 권한을 가진 사용자만 접근할 수 있게 됩니다. (부트스트랩 모드가 제거되기 전까지는 테스트 사이트에서 기본값이 정상적으로 작동했지만, 이제 신규 사용자는 더 이상 TL1로 시작하지 않기 때문입니다.)

3개의 좋아요

tl0에게 권한을 부여했는데, 이제 보이나요? Moin, 감사합니다!

4개의 좋아요

@pmusaraj, 네. 감사합니다.

1개의 좋아요