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.
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.
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.
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.
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).
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.
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?
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.
>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?
> 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?
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).
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).
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.
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).
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)?
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).
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.
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.
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/
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.
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)?
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).
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.
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.
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.
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.
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.
> 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).
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?
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.
Yup I did. OS integration not great (resizing the window is slow, maximizing), but at least MAM works (couldn't get it to work in beagle for an unidentified reason [1])
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.
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.
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.
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.
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.
"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."
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.
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).
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.