Settings

Theme

Dino 0.3: Video calls and conferences – encrypted and peer-to-peer

dino.im

186 points by larma 4 years ago · 75 comments

Reader

xiaomai 4 years ago

I run a group chat for my family. I recently switched my server from running plain Prosody to Snikket. People with phones use the Snikket android app, but my kids that are too young for phones join in with Dino. Dino is a really nice client. Snikket is pretty good as a phone client... I think maybe there is a way to get push notifications working through the standard Android infrastructure which would be an improvement, but I haven't done that yet.

I guess the functionality isn't better (let's be honest, it's probably worse) than the proprietary alternatives, but for now the family is happy with it and I feel good about the extra privacy / lack of advertising / etc.

Really appreciate all the people that put in the work to make this possible. Great work Dino team.

  • toastercat 4 years ago

    > but my kids that are too young for phones join in with Dino

    Curious about this, since it seems to imply your kids use Linux desktops. How has that worked out?

    • xiaomai 4 years ago

      Honestly, it's been pretty great. In general it's not something we think about much? Internet/chatting with friends/video games all just work (in terms of video games, they're mostly doing minecraft or pico-8 games... we try not to do _too_ much gaming anyway, but anything else they're doing is probably on the nintendo switch).

      My daughter recently has started to do more artwork on the computer (she's using a Wacom tablet with Krita). I don't know much about that world. Maybe there are way better tools and she'll want to switch to one of those in the future? (Is that an ipad? some Adobe software?). I figure as they get older and develop their own opinions we can revisit what types of computers/software they use, but for now things are going good.

      • darknavi 4 years ago

        I've never thought about having kids run a linux box, but as a non-linux daily driver I think it'd be quite interesting.

        Looking back on my youth I think I'd be concerned with my kids installing bloatware, malware, etc. I feel like that whole genre of software would be much more challenging to install, which leaves me at two outcomes:

        1) They don't install bloatware/malware. Excellent! 2) They figure out how to install bloatware/malware. Still pretty great as that means they are learning their environment.

        I think being technically literate with your daily driver computer is crucial to daily success, so either way I think kids would do fine.

      • hkt 4 years ago

        I can second this: my darling offspring has a raspberry pi and thrives on it - he has never used OSX or Windows. Just Android (on a tablet) and Raspbian.

    • JeremyNT 4 years ago

      Not the OP, but I gave my daughter a Linux laptop as her computer running Arch Linux. I guess she got it at around age 7 (she's 10 now).

      No issues with it. The (IMO, kind of sad) reality is that almost everything she needs to interact with is either web or cross-platform electron. The only real exception here is Zoom, which has a native linux client. She doesn't really need to understand much detail to use the machine.

      She used GNOME before she ever saw Windows. We switched school systems and now she has a Windows laptop at school and her Linux laptop here, which she switches back and forth between without any trouble.

      The only usability quirk is the LUKS FDE decryption phase, where she has to enter in her password before the system starts. There's no GUI and bad feedback on when she's typing, so it's confusing. But she understands what to do now and usually has no trouble (you might be surprised at how flexible kids are).

puggsy 4 years ago

Great! Dino is my XMPP client of choice, it's good to see a new release.

My partner and family use https://quicksy.im/ which is an XMPP client that uses their phone number as username, to give it a "convenient as WhatsApp/Signal" feel.

I run the mobile UI branch https://github.com/dino/dino/tree/feature/handy on my Pinephone.

  • nicoco 4 years ago

    Hey! I am considering buying a pinephone but fear I am not enough of a hacker, an XMPP is one of the few things I need in my pocket computer. How hard is it to get Dino working on the pinephone? Do A/V calls work?

    Any general feedback on the pinephone? Is it your main smartphone?

    • puggsy 4 years ago

      The master branch as Dino is not suitable for mobile use, since its UI doesn't scale down. The feature/handy branch is needed.

      I haven't seen A/V calls working, but I know compatibility is being worked on. Audio calls will work before video calls.

      The Pinephone is a breath of fresh air, but it's not yet ready for casual use by techies.

      Pinephone is too slow to be my main phone. I'm looking forward to Pinephone Pro, which is fast enough, being able to reliably sleep.

      • ryukafalz 4 years ago

        Even aside from speed, the original PinePhone isn't exactly usable if you want to use an XMPP client like this. It gets decent battery life by sleeping, but while it's asleep it'll stop receiving messages via XMPP, which... if that's your primary communication method, is not ideal.

        I desperately want to daily drive a Linux phone again, but the current batch just isn't there yet.

        • nicoco 4 years ago

          >while it's asleep it'll stop receiving messages via XMPP

          Isn't there any API (? or something) for apps to run in "minimal" mode, to wake up the phone when needed? Does this also mean that it's not possible to have the phone notify you when you receive an email in sleep mode?

          • ryukafalz 4 years ago

            > Isn't there any API (? or something) for apps to run in "minimal" mode, to wake up the phone when needed?

            Ubuntu Touch is the only distro that has a mechanism like this, and my understanding is it doesn't run that well on the PinePhone. The rest will wake up for an incoming call or SMS, but otherwise will stay asleep.

            > Does this also mean that it's not possible to have the phone notify you when you receive an email in sleep mode?

            Currently, AFAIK, yes.

        • voltagex_ 4 years ago

          Come on now, it hasn't been there since the OpenMoko, even the N900 wasn't great compared to say the N95.

          I have pretty much given up on the idea of running an "open source phone", unfortunately.

otachack 4 years ago

For a second I thought I read "Deno" instead of "Dino" and got extremely confused at why Deno was going into the video chat space.

Anyways, nice milestone for Dino! I still gotta try out the solution one day.

  • messe 4 years ago

    Same, I thought maybe the latest Deno version had enhanced WebRTC support or something of that ilk.

solarkraft 4 years ago

I love Dino! I want to tell all my friends to install it on their ... oh. Oh no. They use macOS and Windows.

I don't mean to be a downer, but if you want to reach a lot of people with your amazing software (not saying that you have to, but it seems like one of the intentions of the project), it's a good idea to get them where they already are.

Side note 1: Vala/GTK could be an amazing app development platform if the cross-OS story was clearly (it can absolutely cover desktop OSes and I think even phones, but how to do it isn't very clear and most GTK apps don't).

Side note 2: Dino seems to be co-developed by the guy who makes microG, another great piece of software (replaces Google services on Android).

Side note 3: It would be great to see an XMPP revival. Quality clients like Dino are a key part to this. An important part for that may be another standardization effort with a low number of groups of clearly defined XEPs to support some functionality (a huge problem appears to be the sheer number and fragmentation of XEPs).

  • larmaOP 4 years ago

    While Dino and all of its dependencies can be compiled and run on Windows and macOS, this process is tedious and GTK isn't really well-tested on anything but Linux, resulting in worse UX when not going the extra mile of doing targeted modifications for these platforms. This hopefully improves with the migration to GTK4.

    The XMPP Standards Foundation publishes a document once a year stating a set that decent XMPP clients and servers should implement. The current one, https://xmpp.org/extensions/xep-0459.html even has a specific section on calling (it doesn't cover group calls yet).

  • opan 4 years ago

    There are working Windows builds (in another repo, kinda beta still I think), not sure about macOS support. Probably just needs someone interested in working on it.

    • solarkraft 4 years ago

      Are there resources for this? If it's an effort of nothing more than a few hours I'd be interested in having a go at it. I consider it really important for a significant user base (and to generally bring free software to the people and eventually make switching to Linux smoother).

      • opan 4 years ago

        I'm not directly involved with the project, so I'm not sure on specifics. I would recommend stopping by the Dino MUC and talking to them.

  • app4soft 4 years ago

    > They use macOS and Windows.

    Here are Dino builds for Windows.[0]

    [0] https://github.com/LAGonauta/dino/releases

  • cxr 4 years ago

    > Vala/GTK could be an amazing app development platform

    Freedesktop folks should just standardize on Cocoa. With sufficient momentum, Windows would follow.

skyfaller 4 years ago

Ever since Google Talk stopped supporting Jabber, I quickly ran out of anyone to talk with. I talk with friends on Signal, I talk with FOSS projects on IRC or Matrix, and I occasionally set up ad-hoc video conferences using Jitsi Meet, but I have zero Jabber contacts left.

If you use Jabber today, who are you talking to and on what server(s)?

  • andrey_utkin 4 years ago

    Family and a few friends, on own server.

    It seems to be a good fit for families. Or rather, families are a good fit for any sane, sustainable technology. Long span of time, lots of mutual transparency, plenty of in-group communication inside and outside the chat technology.

    No problems characteristic for big-tech (account seizures, hardware platform restrictions). No problems characteristic for free-for-all public servers (spam, vandalism).

  • opan 4 years ago

    I got into XMPP in just the last few years, after already using Matrix (and still using IRC also).

    XMPP for me is mostly internet friends. It's quite popular on the fediverse (they also happen to commonly dislike Matrix, although many are on both like me). Lots of people who are into technology and anime, basically.

    I've noticed most free software projects don't have an XMPP room unless they are literally XMPP projects like Gajim and Dino. Pine64 (as well as many other places) will have a bridge between IRC and Matrix, but I've only seen one or two IRC channels that also bridge XMPP that I can remember. Many people aren't even really aware of it. I don't know the actual stats, but it often feels like XMPP is actually less popular than IRC these days.

    • zaik 4 years ago

      I think XMPP is more popular to use with friends and family rather than public channels. Btw you can join IRC channels from your XMPP client: https://joinjabber.org/tutorials/transports/irc/

      • opan 4 years ago

        I'm aware of being able to join IRC from XMPP, but the thing that still makes IRC the best for me is actually the client selection. irssi is just leagues ahead of Gajim, Dino, Profanity, Conversations, Element, Nheko, FluffyChat, etc. I really haven't seen any chat client nearly as good as irssi besides weechat. It's like no one who made good IRC clients left IRC, so there weren't people to make good XMPP or Matrix clients.

  • larmaOP 4 years ago

    Friends and family all use XMPP via Conversations and/or Dino. I also join a few channels of FOSS projects on Matrix or IRC with a bridge. You can even bridge calls to SIP and PSTN via https://jmp.chat/.

    I run my own server (any 5 bucks VPS can do), but there is a large number of public servers that also work good. Make sure to pick one with a good ranking at https://compliance.conversations.im/

  • Jiejeing 4 years ago

    I run my own server, I am talking to some friends on https://jabber.fr and I refer non-technical people (family, mostly) to https://quicksy.im.

    (I will add that Jitsi Meet kind of counts as Jabber use, although not in the traditional sense)

  • zaik 4 years ago

    Since WhatsApp changed its ToS last year I deleted all messaging apps except Conversations and started using XMPP exclusively. Basically everyone I talk to regulary is now reachable via XMPP.

  • puggsy 4 years ago

    I use Jabber everyday to talk to my partner and family. They use https://quicksy.im/

  • Thovthe 4 years ago

    I use it for sms and phone calling through jmp.chat. Though I'm afraid that carriers are going to sandbag it if it gets popular.

dgrin91 4 years ago

It looks like Dino is built on top of XMPP. How can you be both XMPP and peer to peer? Doesn't XMPP mean there is a server in the middle (even if its not centralized)?

  • zaik 4 years ago

    The server is used to exchange connection information. The A/V call itsef is peer to peer (or relayed via TURN server if they cannot establish a direct connection).

  • ta-webrtc 4 years ago

    In order to establish a peer to peer video call you need a signaling channel that both peers know about.

  • NTARelix 4 years ago

    > Calls are end-to-end encrypted and use a direct connection between the peers whenever possible, but fallbacks are also in place.

    I imagine this means the 2+ clients use XMPP to negotiate direct connections to one another that are better suited for audio/video streaming.

Jiejeing 4 years ago

This is great, I knew this was in development for a while, but I did not expect it to land this early. 1 to 1 audio/video calls using Conversations and other apps work already perfectly, but group video chat using standardized technology was really missing from the ecosystem, I am glad that this is now done.

app4soft 4 years ago

For those who want to try Dino here is (text?) chat:

> https://chat@dino.im?join

In Dino (Desktop) window click on [+] in left-top corner on app title bar, and then input channel to join as next:

    chat@dino.im
Then click "Next" button.

N.B. Here is offical announcment of Dino 0.3 release thread on Mastodon.[0]

[0] https://fosstodon.org/@dino/107787204408646020

bufferoverflow 4 years ago

The thing about video call apps is - seemingly, no matter how great the internet is on both ends, the video quality is still laggy and blocky. We have 30 Mbps on both ends. That's supposed to be near bluray quality. But that's not what we get. Even when I use the crappy 720p camera, what I get over the internet is much worse.

From our testing, Whatsapp is one of the worst. Zoom is in between. Hangouts is usually decent. But again, nowhere near bluray quality.

  • crowbahr 4 years ago

    I was shocked at how good the quality was in facetiming my in-laws on my wife's ipad. I've been using hangouts, signal, slack and duo for video calls and they were never nearly as crisp and nice as facetime was.

    I think Discord was similarly good but... Discord just isn't what I'm going to voice call family on... realistically ever.

    • puggsy 4 years ago

      Apple has more control over its platform and can ensure video acceleration works for all participants.

      Conference calls with a central server are particularly suspectible to "lowest common denominator" issues.

  • southerntofu 4 years ago

    There are different considerations: do you have 30Mbit/s upload or download? do you have hardware acceleration available to make a smaller/better encoding? is it actually used by your app? Otherwise, your app may restrict encoding quality settings so that it can run on many more devices (maybe that's configurable).

    Also to consider: where does the connection flow through? if you're both going through Google/Amazon servers (SFU, etc), it's quite possible your ISP will provide a route with a decent bandwidth. It's also quite possible if you establish a direct P2P link or through a route your ISP considers less important, they'll slow it down or simply oversubscribe this route.

axiosgunnar 4 years ago

What is the latency on this? Still looking for a call solution that makes you feel like you‘re in the same room…

  • ta-webrtc 4 years ago

    Latency is as good as you can do when doing peer to peer calls, the trade off is bandwidth (and CPU, but mostly bandwidth).

    Latency and non-terminated encryption (end-to-end, not point-to-point) is great, and for calls with 3 or fewer peers the stability is fine. More peers than that and you probably want a media router in the mix, which adds some latency (all the calls have to route through a central server) and the server typically has done termination of the encrypted call streams as it does its routing.

    • larmaOP 4 years ago

      > server typically has done termination of the encrypted call streams as it does its routing.

      Dino already supports some kind of "double encryption", where even if DTLS-SRTP is terminated at a media routig or bridging server, there is another SRTP encryption layer. This allows for end-to-end encryption even when DTLS-SRTP is terminated by a server for WebRTC compliance (as WebRTC requires to encrypt using DTLS-SRTP even if transported media was already encrypted through other means).

    • astrobe_ 4 years ago

      I didn't find a meaningful difference between "end-to-end" and "point-to-point", except for a not-sourced stackoverflow post [1] and definitions for payment services standards. What is the terminology you use?

      [1] https://stackoverflow.com/questions/10202143/what-is-the-dif...

      • southerntofu 4 years ago

        I think the parent was referring to all participants encrypting stream for the video router, who then would reencrypt to its final destination. End-to-end means the video doesn't get decrypted in the middle.

    • southerntofu 4 years ago

      It's definitely possible to route encrypted streams, see also how Jitsi does it:

      https://jitsi.org/blog/e2ee/

      • app4soft 4 years ago

        > This is what end-to-end encryption should look like!

        > Published on: April 12, 2020 by Emil

        > Work in Progress!

haunter 4 years ago

Is there a way to run this on macOS?

2Gkashmiri 4 years ago

is setting up and maintaining an xmpp /jabber server and clients easier/difficult than matrix?

i have been mulling the switch to a selfhosted thing for some time now but i need something that can run on low resources but isnt overly complicated

  • someoneelse9 4 years ago

    XMPP server is slightly easier to setup and it requires far less resources than matrix. I think that in the server aspect XMPP is superior, in both performance and scalability (ejabberd).

    The client setup in XMPP and Matrix seem to have the same usual steps (username and password). No big differences here, other than Element defaults to matrix.org to create an account (which contributes to centralization).

    I'd say that XMPP clients are generally better than matrix's ones. Maybe because matrix is an immature and younger protocol, but Element seems to be the only client that implements everything and UI is confusing and it's electron.

    And a personal preference, I like using my GPG keys to encrypt my conversations when possible in XMPP. This wouldn't be possible in matrix.

  • EuAndreh 4 years ago

    I've used the prosody XMPP server and the synapse matrix server.

    IMHO, the basic prosody setup is a bit simpler, but with the "extra" configuration such as retention policies, they're equal in setup effort.

    On the other hand, prosody is an order of magnitute easier to maintain and administer. synapse is too brittle, and its not uncommon to use gigabytes of memory, while prosody's resource usage is barely noticible.

    On the occasions that I wanted to look under the hood and skim the code, I felt more confortable understanding and hacking on prosody.

    Overall, I found synapse to be needlessly complex and big. I don't know if that's because it's the first implementation and it accumulated a bunch of legacy code, or that's something that comes with Matrix itself.

    • 2Gkashmiri 4 years ago

      cool. so, would xmpp run on a 512mb vps? what about your average storage required? 20gb? 40?

      could we say, define 2-3 days attachment retention rule to save on space?

      • Zash 4 years ago

        In the past, people have squeezed Prosody onto their routers with 32MB RAM and the like. Today you might struggle fitting the Modern XMPP experience into that, but 512M or 1GB should be plenty.

        As for storage, it really depends on how many and how big pictures or other files are shared. Clients like Conversations will compress images into a few hundred KB by default, so you can imagine how many will fit into even 1GB. Text messages take even less space.

      • roub 4 years ago

        Totally possible. Running Prosody on Debian 11 Host including coturn and also running mumble and still 250MB free RAM of 512MB.

  • Zash 4 years ago
soheilpro 4 years ago

It's written in Vala [1]. I had never heard of it before.

[1] https://en.wikipedia.org/wiki/Vala_(programming_language)

  • larmaOP 4 years ago

    Vala is a nice, modern niche language for GTK development. It certainly can also be used for other things, e.g. it can be compiled to WASM, but GTK development really is focus. Also the language is actively developed and getting updates with new feature. While originally inspired by C# it nowadays also incorporates features known from other modern languages like Kotlin.

halpert 4 years ago

P2P group video calls don’t work well unfortunately. Most people barely have enough upload bandwidth to upload one video stream. Needing to upload a stream per peer is a nonstarter for most people.

  • puggsy 4 years ago

    From the article:

    "Peer-to-peer calls require more bandwidth than calls routed through a server and are thus not suited for a large number of participants. In the future, we plan to also develop calls via a forwarding server to solve resource issues on the client side and to allow for calls with more participants."

    • halpert 4 years ago

      It's even worse than that. P2P means that connection differences between peers also makea difference. User A might see users B and C, but user B might on see A due to a connection difference between user B and C. It is very annoying to enter a group chat and hear:

      User B: Is user C's stream dead for anyone else? User A: I see user C. User C: Sorry, what? I'm right here.

      Honestly, other than a 1-1 chat, I can't think of a situation where p2p is worthwhile. Even then, it's almost always better to use an SFU.

integricho 4 years ago

What happened with tox.im , are the two products competitors?

  • southerntofu 4 years ago

    Tox is peer-to-peer chat, Dino uses the federated Jabber/XMPP protocol. So on Tox your identifier is your public key, while on jabber you get a user@server address (which is usually the same as your email if your provider supports both protocols). Nowadays people interested in P2P chat mostly use jami.net or briarproject.org, both really cool. Briar in particular uses both a gossip protocol for local conversations (like Secure ScuttleButt protocol) and Tor onion services for internet-wide communications.

    Both XMPP and Matrix servers can also be run on your own device (p2p): in XMPP world it's more common for ZeroConf LAN chat (to chat with other peers/servers in the LAN, not internet servers), while Matrix project is spending some efforts on Pinecone based on libp2p/yggdrasil to punch through NAT and (if it succeeds) offer proper P2P internet-wide. They have different trade-offs: XMPP protocol is more lightweight but less consistent about eventual delivery of messages when some servers can be offline at any given moment (it was initially designed as a live message-passing protocol).

exelib 4 years ago

Aren't p2p apps expose IPs of peers?

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection