21 comments

[ 5.4 ms ] story [ 143 ms ] thread
Incidents like this are why it's so critical to have offline support as a first class citizen.
I think that’s an unrealistic expectation for a product that exists to connect hundreds of employees across global networks and present dynamic information.

Somewhere in that equation there’s going to be downtime, whether that service is cloud managed or self-hosted. It has minimal value offline because its entire purpose is to exchange information online.

It’d be like saying that World of Warcraft should have an offline mode.

You could make the exact same argument for something like git. Yet everybody would be totally fine if their remote/origin is down for a couple of hours. Offline support is about bridging smaller periods of being unconnected while still enabling the user to be somewhat productive.
Git has much more explicit conflict resolution though, which covers a lot of the risks involved
And CRDTs already solve this, which is what I assume notion uses.
No, it was not using CRDTs when I last checked (more than a year ago). If you're designing for online-only, you can cheat a little and be "good enough".

Setting properties is a last write (to the server) wins (set path foo on block XXX to Y). So text changes overwrite the entire block. The contents of a page are a list of block ids. The operation is "insert id XXX after YYY", and if YYY is not found (deleted/moved), it's placed at the end of the list.

But the biggest impediments to offline for Notion (again when I last checked) were that it doesn't have a full copy of the data and some of the operations are executed server-side (autocomplete dropdowns, search, and some bulk operations). I was hoping they would deal with the former, because it'd make it easier to backup and process my data. But I ended up moving on.

I think they've dealt with some of the search operations, but are still not syncing all of the blocks.

Interesting, that actually surprises me. Thanks for clarifying!
I don't think there's truly any technical solution to "two users edited the same piece of text" tbh. You can try to be smart about it in various ways, but at the end of the day you're still going to hit situations where it's really not clear what the users' intent would be to handle two mutually-unaware edits on the same words
CRDTs handle exactly that. There are times where things aren't exactly as the user intends but at least there's a way to determine a resolution.
I meant in terms of achieving the intended outcome for the end-users. Is it actually desirable to ensure there's a resolution when really they need to decide?
Despite that, Notion actually does work okay in unstable/briefly offline connectivity situations. It syncs changes when it reconnects.
> It’d be like saying that World of Warcraft should have an offline mode.

No, an offline mode in WoW lets everyone cheat. Blizzard started with this, and it’s bad for cheating as well as recurring revenue. You can’t cheat at self-organising.

> its entire purpose is to exchange information online

I don’t think so. Its purpose is to express yourself freely and interlinked. A feature is that you can always share any hypermedia with others, and it does provide a lot of value in an organisation. But Notion would be valuable offline.

Unfortunately, a company like Notion is similarly incentivised to make their software dependent on connectivity, since they are a SaaSS (service as a software substitute); offline-first self-organising apps like Obsidian, Emacs org-mode, or VSCode Foam wouldn’t generate as much money; this is why Obsidian are heroes: they pick an architecture and business model that is in the interest of their users.

This is the motivating behavior behind triplit.dev (disclaimer: I'm a developer on it). Every productivity app should be able to keep chugging along whether the server is online or not. Makes server outages like this WAY cheaper.
I misread this as having a supportdesk reachable by phone :s
For anyone looking for an offline Notion, I've been building https://mindgarden.app

Allows you to load a local folder directly in your browser, and works completely offline. No login or installation required.

It is still a work in progress though so has some bugs / rough edges.

I am also working on something similar and open source Bangle.io . It allows you to open a local folder and persist your markdown notes there.

It also supports syncing directly with your GitHub repositories.

[1] https://bangle.io

Any plans on creating a static site generator?
Issue is written as "We are experiencing some performance degradation and are investigating the cause." and Notion is loading for me in browser.
I have it loading and able to create new pages, but not able to put a template on a page (just scrolls forever) or upload and image.
I've been unable to create pages all day and have intermittently got error pages.