5 ms·
I've not used notion before and this is a great write up... Having built my own private-ish collaborative editor/note/todo/sharing/pm tool back in 2012 (that u
by fellowniusmonk 5y ago
I've not used notion before and this is a great write up...
Having built my own private-ish collaborative editor/note/todo/sharing/pm tool back in 2012 (that uses indent level permissions) I don't see how you could have a non "block" implementation?
I also don't see how they are having so much performance difficulty moving up the inheritance tree at the client level?
Does anyone else who has worked on these kinds of problems take a different approach? This being HN and a space I develop in I am actively curious if any other architecture are in use generally?
Are there approaches outside of blocks for tools with this level of granularity?
Really cool of Notion to share these kinds of "inside ball" deep dives.
- burlesona 5y agoI don’t think you can do this without a block-based approach. That part isn’t super novel, for example I wrote textbook editing software circa 2014 which worked largely the same way. What notion has done that is impressive IMO is made the editing experience enough like the MS-Word “inline” editing that people seem to understand it and use it without minding that it’s a block editor. The project I worked on back in the day wasn’t quite as slick, and there were a lot of users who got frustrated when things like copying text across multiple paragraphs didn’t always do what they had in mind (imagine a text selection from the middle of one paragraph (block) to the middle of another - that’s complicated to deal with). Nice to see Notion take this model mainstream with such a nice UX.
- erjiang 5y agoI built a no-code web-app creator that also has a concept of blocks and I can relate to this. Each paragraph is a different block, and I still haven't quite figured out the best way of handling cross-block interactions like your example of cross-block text selection. I think I would need to redo the browser-based editor, because even if I solved e.g. cross-block selection across blocks of the same type, it's unclear how it should work across, say, a text block and a video-embed block.
- Artistry121 5y agoExcellent. Connected with ya.
- tobr 5y agoNotion on iOS has exactly that problem for me, it’s not possible to select text across blocks or even move the text cursor between them continuously.
- polote 5y ago> I don't see how you could have a non "block" implementation? I mean, documentation is mostly text, image and code. You can easily be document-based instead of block-based, like Confluence, Google docs ... you don't always need to be able to insert everything into everything. I'm actually building a Confluence/Notion competitor, and it is document based. Being block-based makes a lot of things much more complex
- fellowniusmonk 5y agoInteresting, how do you handle line level or "intra-document" permissions then?
- polote 5y agoThe permission is at the document level. What are the use case of intra document level permission?
- emteycz 5y agoE.g. managers having different information about tasks diplayed in a table than programmers. You could do a different page for each group, but it's not as nice - different URLs, duplication of surrounding content, etc.
- polote 5y agoWell in my case each row is a document and the table is just a a specific king of structure, but is not embeddable in a document. But the thing is how generic you want your tool to be. In the notion case, everything is just an instance of something. So that's super flexible, but also super complex. You can simplify things by enforcing a structure while still doing 95% of the use cases You will never need to give a permission to a line of text
- nightski 5y agoThis is an armchair analysis but I feel like an ECS architecture here would really take this to the next level (flexibility and performance wise). But that is just my two cents. Some examples: context dependent rendering, having multiple "types" at once, etc...
- fellowniusmonk 5y agoAh yes, this is definitely what I was looking for, I've never done game development and I wasn't aware of this architecture but I definitely ended up with a hybrid/better than naive ECS architecture. It's quite fast, that's why I wondering about notions struggles with performance issues, seems like it may be in part because they use inheritance of blocks and nodes instead of composition.
- jitl 5y agoIn a previous iteration of Notion used a kind of model kinda like ECS, where each block was represented by multiple records called "reference" and "composite", so a block could have different type depending on context. From an internal doc on history: > We later decided this wasn't useful or necessary and collapsed them into one thing. WTF was I thinking??
- Huggernaut 5y agoAt http://story.ai http://story.ai the editor makes use of an ECS (Shipyard Crate in WASM). The flexibility it affords us has been super powerful particularly in support of constructs that are close to a programming language (values in and out of scope, suggestions and autocompletions, determining whether a "skill" is fully formed for publishing etc) I haven't given extensive thought to where we diverge from Notion as the comment below mentions them moving away from it, but just wanted to say that your armchair analysis fits with our view.
- anonymouse008 5y agoI have no idea how to explain my model other than my very cozy rats nest that I’ve blown up 5 times and rebuilt — And after reading this article, I realize it’s a lot like blocks... I guess the way I’d explain it is that I add a template element to the blocks so that untemplated versions with live data are like a black box to other ‘pages’, only when a user says ‘I want this visible again elsewhere’ aka templates do I extract out the non-sensitive bits (user identifies sensitive info) to be used again in other pages.