92 comments

[ 3.2 ms ] story [ 131 ms ] thread
> To better match terminology familiar from other apps, “streams” have been renamed to “channels” across the app in this release.

Thank God! Hard to believe that it took until 9.0, but they made the right call.

> We’ve been hard at work on Zulip’s next-generation mobile app for Android and iOS, built with Flutter.

Interesting choice to choose Flutter ... will be interesting to see if that was the right choice in the long term. I get the impression Google has more people working on Kotlin/Compose Multiplatform.

Quite a lot of Flutter apps have popped up over the last few years. It's definitely gaining adoption.
So it's overdue for Google to sunset it, now that it's at risk of being successful.
Choosing a platform which Google itself keeps creating and abandoning alternatives is very, very risky
One of the things that's made us at Zulip very happy with Flutter is that it's an honest-to-goodness functioning open-source project. The issue tracker is out in the open, as are the PRs and code reviews. You can (and we did) show up with bug reports and someone whose job is to develop Flutter will read it and make a cogent reply. And getting a change merged in Flutter is however easy or hard it is to do the change well, but no harder — the codebase is high-quality, and the maintainers are responsive. It's at quite a high percentile among all the open-source projects I've interacted with.

I don't know much about Kotlin Multiplatform or Compose Multiplatform. But from what I've seen, the Android group in general doesn't live up to that high standard as an open-source project. You can report bugs and might get a reply, but can't really participate in the discussion; the public bug often gets linked to a bunch of internal bugs you can't see, and the code reviews for any fix happen in private.

(I lead the Zulip mobile team, so the decision to use Flutter was primarily mine.)

I hope it works out well for you, at my company we made the decision to go with native because we were afraid of hitting a ceiling with non-native solutions, but I love Zulip and I hope your decision pays off.
flutter is a complete game changer. I have done react web, vue etc, react native and with shame GWT but with flutter I don't have to think.

everything works, all the necessary ui widgets are there. no more tinkering around with css or new css flavor of the month. layout is easy peasy.

performance is great. and best, iteration speed is awesome.

Yeah. The iteration speed with Flutter's fast, solid, hot reload is seriously a big deal for the developer experience.
one of the killer features of Zulip is that when you mention your local datetime in a message the receiver sees that in their own timezone. So useful when teams are distributed.
That seems confusing to me. It would be better if Zulip just added the local timezone to the time instead of modifying what you send to people. Do you mean it shows it in a hover or tooltip?

Seems like there should be deadly sins for certain fields, and one such deadly sin is for an instant messenger to change what you send to people.

It appears that you have to type it in a specific format, and the localized time is displayed with different formatting than the rest of the message. See: https://zulip.com/help/global-times

> A date picker will appear once you type `<time`.

> Our next meeting is scheduled for <time:2020-05-28T13:30:00+05:30>

> A person in San Francisco will see:

> Our next meeting is scheduled for Thu, May 28 2020, 1:00 AM.

> While someone in India will see:

> Our next meeting is scheduled for Thu, May 28 2020, 1:30 PM.

Discord recognizes <t:{{unix_time}}:format>

https://discordtimestamp.com/

That's effectively an API feature only: There's no button or typeahead for entering it. Zulip's version is a first-class feature with a compose box button and typeahead, designed to be convenient enough that humans routinely use it rather than typing "10 Pacific time".
Unfortunately it's bugged and doesn't use the timezone setting. I just ran into this recently. https://github.com/zulip/zulip/issues/30856
Zulip is designed to use your OS/browser's timezone for this and all other displays of times (say, when messages were sent). This is usually what you want, since it means you just need to make sure your computer's clock is correct and not manually update every app you're using.

In the issue you linked, the root problem is that the anti-fingerprinting browser feature has the browser pretending that its preferred timezone is UTC, resulting in the user seeing all times displayed to them in UTC.

It has nothing to do with the "global times" feature -- that feature just renders an element in your message in the same timezone that it renders the timestamps.

I just recently started up zulip after a long break, to check some particular community discussions. Before it had felt a bit hacky/nerdy. But now, I was pleasantly surprised. The app and the service feels really fast and to the point, and I think it looks OK to.

But also that jumping in to random community, and browsing through it made sense to me, I was able to read discussions that kinda seemed interesting and skip the rest, with pretty good confidence!

Contrasting to say Discord, where I'm always overwhelmed by the number of channels in big communities, with very little way to efficiently check "whats going on lately", without just browsing through. (I'm sure sizes of communities matters here though)

Or Matrix, where everything just seems so slow and janky. Though I think it is trying to solve a harder problem being so distributed. It has real potential bringing related communities closer by having a well curated spaces that organise them neatly.

It sounds like Zulip is optimising for productivity (and I've read similar from the team in the past), where Discord and Matrix certainly aren't. Matrix is optimising for security/privacy at the cost of UX in other ways, and I get why.

Discord is an interesting one, as I think they're optimising for communities – moderation, having distinctive "servers" with their own personalities but within one "service". In many ways Discord is trying to replace phpBB, and no one ran internal company comms on phpBB (I hope).

What's interesting to me is that many new companies are choosing Discord despite it clearly not being designed for internal company comms. I suspect some choose it on the basis of being "open source" companies who are trying to grow a community using their stuff, but I'm not sure how true that is in practice for most. I suspect the real reason is that most of these people starting companies already hang out in a bunch of Discord servers in their personal lives, and so there's a (small) network effect and they just default to Discord for their professional lives.

> Discord is an interesting one, as I think they're optimising for communities

Are they? It seems to me, with their desperate focus on monetisation and gaming (didn't they try to build their app store?) that all their focus is to optimise for "engagement" and keep "gamers" using their platform 24/7

Discord has become like many companies in the space a behemoth that has conquered a niche with a decent product and now are looking to extract as much revenue from each free user. What is the last genuinely killer or novel feature that Discord has released? How are they trying to make online communities better? They are just making their silo prettier and hoping you are interested in animated emojis to make bank.

Companies like Discord are lucky open-source projects do not have any high-level coordination, but operate like headless chickens, because Discord isn't doing anything that is technologically ground breaking by any stretch and are around "solely" because of network effects.

> They are just making their silo prettier and hoping you are interested in animated emojis to make bank.

You can now buy animated frames for your profile picture for 10 USD.

I guess I'm trying to give them a charitable viewpoint. Discord is far more community focused than, say, Slack. You're right that they do seem to be going all in on monetisation now, but I see that less on the few open source project Discord servers I'm on.
> Discord isn't doing anything that is technologically ground breaking by any stretch and are around "solely" because of network effects.

Discord is handling identity management and anti-spam. Both of those are a gigantic PITA.

Until open source gets a good answer for both of those problems, the federated solutions will always be also-rans.

> Matrix is optimising for security/privacy at the cost of UX in other ways, and I get why.

I wouldn't say so. Have you used Element Messenger? The default trust policy is certainly optimised for something else. Similarly to default and encouraged synapse configuration. Not saying it's the wrong tradeoff but Matrix/Element are certainly not fundamentally putting privacy above their other goals.

I don't understand how discord dev don't know about the multitasking hell they allow.
> $6.67/user/month billed annually or $8 billed monthly

I like this project. But please stop putting dumb shit like this on the pricing page. There is no such thing.

The options are $80 a year, or $8 a month. That's it.

Although "$X per month, billed annually" has become a popular and socially acceptable way to be deceptive, it's still deceptive. There are few better ways I can think of to signal that you'd happily lie about a bunch of other stuff if it meant making slightly more money for yourself and you could continue to get by in polite society (limiting yourself to the same deceits that everyone else is engaging in).

What is deceptive here? This seems like a reasonable way to present the information.
> $6.67/user/month billed annually or $8 billed monthly

it doesnt say you have to prepay $80/year. why say "/month billed annually"?

what benefit does that give?

It gives you the benefit of seeing the price difference in the long run more easily.

Maybe providing also year-long pricing examples of both would be even more helpful.

Grocery stores figured this out years ago. It's by giving that secondary number a subordinate position on the price tag. Not by redesigning the price tag to list the actual options in a misleading way (and then making the customer do even more arithmetic—not less—in order to answer the question, "How much is this going to cost me TODAY?")

No one who is doing the "$X per month, billed annually" is doing it because they're trying to make it easiest for the customer. They're doing it because lower numbers on the price tag makes for more sales.

Actually, I prefer this rather than "x monthly, n yearly". Having the two values in the same scale helps to compare the difference.
I made a service (https://imgz.org) and showed the pricing as "$5/year". I got SO MANY complaints that "$5/month is outrageous" that you better believe I changed the price display to "$1/month (billed yearly)".
I remember this story and chuckled the first time I heard it. But if you were comfortable charging $5 per year, what's wrong with $1 per month (billed monthly)?
I'll pay 40% of that in credit card fees, rather than 3% of that.
Huh?

$12 × 0.60 = $7.20

$ 5 × 0.97 = $4.85

Stripe charges 2.9% + 30¢ per transaction. 30¢ every dollar is a lot.
... Huh?

$7.20 > $4.85

You can't assume that someone who paid $5 for a year will keep their subscription for 12 months when there's a way to cancel after a month, and there are overheads that 60c for a month wouldn't meet. My price would also more than double for my customers while I received just a bit more, with Stripe getting the rest, and I also just don't want to give Stripe that big a cut.
For emphasis:

> You can't assume that someone who paid $5 for a year will keep their subscription for 12 months when there's a way to cancel after a month

> I also just don't want to give Stripe that big a cut

(It's good for the most important acknowledgements/admissions in a conversation to appear at least once when the conversation is happening, even if it does take a while.)

They keep announcing "design improvements" but whenever I check all I see is an ugly, dated UI I just can't consider serious. Can't be.
Looks fine to me; wild that anyone would think it unserious. Design is much more about how it works than following the latest graphic trends.
Not only does it look OK to me, but the UX is second to none. I don't like the modern design trends with white space everywhere, I want to communicate and that means dense information.

I think the design issue is more of an HN meme these days, than an actual problem.

Most of the time I also enjoy pretty dense UIs, as long as I don’t have a significant risk of misclicking on things that are too small.

That said, I rather liked what Thunderbird and JetBrains did - let the user choose not only the fonts and stuff like that, but also the UI density that they want.

That is in fact one of the new features in this 9.0 release! There's a new less-dense default, and the previous dense layout remains an option (which for myself I immediately turned on).

We're also planning to give a wider array of options in an upcoming release, including independently setting the line-height and the font size. It's a lot of work to get even two options to both have a reasonable layout throughout the UI, though (among other things, it involved changing a lot of hardcoded values in px to be in relative units), which is why only the two-way switch made it into this week's release.

All alternative products I have used so far have worse UI.

Slack is always laggy and does not even handle markdown well. Recently moved around buttons for huddles and people keep searching for where that button is. Also annoying, that pictures can only be attached to the end of a message, forcing me to reference with something like [1][2] and so on.

MS Teams: haha just joking. Of course it cannot even be considered close to an alternative!

Discord: Was good some time ago, becomes ever more bloated and heavy now.

Element: When I tried it some time ago, it was very unclear how threads actually work and they did not seem to have any visual separation from other messages, that simply came later in a channel. Basically messages know they belong to a thread, but visually you almost cannot see it. Not sure, if that is still the case.

Zulip is snappy and works well with markdown. I find it looks much cleaner than Slack and others.

What's your take on the UI of Gmail? Or this very website you're using right now?
Zulip had flown under the radar for me, looks interesting but the pricing makes me a bit sad.

We are a small team, but would probably need like 11 accounts so with self-hosting that puts up us to just about $40 a month only for the sake of getting mobile notifications. In practice most people won't be on their phones but notifications are still required for off-hours or on-the-move communications. But very low volume, like at current pricing maybe $0.5 per notification that wouldn't have been served by a desktop client.

I get it, it is a way to support development. But why does it always have to be per user? And why not keep first 10 users free, so that 11 users only pays for 1 user, 12 for 2 etc. That would mean a lot for small teams, and reflect value a ton better.

I guess with every service having a free tier means there truly can't exist a cheap offering. And the minute you go over any of the arbitrary limits you need to suddenly pay a lot.

Apparently notifications was completely free until December of last year. From completely free to $3.5 per user. It just feels weird (not saying free is sustainable, but $3.5 per user is a pretty arbitrary number).

Sorry, this rant isn't really targeted towards Zulip, but the entire industry that somehow converged on pretty much the same terms.

I feel you. On the other hand, paying $40 a month for 11 people to efficiently communicate doesn't sound that much actually?
Every single service is per user and it adds up. Communications are essential, but there doesn't have to be much to it either. Most communications are 1-1 anyway. We could do everything by SMS and email I guess, it is just not built for that.

As a company grows it becomes the backbone but right now I might was well yell out the corridor. Only partially joking.

Also, that’s about half of what you’d pay for 11 users on most other group chat services.

From what I can tell, the average is about $8/user/month. And no, I don’t understand it. For my former employer, a large public university, these services would cost about $240k/month before any special discounts. For that price you could hire a whole team to build and run your own product. Make it make sense.

Sorry, this rant isn't really targeted towards you personally, but the entire industry that somehow decided that the terms of everyone else's business and products that they are using to get try and individually achieve private jet levels of wealth should be free.
I'm trying to pay an amount that makes sense though.

It is like the olden days, where piracy of Photoshop didn't put a dent in Adobe. They got free advertising and everyone grew up learning their product. But since you could get the "best" tool for free that meant you wouldn't pay for a cheap alternative (that actually had you as their target group), completely killing an entire section of applications - they were the true victims of piracy.

I feel like that is happening with these kinds of tools. Slack et al do have free options that are completely obliterating the hope to target businesses that don't need as much.

99.9% of all the features you are paying for is pure bloat. It costs money to develop and I get that, but then I don't want it either.

There are too many things you don't wanna buy, it will really take a lot of your time if you go out of your way to tell people you don't wanna spend money on what they have worked. You can just save your wisdom for yourself.
You can selfhost, why not?
That is what I'm looking at. But it costs $3.5 per user to self-host if you need mobile notifications.
Apparently, the "self-hosted + free" combination allows mobile push notifications only up to ten 10 users.

https://zulip.com/features/

https://zulip.com/self-hosting/#self-hosted

We are sellf hosting with our own customization for 5 years now. Notification is fine on Desktop. We have 30 developers using. For mobile notification you can just add your own if you care to modify a few lines of code
Maybe they need purchasing power parity adjustment for those outside the US? $3.5/user/month seems lowish compared to peers in the US, though I agree with what you’re saying about how to charge at 10+ users (that is a nice business model that keeps your free tier alive while not changing the economics of the enterprise at all).
I suspect that the cost for push notifications might have to do with the costs imposed by Apple and Google for their respective OSes' notifications backends, but don't quote me on that. The $3.5/user/month smells like a way to recoup that kind of cost without making it overly burdensome for folks within one standard deviation of the mean.

That said, it appears that XMPP might be workable here: eJabberd is still actively maintained, and there are mobile clients (namely, Monal for iOS and Conversations for Android) that appear to support push notifications. Given your talk of self-hosting, I feel comfortable recommending something that requires some degree of system administration investment.

I don’t think Apple charges for APNS do they?

I have 500-600 users on my app and have never paid. Maybe it’s different at scale?

It seems you're right. I'm thinking of the third-party APNs (why does Apple insist on the lowercase "s" here?) server providers who do sometimes bill on a per-notification basis.

I'll admit that I know basically nothing about how this ecosystem works in 2024, particularly as it relates to push notifications from self-hosted applications as Zulip can sometimes be.

Ah, yes you do have to run a service of some kind to interface with Apple. For example the Matrix project provides Sygnal https://github.com/matrix-org/sygnal which the owner of a Matrix client can run on their own systems.

It's not super resource-intensive if you run it yourself, but I can imagine how a "buy vs build" decision for other apps could easily lead to a $$$ monthly subscription with a specialized 3rd party.

Mobile notifications are almost an antipattern, especially with the Zulip mobile app being what it is.

Definitely try it out without bearing the mobile experience any mind.

(comment deleted)
I know what you mean, but I'm happier paying for one specific feature that I know costs them than for an arbitrary tier, although the latter is fine too (they have to make money).

Generally, Zulip is one of those tools that I'm happy to pay for even if I don't need any of the non-free features. At $40/mo, it's worth it for the multiples of time it'll save you.

Definitely try it.

why should a self-hosted server limit notifications by number of users? its not like the dev team is doing any hosting for notifications that they need to pay for bandwidth and stuff?

i do understand the need for "charging people somehow", same as how some say their product is open source but you still have to pay per user even when its hosted on your own machines, why bother then? its not like i have "security" concerns from E2EE of facebook.

when we are talking "self hosting" then that would mean i get to self-manage but also i am not restricted by features otherwise whats the point?

look at zulip for example.

their cloud hosted version is plus version for $10/user. same for self-hosted business version at $6.67/user. So at the cost of self hosting and management and storage and administration i am only getting a discount of $3.33? again, why bother at this point?

Wait. You want a discount to have access to the source code? So you are ok with paying a premium to NOT have access to it?
These prices make sense when you consider that the bulk of the cost of providing Zulip to you is not the cost of the compute and storage and bandwidth - those are fairly minimal.

It’s the cost of the developers who fix bugs and keep the product moving forward. Those cost a lot more, and you need them regardless of where your instance is hosted.

Have you tried Mattermost? I've never used it but it looks like it might work for you.

https://mattermost.com/

Mattermost works just fine being self-hosted and using push notifications
Can it jump to a specific time yet? The inability of a chat app to quickly find a known point in the chat has to be one of the most baffling UI omissions I've ever seen but every time I've searched it seems like I really haven't missed anything and it really does require scrolling back manually for as long as it takes. :(
I sincerely hope that Zulip will get better and better, so I'd better give my opinions directly instead of being polite. If it is charged, wouldn't it be better to invest some money in design? This will greatly improve the user experience. I have to say that I was very confused when I used it last time. Compared with Element, Discord, and Slack, the interface has indeed become a big problem.
Do you have any specifics on examples of the design being inferior?
I'll talk about the simplest ones, just my personal opinion.

- Color.

- The organizational logic is not prominent enough, I have to be very careful to find which section is which. Color can help but UX designers should do more.

- The default chat box is too small, and it doesn't appear when you click on the channel by default.

I only participate when I need to interact with bytecodealliance, and you need to ask more people to get better feedback.

I found the zulip interface much more intuitive and user friendly than the Discord one which is a huge mess.
I find the design and usability way superior to Slack. It is also not like Slack that is lagging every time it needs to display some other text (like switching a channel). Instead Zulip feels very smooth. I wish I was using Zulip for work.
Looks like conversations on Zulip still aren't accessible to search engines, unfortunately. I'm aware of zulip-archive, an "export everything to HTML" solution, but it sucks that this isn't possible to do this without setting up a separate solution.
After having worked with Teams, Slack, Discord, … Zulip for me is the best. A mix of forum and chat, great search capabilities, customizable notifications. You feel empowered to decide how to filter the noise that can happen in a big community and when to jump in and participate.
(comment deleted)
Great update. Unfortunately, the limitation of push notifications to 10 members puts it into the B- category of self-hosted OSS for me. I understand that costs do exist by providing a push service, but forcing Orgs into the same plan as everyone else kind of feels like it's an intentionally set boundary to lurk people in and then force them to go all-in. I'd much rather see another tier that only includes the cost for push notifications.
E: just checked and they did update their pricing to be 3,50 now for the unlimited push. It's better, but still per-user-based. Which is still bad IMO. It says "Support Zulip's open-source development". I'd happily do that with a fixed price or an honest per-push price.