Between 2000-2003, I worked on components of the cross protocol IM backend used by many of the multi-protocol messengers back in the early to mid 2000s (eg: Adium, Trillian, Fire, Ayttm, and more). Each of the frontends had different ways to integrate. Trillian used 2 processes with TCP communication between them to get around the GPL licensed backend), Fire, Adium, Ayttm released everything under the GPL.
Eventually most clients moved to using libpurple as the backend (developed by the team behind Gaim), but the devs also started getting older, busier, and having other responsibilities outside of work. The only apps to survive were those that had a business model that allowed them to reuse open source code without having to release any of the code they developed themselves.
I personally stopped working on instant messaging in April 2004, the night before I became a Yahoo employee, though I continued blogging and doing conference talks about the experience:
- https://tech.bluesmoon.info/2004/09/fallback-messaging.html
- https://tech.bluesmoon.info/2011/05/story-of-george-ayttms-m...
- https://tech.bluesmoon.info/2010/11/stream-of-collaboration-...
>(from the website) we send each user a Jailbroken iPhone with the Beeper app installed which bridges to iMessage
Aren't you worried about Apple's reprisal ?
Also it might be worth adding a word about the privacy of the messages. Am I correct that the end to end encryption goes out the window and each Matrix connector can see the messages in plain text? I think it's not so much an issue as long as it's clear to the user, and that they pay for you to keep their private messages private.
Forwarding all my messages to some 3rd party service doesn’t break E2E anymore then forwarding them to my friends.
Is there really something that makes iMessage so difficult to reverse engineer that this is considered economical? People were able to write AIM clients 20 years ago, what special trick has Apple used?
The value is in the eye of the beholder... FWIW I used to be a pretty well paid software engineer, and I run as much of my personal IT as possible... so for me, the $10/mo is worth it to save seconds 100s of times per month and make hours of experience per month pleasant.
Awesome work Eric, Tulir, and the whole Matrix team too!
I have quite a lot of experience with Linux and server maintenance. And I know if I put enough time to this, I'll get everything to work eventually. I'm still saying that paying money for somebody else to do this feels like a nice investment at this point. The task of doing everything by yourself is quite tricky.
It is a lot of work, some of the documentation can be a bit tough if you don't know how things work together and especially the DNS setup can take a bit of time to get the federation working.
For some, $10/month is a nice way to have all that worry-free.
I'm not sure if I'd ever pay $10/mo for a service whose main selling point is running what are essentially reverse-engineered hacks. Some of the integrations use the official available API (like the Telegram one) but others (like the Whatsapp and Signal ones) run on altered web client code. Furthermore, in most commercial chat systems, alternative clients are usually not allowed and can lead to a ban of your account if the server considers you a bot.
The product is a worthy attempt at fixing the mess that is modern chat solutions, but from my experience I just don't trust the system enough to switch.
Also keep in mind that any e2e encryption platforms like Signal and Whatsapp provide is made worthless if you use a bridge; I haven't seen any bridge use Matrix's e2e encryption yet and your messages are all being decrypted on the server regardless.
It makes zero sense that you don't have access to the messages.
If the basic concepts of "E2E key exchange" and "pass this encrypted message" exist at all points, I see no fundamental problems with having E2E encryption across different networks. I can see potential for lots of the normal practical small problems but it could fundamentally work.
I’d appreciate a blog post explaining the architectural choices here.
Ideally I would not want to run the whole stack if I understand how the E2E encryption is managed.
There are two encrypted channels: client<->bridge, and bridge<->WhatsApp. The bridge can read the decrypted text, and the comment I replied to is a lie.
This jumped out at me:
>we send each user a Jailbroken iPhone with the Beeper app installed which bridges to iMessage
I couldn't tell if that was some sort of joke or if it meant something different to how I was reading it?
Being open source is great, but to be honest I lack the time (and expertise) to see how all the integrations work. A page that describes a high level overview of how this works exactly might build more trust.
Good luck!
I remember chatting with the Meebo founders about some of this. They didn't really have an answer to why AIM, YIM, and MSN Messenger wouldn't block them beyond it being bad for their networks. On how they'd make money, I don't remember hearing any interesting answers. They never really figured out the money thing and ended up getting acquihired by Google.
The did have a crazy-impressive web UI for the mid-2000s; for a while, that know-how was probably their most valuable asset. The need and the market still (and have always) kinda exited, but the players changed a lot in the last 15 years. One of their business ideas was to pivot into a commercial support chat app. People use them today, so maybe they were before their time, or maybe B2B was never in their DNA.
It’s why apps like desktop Chrome have extremely aggressive automatic-update schemes which are near-impossible to disable if you’re ever connected to the internet.
iOS users upgrade pretty quick, but Android users don't. There are lots of phones with not very much storage, so upgrading is painful for users and they turn off auto-updates and don't update frequently.
And when you add on end of life platforms that have enough users you don't want to cut off, but not enough users that you want to do active development, or the platform owner won't sign packages anymore, you have to support some clients for a long time.
It took me multiple times searching that page to find the "$10 monthly fee" hidden in the FAQ section. You desperately need an obvious pricing section.
https://www.statista.com/statistics/668966/mobile-average-re...
But $10/month is steep, given that in practice you're paying that much just for the convenience of having your (pre existing chats) in the same app.
What I don't get is that hosting your own bridges requires the same $10/month subscription. If there was a $2/month fee for "power users" instead, letting you host your own... I would most likely get a subscription for the convenience of using their better integrated software.
Those features may require extra engineering and support effort, not less.
(Even if these changes actually reduced the cost of service delivery, it's usually a small part of the price. In consumer SaaS, you're not paying for the cost of goods sold, you're paying for everything else - particularly software engineering, support, and marketing AKA customer acquisition. A reasonable analogy is a restaurant, where 20-30% of the meal price goes to food costs. In consumer SaaS, the "food cost" is often 10%-20% of the "meal price.")
the website says the second self-hosting option is free
They hide because it makes sense to try the product, realize how awesome it is to have all the conversations in one central place, and make you pay for it afterwards - which makes sense.
In general, my biggest issue with the Matrix community is that they chose to build something new, instead of fixing something existing. Granted, at the time when Matrix started, XMPP wasn't fit for the mobile revolution. But instead of improving the XMPP standard (which other people did afterward), the Matrix people decided to build something new from the ground up. They took a few different design decisions, but in my opinion, nothing that would justify building a competing solution and splitting the already thin developer community.
Now we have too solutions, both failing to find significant adoption. I understand that the matrix people probably built their eco system as a hobby, so who am I to criticize them. I just feel so depressed, seeing so much work being done on a very important subject, not fulfilling its potential due to missing focus.
Last company I worked at that used it internally had thousands of employees in IT and still considered maintaining the jabber server not worth it - a million XEP extensions cannot bring it to the same level as a modern chat client. On every matrix post the xmpp crowd comes out of the woods, but what have you got to show? What’s the best cross-platform or web client for it right now? They all look like half-baked ports of long abandoned QT apps made for Linux and still don’t support syncing/multi-presence well.
A rework of the FOSS messaging ecosystem was much needed, and Matrix was the one to deliver it and not XMPP. I say the winner takes the crown, especially when the end result is more coherent for users.
The fact is that sometimes the kind of tool you need is a solid monolith built from the ground up with specific objectives in mind, and not a loose accretion of small utilities and extensions.
Matrix is coherent if you use the reference server and clients. But so is XMPP if you get them from the same source. And the Matrix reference server needs pretty powerful hardware.
That is not a bug, its a feature (or so the Matrix people say).
In fact, part of the Matrix design is a fat server which has a lot more responsibilities by default than an XMPP server. However, I guess a full-featured XMPP server (with MAM, Push, etc.) probably has similar requirements.
XMPP with MAM and push doesn't have similar requirements.
* Dendrite ("the rewrite") uses about 5-10x less RAM than Synapse; it's in relatively late beta and you can see for yourself today. For instance, dendrite.matrix.org is currently sitting at 480MB of RAM, despite being in ~5000 rooms spanning ~150K users.
* Matrix is coherent no matter what clients you use, given there is only one version of the spec (and as it happens, we haven't broken backwards compatibility yet). Sure, some implementations might not have implemented all the features, but the features they do implement (assuming they're not buggy) will work reliably with any other client or server out there.
It's fine to dislike Matrix and pine for XMPP, but please don't spread FUD.
I'll like Matrix when it can replace XMPP. Dendrite sounds like a step in that direction when it's mature.
Please stop spreading FUD about XMPP.
Whereas Matrix ensures that there is only ever one way of doing a given operation at any point, and those operations are backwards compatible, because there's only one spec. Obviously the client and server you're talking to needs to have actually correctly implemented the bits of the spec that you're trying to use - but there's no openpgp v. OMEMO or rival file transfer mechanisms etc. It's only a difference in governance, but it's an important one.
Obviously, a single monolithic spec controlled by a committee like the matrix spec core team has its own problems (most importantly, the committee can become a bottleneck); and we still provide mechanisms to let people experiment via the equivalent of vendor prefixing, which can go horribly wrong (c.f. aggregations in Matrix) if not managed with discipline.
But, I'm not trying to spread FUD about XMPP - just try to explain that the approaches taken are different, and have different tradeoffs, and are not "exactly the same".
That's not entirely true though. Press voice call in a client and you may end up with an embedded jitsi, some WebRTC thing, or nothing at all. That's exactly how xmpp clients started to diversify.
> I'm not trying to spread FUD about XMPP
Yeah, the tone could certainly be improved. Every time Matrix comes up, someone mentions xmpp and immediately the flinging starts about how broken it is and how those developers let it slide into obscurity.
Which there may be some truth to, but it really leaves a bitter taste. Especially since much of xmpp lives on in Matrix in bridges to other networks. Matrix really got a flying start there, and that's a good thing! Software should be shared and built on.
What worries me a little is that the same problems xmpp had, with protocol verbosity and problematic integration with smartphone platforms, is bascially the same in Matrix. The protocol is at least as verbose, and battery management is at least as hard. As a successor to xmpp, one might have expected to learn more from its problems. I'm certainly not complaining however, the more software the better, and the web client is very nice.
This really isn't an example of protocol fragmentation - it's behaving precisely as expected.
There is precisely one way to do a 1:1 VoIP/Video call in Matrix: https://matrix.org/docs/spec/client_server/r0.6.1#voice-over.... It hasn't actually changed since 2015 when we first added it to the spec, until recently when there's a proposal to improve it called MSC2746: https://github.com/matrix-org/matrix-doc/blob/dbkr/msc2746/p.... Now, this is a proposal to patch the spec - it's a Matrix Spec Change. It retains backwards compatibility with the current behaviour, and once the MSC is approved it'll be merged into the spec and the MSC will be discarded.
There is precisely one way currently to do VoIP/Video conferences in Matrix: you instantiate a 'widget', to embed whatever web conferencing service you like into your chat room (e.g. Jitsi). You use the widget API to control it. Widgets aren't actually merged into the spec yet, but are specified at MSC1236 (https://github.com/matrix-org/matrix-doc/issues/1236), which should get reviewed and merged in real soon now. So, as long as your client implements widgets, you can do conferences. In future, we have plans for native Matrix conferences (MSC2359), but this is vapourware.
Finally, if your client doesn't implement 1:1 and doesn't implement widgets (or if your don't have permission to perform them in that room) then obviously hitting the call button won't work. But that's hardly fragmentation; it's just incomplete implementations.
Now, if there were multiple competing ways of doing 1:1 calls, or of doing conferences flying around, I'd totally agree we were seeing XMPP-style fragmentation. But we're not, and if we did, we'd see that as a massive bug and jump on it to resolve the fork in the Matrix Spec Core Team, and ensure that matrix.org/docs/spec resolved the collision asap.
> Every time Matrix comes up, someone mentions xmpp and immediately the flinging starts about how broken it is and how those developers let it slide into obscurity.
Perhaps, but that's not me or the Matrix core team doing that (well, other than back in the very early days when I was still feeling a bit salty about XMPP). We can't control what randoms on the internet say though :|
Yeah, that's awfully close to what the xmpp people used to say. There are rtc calls and there are conferences, and otp is something else than omemo entirely.
For the end user however, when they click that telephone icon in their client, they may or may not get an embedded widget of some type or other, or an rtc stream, or something else. Should the remote client support the same thingamajig, they get a voice call. Look at the dozen or so most popular Matrix clients and for a non-technical user, it's still a gamble.
It's pretty much comparable to email in the 90s. Send a file, and it may end up as a uuencoded Mail Attachment, or perhaps a base64 encoded MIME. In the latter case it may be a multipart MIME or a non-multipart. Non-technical users sometimes couldn't open the file and then you had to send it some other way. Over time some clients got important enough for a de facto standard to emerge. It's still not perfect in 2021, one well known software company insists on their own .eml attachment that doesn't always work.
Matrix is quite similar to xmpp in this regard. Take the dozen most popular clients for each protocol, and check off how many popular features (voice calls, e2e, profiles, conferences, screen sharing etc.) interoperate fully. There's certainly room for improvement.
Don't take this the wrong way however! This is the price we pay for open protocols. If the alternative is low protocol innovation, then bring on the interop testing and annoyed users! It's worth it.
> aren't actually merged into the spec yet, but are specified at MSC1236
You even have standards proposals! They have numbers. Great! Let me guess, you bunch them up, spread some holy standardization water on them, recite an incantation and then they are part of an Offical Standard. Guess how many other protocols developers do that?
> that's not me or the Matrix core team doing that
Again, the tone could certainly be improved. One needs to look no further than this thread, to see other software developers being told in exactly how many ways their standard suck.
Take pride instead in what you did, and if someone asks you again why you didn't use the existing standard to build your chat product, just tell them you had more fun that way. Don't say inefficiency, don't say battery management, don't say interop when all of those metrics aren't looking any better in Matrix. Tell them about the nice team web chat you did, which is plenty reason to use it.
> We can't control what randoms on the internet say though :|
You could acknowledge Matrix's shortcomings instead of denying or minimizing almost every criticism. And not say things like "It's fine to dislike Matrix and pine for XMPP, but please don't spread FUD."
> Obviously, a single monolithic spec controlled by a committee like the matrix spec core team has its own problems (most importantly, the committee can become a bottleneck); and we still provide mechanisms to let people experiment via the equivalent of vendor prefixing, which can go horribly wrong (c.f. aggregations in Matrix) if not managed with discipline.
...which is by far the biggest shortcoming of Matrix I'm aware of. I reserve the right to refute the inaccurate criticisms though (and to call them FUD, if that's what they are :)
XEP-0027 OpenPGP has been officially obsolete for Matrix's entire life. XEP-0374 OpenPGP never went past experimental. It was officially deferred 3 years ago. OMEMO is the only proposal active.
The compliance suites tell you what you need for file transfer. Core requires XEP-0363 for file upload. Advanced requires XEP-0234 and XEP-0261 for direct transfer. You can ignore the experiments.
Figuring out what features 2 clients share can be confusing with either protocol. Looking at Matrix's clients matrix[1] is easier than finding a list of XEPs for each client. But you still have to figure out what the server supports and what it doesn't have to.
The real difference is how 1 company dominates the Matrix ecosystem.
I trust you that you mean what you say, but I wonder what an implementation would look like (from a user-perspective), that supports something like OpenPGP -> OTR -> Ratchet. I mean, upgrading security over time is mandatory and when I remember how it evolved for XMPP I clearly do not want an implementation that still has all the draw-backs that OTR had.
So I agree that XMPP is lacking some good governance, but I don't see the rivaling XEPs necessarily as the core problem, as many of them had quite some time between the drafts. The bigger issue is that many clients don't have enough developer momentum, so that XEPs that were drafted like 5 years ago are not implemented yet.
Regarding implementation bugs: I know XMPP has the compliance suite, but I feel like it doesn't catch bugs and is more of a basic testing for feature compatibility. Does Matrix have some kind of test suite, that simulates physical disconnects, package loss and the likes for testing real client and server implementations? I know that would not be an easy feat, but I wonder what the best way would be to build something like that, to improve the quality of the existing implementations.
If it is competing with OMEMO or not might be a separate discussion, but both can be used to utilize E2E encryption of messages.
Python used to claim the same thing when it was a fresh new language, as a reaction to Perl where the opposite was encouraged. Becoming mature and anchored in reality changed some of that.
YES! I never understand why people are so eager to defend XMPP for its so called perfection, when it's so bad in reality. The "eXtensible" part only is a huge and unfixable mistake. Make it feature complete, not eXtensible, or you end up with dozens of clients not working the same way and subtly failing in multiple scenarios.
I have notifications because my status bar and window manager know how to handle urgency hints and "bellIsUrgent" is set to true.
OTR is natively supported by irssi. Weechat supports it via a plugin. I do not know about other clients.
As for contact management... I am not entirely sure what it entails. Some IRC servers (such as UnrealIRCd, for example) support "WATCH" which is a notify-type system. The server will send you a message when any nickname in your watch list logs on or off. You can read about it more here, along with alternatives: https://ircv3.net/specs/core/monitor-3.2. There are a couple of different ways to achieve the same thing.
XMPP was pretty successful in the 2000s. More than Matrix so far. There were missed opportunities but the main reason it declined was Facebook and Google decided closed was more profitable than open.
Why exclude native clients?
Manager: Our users want this feature
Developer: We can't add that because it will cause incompatibility with XMPP clients
Manager: This is the 50th feature that has been blocked by XMPP and hardly any of our users use it. Time to cut off support for it
"It has come to my attention that clients which we do not control connect to our service. This severely limits the monetization opportunities available to us. Please fix before it is caught in a due diligence."
I'd argue that the design decisions are key to the success of Matrix. However I do not think that there must be any splitting. Checkout the XMPP Bridge that matrix.org hosts.
> I just feel so depressed, seeing so much work being done on a very important subject, not fulfilling its potential due to missing focus.
As long as there are people like Eric, there is hope :) I think we have more focus than ever before, even within the XMPP community :)
Is there a description of how to generate an address on the other network? This sounds awesome. A working bridge gets a Matrix user access to the tens of thousands of federated XMPP servers.
Or a mess of nonstandard addons/plugins that you had to match up, like mods in a multiplayer videogame?
The problem with XMPP was every client implemented different parts of the standard. The problem with Matrix is every client implements different parts of the standard.[1]
Having to choose from multiple encryption addons to get started even chatting, that's not a comparable experience.
I miss XMPP, but it's time to let go.
Sadly for me, it’s also the only modern messenger that has decent desktop clients that don’t look like discord. But I guess that this will never change as I seem to be pretty lonely with my want of those.
XMPP v1 server could be just XMPP itself.
A v2 client/server includes packages for OMEMO, Websocket, Resumeable connections
A v3 client/server has packages for whatever else becomes the de jour.
The idea that you can just mix and match without ever standardising on a set of capabilities was a large part of what killed XMPP and was entirely solvable.
> Our desktop client is closed source, but you can use Element (or any open source Matrix client) if you prefer.
I see most bridges are licensed AGPLv3 [0]: Aren't you required to AGPLv3 the desktop client, too?
[0] For ex: https://gitlab.com/nova/whatsapp/-/blob/master/LICENSE
Only if the desktop client is legally a derivative work of the bridges.
Client <--> Server. The server is AGPL licenced.
I can write a client to talk to the server and I don't have any licence restrictions. For example - if I write a web client to talk to an AGPL web server, I don't have to open source the client.
If I modify the AGPL server, and then put that modified server on the internet then the AGPL terms require me to make available the modified source code.
I am not a lawyer, but this is my understanding of this: https://choosealicense.com/licenses/agpl-3.0/
I assume they are offering a "puppeting bridge" which means it acts as you, however this means that it is using unsupported APIs and Discord has been known to ban accounts for this.
I think it is pretty disingenuous to put the Discord logo on the homepage without pointing out those caveats.
Eventually I would have some bridges get out of sync (ie I responded on mobile but the bridge doesn't show my message or messages would get lost) but overall, it worked really well.
The downside of having one error in relative isolation is not the bug itself but that it makes you distrust the stack entirely and you end up double checking the source messenger "just to make sure"
Having said that, it looks like you've done quite a bit of development on the bridges from a quick glimpse of the Gitlab repos.
How are those forks related to Tulir's bridges? Does he integrate any of your changes and vice versa or are they two unique development streams? In your comment, it sounds like Tulir is working with you?
Anyway, I'm looking forward to this very much because the multi-messenger thing has been the bane of my existence, I swear. I would gladly pay $10/month to fix this as I have online (and offline) friends all over the place.
Oh, for the unified inbox, is there any way to "group" by a person? For example, if I primarily chat with someone on Line but then occasionally talk through iMessage. I would expect them to render as two different "conversations" but logically, they're one person of course.
Lastly, I thought the line about shipping an iPhone was satire. You might want to put a note in there like "No really".
Also curious to know what the schedule is like for people to sign up? I seemingly never received anything that states I'm on a waitlist or just that my sign up didn't generally go into a blackhole.
Would love to use this on Linux, I find all the desktop apps really rubbish (and very happy to pay for it).
Olm is used for establishing 1-on-1 sessions between pairs of users (or rather, their devices). This is then used as a secure channel to share Megolm keys. A Megolm key is ratcheted with each room message sent and is used to derive a symmetric AES key with which the message is actually encrypted. Periodically (every N messages) a new Megolm key is created and re-shared with room participants.
So the end result is that it has roughly the same security as Signal, except that a single compromised Megolm key will reveal N messages to the attacker instead of just a single message. In return, the protocol is much more scalable, enabling relatively efficient large end-to-end encrypted groups. Otherwise, all the session self-healing, forward secrecy properties of Signal are retained.
TL;DR: Approximately the same as Signal, trading a tiny bit of security in the event of a key leak for more scalable encryption in the setting of large groups.
To my weird brain, and after studying accounting, the word "cost" is more of a business/accounting perspective of "expense".
Whereas the word "price" seems to be more of a consumer perspective of "expense".
Yes, it's a little pedantic ;)
Cost: "(of an object or action) require the payment of (a specified sum of money) before it can be acquired or done."
Price: "the amount of money expected, required, or given in payment for something."
I think it's because:
Costing = Accounting. It's the "science" of determining the expense of producing a product or service.
Pricing = Marketing. Marketing is what consumers experience.
Just a quick question (completely noob question, I apologize in advance), do bridges work like APIs? Where can I read more about this protocol?
Really looking forward to this Eric!
Every time I see something like this I check again, but it’s so far never been supported.
In other words, I want to be able to use the Messages app on my iPhone to communicate with other people using Discord, WhatsApp, Slack, etc. I would absolutely pay $10 a month for that, and I almost never subscribe to anything!
Is that something you could turn on, or is it more complicated than I'm imagining?
P.S. I'm wearing a Pebble 2 right now. Thanks for all your work on that, it's a great device.
Edit: Actually, even just some sort of XMPP gateway, so I could use any client that supports XMPP, would basically be enough for me.
If it's available now I'll gladly use it. Since the Whatsapp thing a couple weeks ago even more of my contacts have spread out to different apps and it drives me nuts.
Pricing sounds good too, I know these bridges need work to maintain. I've tried to run them myself using the docker script but it's not ideal. And supporting the maintenance is great.
It was just funny when I read it first, I thought someone else had the same idea :)
Also, seeing that Tulir is not working entirely pro-bono but that his efforts are backed by a company makes me more hopeful that the bridge development will continue!
Do you know what is WhatsApp's stance on a Matrix bridge and using it to provide a service? They've known to have a pretty harsh stance on other services that attempted to integrate ([0], [1]) and even banned users from the platform for attempting to scrape their own data.
Would be very curious to know more details about your WhatsApp integration setup. Thanks in advance!
[0] - https://www.xda-developers.com/whatsapp-sends-cease-desist-a...
[1] - https://www.reddit.com/r/Windows10/comments/89g926/whatsapp_...
I've been using AirMessage for a couple months now on my new Android phone and it is about 80% reliable. Images and videos also take significantly longer to processes than if I were to use an iPhone.
I wonder if Beeper would be an upgrade over AirMessage or if it is essentially the same.
With webOS, there was a single messaging app that integrated SMS, Skype, Facebook and Google. The latter part was implemented using libpurple, so it was relatively easy to extend this to all messaging that libpurple supports.
I really liked that approach (marketing name was "Synergy", unified messaging was only a small part of this), but it's quite obvious that neither Apple nor Google have any interest in adopting this unified approach for anything but their respective own messaging of the day.
Plus we all know that Google really wants to own a chat app so maybe they will decide not to make it first-class in Android i fit seems like a threat.
and the name is dope, don't count that for 0.
I'd rather be prepared to use different protocols in a sensible way.
A few years ago I was in contact with someone from the project to integrate the changes that I did, so their messaging client should now support pretty much everything that Pidgin supports (which, as I learned today, nowadays includes Matrix, Signal, Telegram and Steam as well through plugins).
Maybe I should install that on my old Nexus 4 and see how far they got... :)
Please, break down the walled gardens. Free us from the whims of the product managers pumping out redesign after redesign for all the services we use.
Without an open source client, how can I be assured that you aren't harvesting user data through it?
The commercial matrix bridge is an excellent idea. I was able to get my homeserver running, but it is a hell of a job to get everything working. When it does work, oh boy, it again feels like magic!
This brings back memories. In 2017 I had launched a similar 'chat-app network' platform[1] for privacy focused dating using Bot API of the respective platforms allowing communication between,
Messenger <-> Telegram <-> Viber <-> LINE
It was quickly selected for acceleration by one of those platforms. The features included half-duplex messaging(user had to wait for reply to send a message to prevent harassment), optional location, near-far dates switch etc.
Adoption was quick, the first major issue I ran into was that in SE Asian countries many used their children photographs for profile picture in chat apps, which obviously was a no go for dating, so I had to implement Amazon Rekognition to detect age and make those users change their profile picture and their profiles weren't displayed until it was changed. At peak it processed 200,000 images/month.
Obviously bridge approach as in Beeper(Matrix) is a more reliable approach than using Bot API, especially due to UI/UX limitations and even platform stability issues(Some bot API were nascent).
In about a year it even crossed the Trough of Sorrow with ~2,40,000 users on Messenger alone.[2] But had to let go of it as I fell sick(was told I could become quadriplegic[3]) and as single founder bus factor hit my startup.
I received several offers to buy the platform, but I didn't sell it as I was not sure whether the buyers would stick to the privacy promises. So I just nuked the platform.
Even if I had continued, I'm not sure whether I could have monetized successfully as selling digital content was explicitly prohibited by these platforms because of Apple Tax/Google Tax(it would mean that the chat apps function as app store).
[1]https://www.youtube.com/watch?v=aeuL8_Qinhs
[2]https://web.archive.org/web/20181203031208/https://finddate....
[3]https://abishekmuthian.com/i-was-told-i-would-become-quadrip...
I'll check out your site and you may have some very happy paid users soon :)
Never understood what was wrong with the name vector by the way. That was even nicer IMO.
How in the world did you get iMessage to work on Android and Windows? This was a tough one to figure out! Beeper has two ways of enabling Android, Windows and Linux users to use iMessage: we send each user a Jailbroken iPhone with the Beeper app installed which bridges to iMessage, or if they have a Mac that is always connected to the internet, they can install the Beeper Mac app which acts as a bridge.
Still, it seems like they didn't really dodge anything at all. It's the same gripe I had with Signal: if I have to switch between iMessage and Signal, then I'll never be able to sell Signal to my family.
Also, why no WeChat? The stickers are the best there !
Matrix is the holy grail of chat. It's end-to-end encrypted by default, federated and open source. The only problem is that not a single one of my friends or family was on it! Luckily the Matrix folks had already envisioned a solution to this problem - they built an API enabling 'bridges' between Matrix and other chat networks. This struck a chord with me, maybe we could finally build a single app that I could use to chat with all my friends, regardless of which chat app they used. Through the Matrix community I met Tulir, the most prolific bridge developer and we started working together on what would become Beeper. I've been using it as my primary chat client for almost 2 years now. I could not imagine going back to the hot mess of 12 different chat apps I had before!
Beeper is a paid service because I think it aligns interests between us and our users. We make a featureful and secure app, in exchange you pay us money. For those who prefer to self-host, you can run the entire Beeper backend stack on your own server. The vast majority of the code we've written for Beeper is open source on gitlab.com/nova. Our desktop client is closed source, but you can use Element (or any open source Matrix client) if you prefer. See our FAQ for more info or I'd be happy to explain more.