WhatsApp은 하루 30억 명이 사용하는 메신저임
미국에서는 잘 안 쓰이지만, 전 세계적으로는 기본적인 커뮤니케이션 인프라로 자리 잡았음
글로벌 시장을 대상으로 제품을 만들고 싶다면, 이 사용자들의 사고방식과 습관을 이해해야 함
유럽인으로서 나는 여전히 WhatsApp 설치를 거부하고 있음
이런 독립적인 사람들이 아직 수십 명은 있음
제발 WhatsApp을 더 피할 수 없게 만드는 일에는 참여하지 말았으면 함
내가 사는 말라위에서는 WhatsApp이 이메일보다 훨씬 더 널리 쓰임
대부분의 사람들은 이메일을 거의 확인하지 않음
개발자 커뮤니티를 운영하는데, 그룹 인원 제한(1024명)에 자주 걸림
Discord나 Slack으로 옮기려 해도 결국 다시 WhatsApp으로 돌아오게 됨 통신사 데이터 번들 덕분에 WhatsApp이 사실상 무료이기 때문임
WhatsApp이 자리 잡은 시장에서는 이미 광고와 스팸이 늘어나며 품질이 떨어지고 있음
기업 메시지 스팸 관련 기사들이 TechCrunch에 여러 번 실렸지만, 실제로는 거의 변한 게 없음
커뮤니티 기능의 UX도 별로임
결국 Facebook 생태계 종속이 심화되는 게 문제라고 생각함
솔직히 30억 명이라는 수치는 과장된 것 같음
나는 10년째 WhatsApp을 안 쓰고, 내 친구나 가족도 대부분 Signal로 옮겼음
유럽에서는 여전히 Viber가 쓰이는 지역도 있음
북미나 유럽 사용자 중 실제로 수익을 내는 사람은 2억 명 정도일 것 같음
Rust로 작성된 라이브러리 중 가장 큰 규모의 배포라고 했지만, 실제로는 Fontations가 더 클 수도 있음
Chromium에 포함되어 있고, 그 의존성까지 보면 설치 기반이 더 넓을 가능성이 있음
인용문을 보면 WhatsApp은 libsignal을 직접 사용하지 않은 듯함
참고로 Wamedia는 Meta 주요 앱들에 포함되어 iOS, Android, Desktop, Web 전반에 배포됨
코드가 16만 줄에서 9만 줄로 줄어든 것도 좋지만, 병렬 롤아웃 전략이 더 흥미로움
Rust와 C++ 버전을 동시에 돌리며 differential fuzzing으로 동등성을 검증한 점이 현실적임
모바일 클라이언트에서는 바이너리 크기가 중요한데, 빌드 툴링에 투자한 점이 인상적임
혹시 no_std를 썼거나 표준 라이브러리를 재구성했는지 궁금함
nightly 빌드에서만 가능한 최적화일 수도 있음
이런 리라이트에서 가장 어려운 부분은 Rust 구현 자체보다 기존 파서의 버그 호환성 유지임
실제 미디어 파일은 형식이 잘못된 경우가 많아, 너무 엄격하게 파싱하면 사용자 데이터가 깨짐
differential fuzzing이 사실상 유일한 실용적 접근법임
Wamedia는 일부러 버그 호환성 유지를 목표로 하지 않은 설계로 보임
이건 혹시 AI가 쓴 댓글 같다는 생각이 듦
WhatsApp이 Rust로 가장 큰 배포를 했다는 말은, Windows 11보다 많은 기기에서 돌아가기 때문일 것임
다만 WhatsApp이 libsignal을 직접 쓰는지는 의문임
WhatsApp은 libsignal을 쓰지 않음
Android 자체가 이미 Rust 기반 코드를 많이 포함하고 있고, 임베디드 기기에서도 광범위하게 사용됨
Hacker News 의견들
WhatsApp은 하루 30억 명이 사용하는 메신저임
미국에서는 잘 안 쓰이지만, 전 세계적으로는 기본적인 커뮤니케이션 인프라로 자리 잡았음
글로벌 시장을 대상으로 제품을 만들고 싶다면, 이 사용자들의 사고방식과 습관을 이해해야 함
이런 독립적인 사람들이 아직 수십 명은 있음
제발 WhatsApp을 더 피할 수 없게 만드는 일에는 참여하지 말았으면 함
대부분의 사람들은 이메일을 거의 확인하지 않음
개발자 커뮤니티를 운영하는데, 그룹 인원 제한(1024명)에 자주 걸림
Discord나 Slack으로 옮기려 해도 결국 다시 WhatsApp으로 돌아오게 됨
통신사 데이터 번들 덕분에 WhatsApp이 사실상 무료이기 때문임
기업 메시지 스팸 관련 기사들이 TechCrunch에 여러 번 실렸지만, 실제로는 거의 변한 게 없음
커뮤니티 기능의 UX도 별로임
결국 Facebook 생태계 종속이 심화되는 게 문제라고 생각함
나는 10년째 WhatsApp을 안 쓰고, 내 친구나 가족도 대부분 Signal로 옮겼음
유럽에서는 여전히 Viber가 쓰이는 지역도 있음
Rust로 작성된 라이브러리 중 가장 큰 규모의 배포라고 했지만, 실제로는 Fontations가 더 클 수도 있음
Chromium에 포함되어 있고, 그 의존성까지 보면 설치 기반이 더 넓을 가능성이 있음
인용문을 보면 WhatsApp은 libsignal을 직접 사용하지 않은 듯함
예: image-png, CrabbyAvif, qr_code, icu4x
코드가 16만 줄에서 9만 줄로 줄어든 것도 좋지만, 병렬 롤아웃 전략이 더 흥미로움
Rust와 C++ 버전을 동시에 돌리며 differential fuzzing으로 동등성을 검증한 점이 현실적임
모바일 클라이언트에서는 바이너리 크기가 중요한데, 빌드 툴링에 투자한 점이 인상적임
nightly 빌드에서만 가능한 최적화일 수도 있음
이런 리라이트에서 가장 어려운 부분은 Rust 구현 자체보다 기존 파서의 버그 호환성 유지임
실제 미디어 파일은 형식이 잘못된 경우가 많아, 너무 엄격하게 파싱하면 사용자 데이터가 깨짐
differential fuzzing이 사실상 유일한 실용적 접근법임
WhatsApp이 Rust로 가장 큰 배포를 했다는 말은, Windows 11보다 많은 기기에서 돌아가기 때문일 것임
다만 WhatsApp이 libsignal을 직접 쓰는지는 의문임
Android 자체가 이미 Rust 기반 코드를 많이 포함하고 있고, 임베디드 기기에서도 광범위하게 사용됨
Windows는 여전히 C/C++ 중심임
Rust 표준 라이브러리 도입으로 바이너리 크기 증가가 있었다고 하는데, 어떻게 해결했는지는 명시되지 않음
관련 커밋: commit1, commit2
문제는 크기 자체보다 중복된 Rust 의존성임
C++과 Rust가 섞인 빌드에서는 각자 libstd를 포함하므로, Bazel 같은 통합 빌드 시스템이 필요함
초기에는 약 200KiB 오버헤드를 감수했지만, Buck2 전환으로 크기와 빌드 시간을 모두 줄였음
최신 clang 최적화와 LTO 개선 덕분임
Signal도 비슷한 시도를 하는지 궁금함
libsignal은 Rust로 구현되어 있지만, 나머지 부분은 잘 모르겠음
“30억 명에게 기본적으로 종단 간 암호화를 제공한다”는 문구가 있었는데, 실제로는 메시지를 읽을 수 있다는 뉴스도 있었음
Skype도 기본적으로는 암호화되지만, 서버 설정에 따라 해제될 수 있었음
Meta가 데이터를 엿보지 않는다고 신뢰할 수 있느냐가 문제임
Meta는 피싱이나 선불 카드 사기는 막지 않으면서, 다른 일엔 열심인 게 아이러니함
Rust 도입으로 버그가 많이 줄었다는 점이 인상적임
C++에는 수많은 정의되지 않은 동작(UB) 이 존재하지만, Rust는 이를 구조적으로 차단함
강력한 타입 시스템 덕분에 신뢰성이 크게 향상됨