Roundcube, RainLoop, etc are not too bad, but they’re still essentially using the same 20-year-old model as Squirrelmail: Every time you do anything (open an email, move it to another folder, etc) it opens a brand new IMAP connection, does the thing, then closes the connection. It’s kinda wasteful/slow proxying a stateful protocol over a stateless protocol like that (and yes, I know that up-imapproxy exists, but the point still stands). Because of this implementation detail, Roundcube (and probably also RainLoop) also periodically poll the server to check for new emails, rather than using something like IMAP IDLE to push them. Polling is inefficient and outdated.
We’ve got better technology these days! We’ve had widespread support for Server-Sent Events since 2010ish and WebSockets since 2011, allowing the browser to keep a persistent connection open to the server, and the server to push stuff down to the client (with SSE) or full bi-directional communication (with WebSockets). With WebSockets in particular, the server could keep one or more IMAP connections open rather than having to open a new connection for every action taken. New emails could appear instantly and it could behave more similarly to a traditional email client. You could even just proxy the raw IMAP commands over WebSockets and have most of the logic client-side if you wanted to.
And yet… I haven’t seen any open-source email clients actually do this. I’ve been tempted to write my own modern webmail client using something better than PHP on the server-side. I think Crossbox actually does use WebSockets, but it’s not open-source so I’m not counting it here.
But why is this the case?
Is this because the current state of webmail systems is “good enough”?
Is this because of the proliferation of “enterprise” remotely-hosted email systems like G Suite, Office 365, etc? Companies that used to self-host their own webmail are now using remotely-hosted solutions, meaning webmail isn’t as popular as it used to be?
I just tried AfterLogic Webmail Lite and it’s kinda OK. Does some things better than Roundcube (eg. it prefetches all the emails displayed in the list, so clicking an email shows it instantly), but it’s still PHP and still has some of the downsides of Roundcube… It still polls for new emails rather than using IMAP IDLE and web sockets. Periodically it seems to just reload the entire message list for some reason (no visible impact, but it’s a waste of bandwidth). There’s also some weirdness with scroll position where it scrolls the message list down too far when I click on a new message to read.
I like old webmail clients. They were thought with simplicity, lightness and efficiency. Sure, we can have new open-source designs, taking benefit of more computing power, but I still love the old designs of Roundcube and Squirrelmail (probably because I am old).
I’ve still got an @simplemachines.org email address from back when I worked on SMF, and they’re still using Squirrelmail. The server guy says they’re going to upgrade to something else one day. Squirrelmail is kinda nostalgic for me… It’s the first webmail system I ever used.
I still use Squirrelmail on a backup email. It is from a shell (FreeShell.de, aka the old Nic-Nac-Project) which still offers free shells for postcards. This was my first interaction with Linux, using it to learn the basics, and I still have the account there after 17 years. I could change Squirrelmail to something else, but I won’t, because I like it. This is why I think I must be old.
I tried SOGo (Mailcow comes with it) but it really doesn’t like large inboxes. I have 200,000 emails in my inbox (and that’s after sorting a bunch of them into folders) and SOGo locks up the browser tab for a long time when I first load it
And it doesn’t really get any better once it’s loaded. Scrolling is very very slow.
AfterLogic Webmail Lite also had issues - I had to increase the PHP memory limit because it was hitting out-of-memory errors.
Roundcube is actually really nice and fast even with large accounts. They’ve done a great job there.
Crossbox is pretty great and I use it for my MXRoute accounts. I’m self-hosting some mailboxes now though, and Crossbox isn’t open-source, plus the pricing isn’t really designed for individual users but more for service providers.
I really do need to clean out my inbox one day. I originally had more emails directly in the inbox, but instead of properly cleaning them up I just archived older ones by year (using the archive feature in Thunderbird)
There are too many people involved and too many PR’s from people who are not familiar with an entire project codebase. For example, there may be a PR for a new feature but it also introduces a bug in some other part of the app.
The project owner who is most familiar with the code base usually ends up spending his entire time reviewing the PRs and managing the contributors instead of contributing code.
Not all contributors have the same skill level which produces software with varying quality.
There is usually a lack of motivation as you are giving away your hard work for free.
There is no support for the users and everyone is all on their own when facing an issue. Yes, you may submit an issue on GitHub but again, there is no liability, and no one guarantees you will get help in a timely matter.
Update releases are slow and you will usually wait months before the update containing a fix is released.
Open source apps are mostly written in languages that don’t require you to be an experienced software engineer, usually in PHP or Python. The issue with this is that these languages cannot be used to produce fast-performing and reliable code. For example, the hard part is huge mailboxes (100k+ emails) and a large number of mail folders. In this case, PHP will not be able to handle it, nor will Python. In contrast, we regularly test CrossBox on a 1M mailbox just to make sure that those edge cases are covered as well.
The project was started when modern technologies and frameworks were not available and now it’s too much of a hassle to rewrite everything from 0.
There is no liability. You get the software for free and there is no pressure from paying customers to fix issues, improve the software and add features.
Thousands of unsolved issues. Go to any open source webmail project and you’ll find hundreds and even thousands of issues that are being reported and then closed without anyone fixing them.
Some stuff is hard to develop. For example, try developing an algorithm similar to Gmail’s conversation mode. It may not sound like much but we spent thousands of hours developing that particular feature.
There’s nothing stopping open-source apps from costing money though. They’re only required to be “free” as in “freedom”, not as in price. I don’t mind paying for a good app if I can see/modify the source code and it’s not just a black box.
https://afterlogic.org/webmail-lite actually comes close to what I was looking for, and does some things better than Roundcube (eg. it prefetches the entire page of emails, so clicking an email is instant) but it still has its own issues. It’s written in PHP, doesn’t use WebSockets or server-sent events, and for large mailboxes the load time is quite a bit slower than Roundcube.
I like open-source projects that provide support contracts, for exactly this reason. If someone wants guaranteed support with SLAs, they can buy a support contract, otherwise it’s just best-effort.
I agree with that and I wish everyone was like you as that would be a true heaven for software, developers, and the public in general. But, the truth is, most users are not developers and they either don’t care or don’t have the knowledge to read or modify the code. On the other hand, countless good open-source projects vanished because they relied on “donations” - the truth is, only a small percentage of people will pay/donate if they can just take it. This is not a reliable revenue stream and usually not enough to pay for high developer salaries, offices, servers, etc.
Also, let’s not forget that not everyone in this world is good and carrying. There are people that:
Don’t care about the license and enforcing one in their country is almost impossible.
Love taking someone else’s work and selling it as their own.
Love finding exploits in open source projects and then doing bad to others.
There is also intellectual property that software companies want to protect if the software they make is downloadable. Not really an issue for SaaS as you never really install or have access to the code, but for the self-hosted software, closing source to protect that IP may be the only thing that separates a financially stable company from the bankrupt one.
I don’t like commenting on competitors but as with everything, we all have different tastes/needs and it’s totally fine to use whatever suits you best. Just look at squirrel mail, still loved and used by many. The important thing here is to have as many self-hosted solutions as possible because the ability to host something on your own server or on the servers of the company/person you trust is what we should value the most. No lock-ins, and no to getting your data analyzed and sold to the marketing agencies.
Yes, that is fine but that sometimes actually costs more than what you would pay if you went with commercial software in the first place (as the support is usually included in the license price). For example, nextcloud is free and open source but the support contract was something like 5K€ last time I checked.