1 puan yazan GN⁺ 3 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Bitchat, Bluetooth mesh ağı ile internet tabanlı Nostr'u birleştirerek hesap, telefon numarası veya merkezi sunucu olmadan çalışan iOS·macOS için merkeziyetsiz bir P2P mesajlaşma uygulamasıdır
  • Çevrimdışıyken Bluetooth LE ile en fazla 7 atlamalı yönlendirmeyi destekler; internete bağlandığında ise 290'dan fazla Nostr relay'i üzerinden dünya geneli ve konum tabanlı kanallara bağlanır
  • Özel mesajlar için önce Bluetooth'un Noise Protocol'ünü kullanır; bu mümkün değilse Nostr'un NIP-17'sine geçer; ikisi de mümkün değilse gönderim yapılabilene kadar kuyruğa alınır
  • geohash hassasiyetine göre blok, mahalle, şehir, eyalet/il ve ülke düzeyinde kanallar sunar; ayrıca /slap, /msg, /who gibi IRC tarzı komutlar ve verileri üç kez dokunarak silen Emergency Wipe desteği sağlar
  • Proje public domain olarak yayımlandı; Xcode veya just ile çalıştırılabilir, ancak gerçek cihaz derlemesi için Developer Team ID ve entitlement ayarları gerekir

Bluetooth ve Nostr'u birleştiren taşıma yapısı

  • Bitchat, Bluetooth mesajlaşma ile Nostr'u birleştiren yerel bir iOS·macOS uygulamasıdır ve App Store üzerinden de sunulmaktadır
  • Bluetooth mesh ağı, internet olmadan yakındaki cihazları otomatik olarak keşfedip bağlar
    • Bluetooth LE ile doğrudan P2P iletişim kurar ve yakındaki cihazlar üzerinden mesajları en fazla 7 atlama boyunca iletir
    • Noise Protocol tabanlı uçtan uca şifreleme ve forward secrecy desteği sunar
    • Bluetooth LE kısıtlarına uygun sıkıştırılmış ikili paket formatı ve pil için optimize edilmiş duty cycle kullanır
    • mesh #bluetooth kanalı; protesto, afet ve uzak bölgeler gibi çevrimdışı iletişim senaryolarını hedefler
  • Nostr taşıma katmanı, dünya genelindeki 290'dan fazla relay üzerinden internet mesajlaşması sağlar
    • geohash koordinatlarıyla konum tabanlı sohbet odaları oluşturur ve her bölge için yeni geçici şifrelenmiş kimlikler kullanır
    • Özel mesajlar NIP-17 gift wrapping ile korunur
    • Konum kanalları internet bağlantısı gerektirir ve yerel topluluklar, yerel etkinlikler ve bölgesel tartışmalar için kullanılabilir
      • block 7 karakter: şehir bloğu
      • neighborhood 6 karakter: semt·mahalle
      • city 5 karakter: şehir
      • province 4 karakter: eyalet·il
      • region 2 karakter: ülke·büyük bölge
  • Özel mesaj yönlendirme, kullanılabilir taşıma yöntemini otomatik olarak seçer
    1. Mevcut bir Noise oturumu kullanılabiliyorsa hızlı ve daha gizli Bluetooth bağlantısı önceliklendirilir
    2. Bluetooth kullanılamıyorsa alıcının Nostr açık anahtarı ve NIP-17 kullanılarak relay ağına gönderilir
    3. Her iki yöntem de kullanılamıyorsa mesaj kuyrukta tutulur ve bağlantı kurulduğunda otomatik olarak iletilir
  • LZ4 mesaj sıkıştırma, uyarlanabilir pil modu, ağ optimizasyonu, IRC tarzı komutlar ve tüm verileri üç kez dokunarak anında silen Emergency Wipe de sunulur
  • Ayrıntılı protokol için Technical Whitepaper incelenebilir

Derleme, yerelleştirme ve lisans

  • Xcode'da çalıştırmak için depoda şu komutlar kullanılır
cd bitchat
open bitchat.xcodeproj
  • Gerçek cihazda çalıştırmak için yerel yapılandırma ve kod imzalama hazırlanmalıdır
    • cp Configs/Local.xcconfig.example Configs/Local.xcconfig ile yapılandırma dosyası kopyalanır
    • Yeni dosyaya Developer Team ID eklendiğinde varsayılan Bundle ID chat.bitchat.<team_id> olarak ayarlanır
    • entitlement içindeki group.chat.bitchat değeri elle group.<your_bundle_id> olarak değiştirilmelidir
  • macOS'ta brew install just sonrasında just run ile kurulum ve kaynak kod çalıştırılabilir
    • Ardından just clean çalıştırılırsa mobil uygulama derleme ve geliştirme için başlangıç durumuna geri döner
  • Yerelleştirme kaynakları uygulama ile paylaşım uzantısı arasında ayrılmıştır
    • Temel uygulama metinleri ve çoğul kuralları, bitchat/Localization/Base.lproj/ altındaki Localizable.strings ve Localizable.stringsdict dosyalarına eklenir
    • Paylaşım uzantısı metinleri bitchatShareExtension/Localization/Base.lproj/Localizable.strings içinde yönetilir
    • Anahtarlar, app_info.features.offline.title gibi niyeti açık edecek şekilde yazılmalı ve mümkün olduğunda mevcut anahtarlar yeniden kullanılmalıdır
    • Yerelleştirme değişiklikleri, xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build ile derlenerek doğrulanır
  • Proje public domain olarak dağıtılmaktadır; ayrıntılı koşullar LICENSE içinde görülebilir

1 yorum

 
GN⁺ 3 시간 전
Hacker News yorumları
  • Dün Radicle masaüstü istemcisini kurup yeni bir kullanıcı adı ve parola girdim ama hiçbir şey olmadı. Uygulamayı yeniden başlatsam da hesap oluşturma/giriş ekranını geçemedim; Radicle kullanımı benim için orada bitti

  • Kullanılabilirliği önemsiyorsanız libs.gms.location bağımlılığını yeniden gözden geçirmeli ve F-Droid üzerinden de dağıtmalısınız (https://gitlab.com/fdroid/fdroiddata/-/merge_requests/24907#...)

    • Depo yöneticisi PR incelemesini ve mesajlara yanıt vermeyi tamamen bırakmış gibi görünüyor. Devam etmek için muhtemelen birinin fork etmesi gerekecek
  • Fusion Festival'de Bitchat'i açıp dolaştım; yaklaşık 20 cihaz ve birkaç mesaj gördüm ama gönderdiğim mesajlara kimse yanıt vermedi. 80 bin kişi içinde 20 cihaz, hiç kullanıcı olmadığı anlamına gelmiyor ama çok da fazla değil; ayrıca en fazla 2 hop gördüm, bu da festival alanını kat edecek yoğunluk için yeterli değildi

    • Birkaç protestoda kullanıldığını ve şu anda Hindistan'daki CJP protestolarında da kullanıldığını biliyorum. Hindistan hükümeti GitHub'dan deponun kaldırılmasını da istemiş
    • En azından mesh Wi-Fi eklendi, ancak ölüm kalım meselesi olan protesto durumları dışında benimsenme hızı epey yavaş
      Uçakta yan yana oturmak için fazladan 50 dolar ödemek istemeyip grubunuzdan ayrı düştüğünüzde işe yarıyor
    • Böyle niş bir proje için 20 cihaz zaten oldukça iyi bir sayı
    • Gerçekten çalışıyor olması oldukça havalı. 30 bin kişinin olduğu bir festivalde arkadaşlarımı bulmak için AirTag getirmiştim ama tamamen işe yaramazdı
    • En son kullandığımda yalnızca ASCII art ile çizilmiş Hitler görselleri vardı. Yine de bir başlangıç başlangıçtır
  • BitChat ilginizi çekiyorsa, popülerleştiğinde ya da birlikte kullanacak birilerini bulduğunuzda hazır olması için şimdiden kurmaya değer. Kendim denediğimde Wi‑Fi veya mobil bağlantı olmadan mesajlaşmak gerçek dışı gibi hissettirdi

    • Kalabalık bir yere her gittiğimde açıp kontrol ediyorum. Ancak mesh olmayan internet sohbetinde geohash yerine yakınlık tabanlı sohbet olmasını isterdim. Geohash'te istediğiniz menzil için doğru ayrıntı düzeyini seçmek her zaman zor
      Üst üste binen geohash'ler de fena olmayabilir, ama telsiz gibi taraflardan yalnızca biri menzil içindeyse konuşmanın yarısını görme karmaşası yaratmasından endişe ederim. Mevcut geohash yaklaşık 1 acre'a kadar daraltılıyor; bu fazla hassas, ama 12 katlı bir üniversite yurdunun tamamı tek bir sohbet odası kullanacaksa faydalı olabilir
    • Bluetooth sohbet uygulamaları zaten var. Geçen yıl Avrupa'da bir Ryanair uçuşunda ayrı oturduğum arkadaşlarımla konuşmak için App Store'da bulduğum Berkanan'ı kullanmıştım; görünüşü berbat olsa da işlevi düzgün çalışıyordu
  • Radicle sitesi, bir Git depo platformu olarak ilginç bir tasarım sergiliyor. Tam genişlikli boşluklar, iyi kurgulanmış gezinme yapısı ve hoş kod render'ı hoşuma gitti

    • Rastgele bir Git depo URL'sini bağlayıp aynı biçimde gösteren bir servis yapılıp yapılamayacağını merak ediyorum
  • Bitchat, AOS'un projesi. Aynı AOS projesi olan ngit üzerinde yeniden barındırılmamış olması şaşırtıcı

    • ngit'te bir mirror olmaması biraz şaşırtıcı ama ana barındırma yeri olarak seçilmemesini anlıyorum. Çünkü insanların gerçekten bulabileceği bir yerde olması gerekiyor
      Nostr safçılığına kapılınca gönderilerinizi yalnızca 5 kişinin gördüğü sonuçlar sık yaşanıyor. Protokolü seviyorum ama kullanıcı sayısını artırmak istiyorsanız uygulamayı insanların zaten bulunduğu yerlere koymanız gerekir
  • Diğer merkeziyetsiz mesajlaşma ürünleri olan Nostr veya XMTP ile karşılaştırıldığında özel bir özelliği var mı merak ediyorum