Show GN: KiwiTalk - Tauri(Rust) + SolidJS로 구현한 오픈소스 KakaoTalk 클라이언트
(github.com/KiwiTalk)배경
- 카카오톡은 대한민국에 사는 사람이면 99% 이상이 사용하는 메신저
- 하지만 공식 클라이언트는 Windows와 macOS만 지원, Web이나 Linux는 전혀 지원되고 있지 않음 (Android나 iOS는 제외)
- Wine을 사용하여 억지로 구동할 수는 있지만, 오류로 인해 실행되지 않고 꺼지거나, 심각한 버그로 인해 실사용할 수 없음 (채팅방을 로드할 수 없고, 큰 파일이나 이미지를 내려받을 수 없음)
- 따라서 Linux 환경에서도 잘 작동하는 클라이언트를 만들기로 함
개발
- 초기에는 React.js와 nw.js를 사용했음. 하지만 코드가 지나치게 비대해져서 관리하기 힘들어짐 (특히 React의 상태 관리와, nw.js의 JavaScript 컨텍스트 개념은 문제를 유발하기 너무 쉬웠음)
- 이 문제를 해결하기 위해, 최근 SolidJS와 Tauri로의 재작성을 진행했음
- 현 상태에서는 로그인 및 채팅 알림 등의 간단한 동작이 가능
앞으로...
- Windows나 macOS 카카오톡 클라이언트의 동작을, 가능하다면 모두 동일하게 작동하도록 구현할 예정
- 다만, 구현해야 하는 기능이 너무 많고 비공개 프로토콜에 관한 연구도 많이 필요함
- 기여나 피드백 주시면 정말 감사하겠습니다!
이런 시도 너무 좋습니당 카카오에서 왜 지금까지 이런걸 직접 만들지 않았는지 참,,,, 윈도우폰 카카오톡 앱 담당 개발자가 1명이었다는 거 보면 비주류 플랫폼(리눅스가 비주류는 아니지만..)엔 정말 무관심하네요
카카오가 긍정적으로 반응해주길 기대하구요... 이런 움직임이 카카오가 좀더 오픈된 환경을 만들어주는데 좋은 자극제가 되길 바랍니다. (API를 오픈한다던지...)
와우.. 리눅서로써 너무 꿀같은 정보네요..! 집에가서 한번 써보겠습니다. 프로토콜에 대한 역공학을 하지 않았을까 생각되는데 오픈소스로 공개되었을때에 문제의 소지가 있지 않을지 걱정되긴 하네요.
키위톡 개발 방향 자체는 좋다고 생각됩니다. 다만, 이러한 비공식 클라이언트는 엄연한 카카오의 운영 정책 위반입니다. 이에 대한 대책이 마련되어 있는 건가요?
카카오 측에 부정적인 영향을 주지 않도록, 최대한 원본 클라이언트의 동작을 모방하려고 합니다. (버그성 동작마저도)
다만, KiwiTalk은 카카오 측에서 만들거나, 인가한 클라이언트가 아니기 때문에 반드시 사용자 본인의 판단과 책임 하에 사용하셔야 합니다.
KiwiTalk이 원본 클라이언트와 상이한 동작을 할 경우 이용자의 계정에 불이익이 있을 수 있기 때문에,
최대한 원본 클라이언트의 동작과 동일하게 동작하게끔 구현하는 것이 목표입니다. 말씀 감사합니다!
제가 이쪽에는 문외한이라 바보같은 질문일수도 있지만... 혹시 웹브라우저 익스텐션 형태로 사용이 가능할까요? 윈도우나 맥에 native client가 있기는 하지만, 저는 윈도우나 맥에서도 웹브라우저에서 사용이 가능하다면 매우 좋을것 같습니다. 또, 크롬북에서도 아주 유용하게 쓰일 수 있을것 같아요. (물론 크롬북이 native linux 프로그램을 실행하수는 있지만, 웹기반이면 더 쉽게 쓸수 있을것 같습니다.)
좋아보이네요! 근데 혹시 법적인 문제는 없나요? 그러니까 혹시 카카오톡 이용 조항에 관련 내용이 있어서, 프로젝트 공헌자나 단순이용자의 계정이 정지되어도 권리를 주장할 수 없게 된다거나 하는..
프로젝트 기여자라고 해서 따로 정지는 할 수 없는 것으로 압니다만, KiwiTalk에서 원본 클라이언트와 상이한 동작이 발생할 경우 계정이 정지될 수 있습니다.
따라서 원본 클라이언트의 버그성 동작까지도 최대한 동일하게 만드는 것이 목표입니다.
(Linux 기기에서의 정상적인 사용이 목표이므로)