5 ms·
Since it's not discussed in this article: Is there a write-up of the "suboptimal tech stack" and the hows and whys of the rewrite?
by black_puppydog 5y ago
Since it's not discussed in this article: Is there a write-up of the "suboptimal tech stack" and the hows and whys of the rewrite?
- jitl 5y agoI joined Notion two years ago, so this era predates me, but I can shed a little bit of light: 1. The web UI used Polymer/Web Components. Simon (CTO/cofounder) described this as building on shifting sand as browsers and poly fills changed the standards and things never seemed to work well for long. 2. There was a lot of Redis with Lua action, using Redis instances as a distributed system for some purpose I don’t understand. This never worked well. 3. There was experimentation with graph database like Neo4J which turned out to be slow for the kinds of queries Notion needed to do. Not sure if this was part of the first era or if it was tried out for the rewrite. Because of all that, they completely rebuilt the product using the most boring/normal technology possible. Today we run on Postgres/Memcached for data, a Redis for rate limit and queueing, and a Typescript/React front-end.
- reidjs 5y agoAs much as I like the idea of webcomponents and graph databases, I'm glad I left a job that was shifting towards using them. As cool as they are, they are a bit too risky to devote serious career time. I really hope webcomponents become a serious choice someday for your average developer, though.
- mimixco 5y agoWe make a product in the same collaboration space as Notion but we're a younger company. Our latest stuff is all Lit (what became of LitElement and Polymer). Today, web components in general (and Lit in particular) work really well on all modern browsers. For us, with the current state of web components, we see this as the ideal time to move to all web component UIs going forward. We view it as a strategic advantage.
- ronyeh 5y agoThanks. Interesting to hear what goes on behind the scenes! Random bug report. On Android while making checkbox lists, I always have to hit enter twice to get to the next line. If I hit enter once, the cursor visually moves down to the next line, but once I start typing the new line gets joined back onto the previous line. I notice this happens when I don't add an extra space at the end of the first todo/checkbox item. Sorry to jump on your comment with a bug report!!
- jitl 5y agoInteresting, we fixed a bug like this on iOS when iOS 13 came out. I wonder if your keyboard is doing something similar to the iOS 13 keyboard. What phone, OS version, and keyboard software do you use? Does this happen with all keyboards, or just your favorite one? (I tried on my Pixel 2 / Android 11 with Swiftkey and Gboard in English and Korean, couldn't repro)
- oujunhao 5y agoNot OP, but I have this same issue on a OnePlus 7 Pro with Android 11, using Gboard in English. Interestingly enough, it doesn't happen when using Gboard in Korean or Chinese. Also, if I tap on the end of a line and press newline, I get another block. If I type something and then press newline, then it happens exactly as ronyeh described (again, only with Gboard in English)
- ronyeh 5y agoI can send this bug report into your regular notion support email. But I'm on Android 11 on a Motorola hyper one with the default Gboard in English. I just downloaded notion today and my OS has no pending updates. I can repro 100% of the time. - [ ] my to-do item$ - [ ] my to-do item $ In the above two examples, if I press enter when my cursor is at the end of the line (indicated by the dollar sign), the top example does the wrong thing. The bottom example works fine.
- myth_drannon 5y agoI thought UI is in Clojurescript with Datascript, or was it Roam...
- bartaxyz 5y agoFrom the look of the code of their website and the fact that they have 'isReactNative' variable declared, I believe they're using react-native even for their website. Which would make it single frontend codebase for all of their platforms.
- askafriend 5y agoBut React Native is a mobile framework...how can they use it on their site? I don't think that quite makes sense.
- philip1209 5y agohttps://github.com/necolas/react-native-web https://github.com/necolas/react-native-web
- manmal 5y agoThis project really has gone full circle.
- askafriend 5y agoWow...that's both hilarious and amazing at the same time.
- moooo99 5y agoSharing the codebase between all apps would definitely be an explaination for the occasionally unpleasant desktop experience.
- jitl 5y agoI'm an engineer at Notion. We don't use React Native (I worked on the rewrite of our apps to remove it). There's still a bunch of code that refers to our mobile app platform as reactNative, which is what you're seeing.
- bartaxyz 5y ago
- ksec 5y agoI always thought they were using Ruby Rails. Looks like I was wrong. What do they use for their backend now?
- mimixco 5y agoNotion blogged (once they fixed the problem) that their original design had all customers' data in a single, unsharded database.