I built a faster Notion in Rust

(imedadel.com)

173 points | by PaulHoule 5 days ago

28 comments

  • arnaudsm 21 hours ago
    This is great, I wish tech giants focused more on latency.

    Gmail, Notion, Facebook, are painfully slow on my high-end laptop with gigabit ethernet. Something is wrong in our modern engineering culture.

    • wkjagt 19 hours ago
      I recently started looking for a new(er) laptop, because it often felt slow. But I started looking at when it was slow, and it was mostly when using things like GMail. I guess my feeling was "if my laptop isn't even fast enough for email, it's time to upgrade". But doing things I actually care about (coding, compiling) it's actually totally fine, so I'm going to hold on to it a bit longer.
      • Sanygeek 17 hours ago
        This is the exact feeling I had. My 2019 intel MacBook Pro has 12 cores, 32gb ram and a 1TB hard drive. Yet, most consumer web apps like Gmail, Outlook and Teams are excruciatingly slow.

        What is surprising is that a few years ago, these apps weren’t so terrible on this exact hardware.

        I’m convinced that there’s an enormous amount of bloat right at the application framework level.

        I finally caved and bought a new M series Mac and the apps are much snappier. But this is simply because the hardware is wicked fast and not because the software got any better.

        I really wish consumer apps cared less about user retention and focused more on user empowerment.

        • iknowstuff 12 hours ago
          All it would take is forcing an artificial CPU slowdown to something like a 5 year old CPU when testing/dogfooding apps for developers to start caring about performance more.
          • small_scombrus 5 hours ago
            > All it would take is forcing an artificial CPU slowdown

            Technically, yes. But for many large tech companies it would require a large organisational mindset shift to go from more features is more promotions is more money to good, stable product with well maintained codebase is better and THAT would require a dramatic shift away from line must go up to something more sustainable and less investor/stock obsessed.

    • DarkNova6 21 hours ago
      I think the problem is a lack of "engineering culture".
      • PaulHoule 20 hours ago
        People experience latency but if you “saw like a corporation” you could only see throughput and never latency.
      • CuriouslyC 20 hours ago
        Obviously not with Gmail/Facebook, in that case it's just 100% incentive misalignment.

        The others, probably, VCs are incentivized to fund the people who allocate the most resources towards growth and marketing, as long as the app isn't actively on fire investors will actively push you away from allocating resources to make your tech good.

        • umanwizard 20 hours ago
          You would be surprised at how bad the “engineering culture” is at meta. There are surely people who care about page load latency but they are a tiny minority.
          • samdoesnothing 13 hours ago
            I mean, if you look at Meta's main product it's hard to imagine anyone there cares about engineering. It might be the single worst widely used tech product in existence, and considering they produce the frameworks it's built on it's even more embarrassing.
            • umanwizard 13 hours ago
              There are a few people who care A LOT about engineering, otherwise everything would completely collapse and not work at all. But they are far from the majority.
            • NuclearPM 10 hours ago
              What would you change about it?
    • koakuma-chan 17 hours ago
      Of course. Anything that has greedy and/or non-technical management will be slow.
    • stu2421 20 hours ago
      Mono Avalonia Not i on 1 No te
  • braza 19 hours ago
    Last year after a thread around Obsidian and the downhill of Evernote I took almost 6 months to migrate more than 100K clippings and notes and it's so refreshing to have your own data in sync in your terms and not be in any proprietary format, that I do not image myself going to anywhere that I cannot push/retrieve my notes in my own terms in a portable format.

    Notion is a great product for corporations, and I get why companies are jumping on this bandwagon so fast; however, as a consumer, I wouldn't consider it or any option based on seat (like Outcrop) or any that wouldn't give me a binary that I can use in whatever machine that I want.

  • bryanhogan 13 hours ago
    I can highly recommend Obsidian for long-term knowledge bases. Have been writing about using it well: https://bryanhogan.com/tags/obsidian

    It's missing collaboration at the core, although it's possible to achieve this currnetly with third party solutions, or the next major update should also include it as it's the "multiplayer" update.

    • henryhchchc 5 hours ago
      I am using Obsidian with the markdown-oxide [0] language server in my favorite text editor. It works pretty well for link navigation and completion.

      [0] https://oxide.md/

      • small_scombrus 5 hours ago
        How do you manage the more Obsidian-y sync side? Do you have it open with no tabs, or something else going on?
      • backscratches 5 hours ago
        Fantastic tool.
    • dtkav 12 hours ago
      I work on one of the third party plugins enabling real-time collaboration in Obsidian called Relay [0].

      We have a novel architecture where you can optionally register a self-hosted relay server with our control plane for complete privacy for all of your docs and attachments.

      We know that people typically prefer to have a unified vault, so you can share individual folders with different groups of people within your vault.

      Relay is free for markdown docs up to 3 users, and then we have a hobby plan which includes attachment storage (especially popular with D&D and TTRPG players), as well as per-seat plans for businesses and universities. There are a couple of cloud-only alternatives like peerdraft and screen garden as well.

      [0] https://relay.md

    • thewhitetulip 2 hours ago
      I've written a full length novel in Obsidian and it's fantastic for writing anything.
    • bad_username 13 hours ago
      Obsidian is nothing less than a complete IDE for text.
  • perfmode 11 hours ago
    Curious about the authors authz implementation.

    Preloading authorization data into memory does not, by itself, provide the specific security guarantee (consistency) that defines Zanzibar.

    The Zanzibar model is famous not just because it is fast, but because it solves the "New Enemy" problem (or causal consistency). Simple in-memory caching (preloading) often fails this test unless it is paired with complex invalidation logic that mimics Zanzibar's Zookies.

    • jschorr 10 hours ago
      It is actually slightly worse than even that: while New Enemy [1] is the primary concern, caching like this can also introduce a staleness issue from the other direction: let's say a user adds a new row or document, and immediately sends the link to their coworker... who tries to load that piece of data, but the (stale) access control dataset is cached and they are not in it... they get a "no access" error. While certainly fail safe (vs fail dangerous for New Enemy), it can be a fairly important UX concern as well.

      Generally, the solution is to keep a timestamp of when the data changed (Zookies as you mentioned) or you can proactively reload or recompute the cache when the underlying data changes (sometimes in very smart ways), but yeah: it adds significant complications over a "simplified" approach to Zanzibar.

      Disclaimer: I'm the cofounder and CTO of AuthZed and we develop the SpiceDB [2] and Materialize [3], which have quite a bit of logic around these exact problems

      [1]: https://authzed.com/blog/new-enemies#the-new-enemy-problem [2]: https://spicedb.io [3]: https://authzed.com/docs/authzed/concepts/authzed-materializ...

      • fud101 5 hours ago
        Hi, i'd like to implement my own version for learning purposes. Do you have any recommendations?
  • Sytten 21 hours ago
    The prosemirror port would make for a nice OSS library if OP is willing to put it on crates.io.
  • hresvelgr 21 hours ago
    Looks promising. Where I think Notion really succeeds is letting people easily make attractive live documents. Where they've meandered off imho is trying to shoehorn in an RDBMS. If you can enable people to make pretty pages, and keep your document format simple, you'll be off to a very good start.
    • dabbz 3 hours ago
      The people yearn for a database. Everything ends up trying to be MS Access, the perfect software.
  • xanth 20 hours ago
    This looks like it has great potential, but what I really want is an open source "notion" with a well considered plugin & schema model. I desperately want to sync back all my data into a single cohesive graph; notes, reading list, messages, exercise activity in a more compute friendly format than MD files.
    • pscanf 17 hours ago
      Adding my own to the list: https://github.com/superegodev/superego (Warning: still an alpha.)

      Distinctive points:

      - It exposes the "database metaphor": your data is organized in collections of documents, each collection having a well-defined schema.

      - It's all local in an app (no server component to self-host).

      - It has an AI assistant on top that you can use to explore / create / update.

      - It allows you to create small personal apps (e.g., a custom dashboard).

      - It allows you to sync data from external sources (Strava, Google Calendar, Google Contacts.)

      Cons:

      - The database metaphor is quite "technical". A "normal" user is not comfortable with the idea of creating their own collections, defining a schema, etc. In fact, right now I only have developers and techies as a target audience.

      - It's not optimized for any one use case. So, for example, as a notes-keeper Notion is obviously much better.

      - It's still in early stages (I'm working on it alone), so:

        - There's no mobile app yet.
      
        - It doesn't yet support syncing between devices.
      
        - There are just 3 connectors to sync from external sources.
    • square_usual 18 hours ago
      There's a ton of these right now. I did some research the other day and found at least five "open source" (to various degrees, all of these are not strictly speaking open source but open core) notion alternatives, and they're all in some ways better, in some ways worse than notion. I settled on AFFiNE [0] because it felt the snappiest, but they've got a lot of telemetry and tracking so I forked to remove that and use my telemetry-removed frontend as a PWA.

      [0]: https://github.com/toeverything/AFFiNE

    • fourseventy 18 hours ago
      You should look at https://github.com/TriliumNext/Trilium. It's what I use every day for the things that you mentioned.
      • Fervicus 18 hours ago
        Thanks for sharing. Are you using it on mobile? How is the experience?
    • neodymiumphish 20 hours ago
      It's definitely a work in progress, but AnyType has a lot of functionality similar to Notion. I haven't used it in a while, so I don't know whether there are plugins in any meaningful capacity.

      From past experience, it's even pretty simple to host your own sync server to get away from their account/storage limits.

      • notachatbot123 19 hours ago
        AnyType is not open-source.
        • neodymiumphish 19 hours ago
          Fair enough, it's protocol is open source and the apps are source available. Modifications can be made by individuals for their own uses, though. I think it's as close as you can expect to get with a mostly full-fledged Notion competitor.

          In any case, I don't particularly enjoy AnyType, despite coming back to it a few times to test it out (and still maintaining my own sync server, despite not actively using it, in case I go back to try it out again after some demonstrably updates). Just pointing out that it's a less restrictive alternative.

    • wim 19 hours ago
      We're building a new multiplayer IDE but for docs/tasks [1]. Local-first, real-time collaborative and end-to-end-encrypted sync. Not open source but self-hostable with a single binary and hackable with plugins (custom properties, views, code, etc).

      [1] https://thymer.com

      • abstractbeliefs 18 hours ago
        No open source, then I'm not playing.

        I use Zim wiki for everything just now and I don't like it. I'm in the market for a replacement, and would even pay like with how Immich does it.

        Unless the source code is available or you put it into legal escrow for when you go bust/abandon the software†, I will not invest my time and data into a system where I am entirely dependent on another organisation or service.

        † And you will go bust or abandon the software before I die!

        • niklashog 14 hours ago
          If you need total control they offer selfhosting.
          • cweagans 4 hours ago
            That is not at all the same thing.
      • ednico 17 hours ago
        Seems amazing - I cannot wait to test Thymer out!
      • ObengObeng 17 hours ago
        I will definitely be checking this out when it comes out! Hopefully soon!
    • Jaxan 13 hours ago
      I specifically like md, because I will always be able to open it and modify, even if the original app no longer exists. I use obsidian without any extensions.

      I must admit that I don’t archive things like exercise activity. So maybe the simple mindset won’t work then.

    • bakli 20 hours ago
      Like Obsidian?
      • shmoogy 20 hours ago
        Obsidian isn't open source
        • echelon 20 hours ago
          I'm still happy to use it. It's not like they can rug pull on the data or even the existing app binaries.

          I'd really like to see the team get rewarded for their work, too. I'd be sad if it went 100% open and they didn't so much as draw a market salary from it.

          I think if it went open, they'd get nothing. That's the one thing I strongly dislike about open source is that only hyperscalers really economically benefit from it.

          They've done a remarkable service for all of us.

          • alabhyajindal 19 hours ago
            I used to be very against closed source products but changed my mind recently. One of the founders of Obsidian makes some great points here: https://forum.obsidian.md/t/open-sourcing-of-obsidian/1515/1...
            • j1elo 16 hours ago
              > From what I see of the pricing options in your business model, having your code released under a FOSS licence would make no difference to how you make money.

              Except that making their client FOSS would help a lot to replicate the APIs and create a FOSS server, which would definitely make a difference on how they make money.

            • stronglikedan 18 hours ago
              > The cost to benefit ratio is very low for our small team of 2, and our plate is already full.

              Wow, I didn't know the team was so small - go them!

              • wsve 17 hours ago
                It was that small in 2020, it's more in the 5-10 range these days
            • echelon 19 hours ago
              This is a great rebuttal.

              99.9% of the internet is closed source and we don't ask for it to be opened. From our ISPs, to Google, to the hyperscalers.

              If anything, I think we should be asking those things to be open. If we're only asking the little guys, the big guys with trillion dollar market caps skate by. This is exactly how they want it. Fewer gradients for small players to grow.

              • hexo 16 hours ago
                I do ask for that and generally refuse to use closed source sw. But... something being opensource doesnt always mean you can change stuff. Like signal-desktop that has build process so badly convoluted that even gentoo doesnt build it itself. (has it improved already?)
                • echelon 15 hours ago
                  Two things:

                  1) Modern 2010s era "OSI Approved open source" is a meme built by hyperscalers to get free work, poach the efforts of others (Amazon makes hundreds of millions on Redis, Elasticsearch, etc.) and eliminate the threat of smaller players.

                  There are great things like Linux and Blender and ffmpeg. But there is also a concerted battle waged by trillion dollar companies against us using "open" to salt the field of any kind of economic growth salient.

                  By being completely open and not keeping some leverage, you ensure you cannot make the same revenues the big companies can. And they will outspend and outgrow you. They will encircle and even find a way to grow off of your labor while you don't see so much as a dime.

                  2) You wouldn't be on the internet right now if you really refused to use closed source. The binary blobs in your hardware, your ISP, your wifi. Not even Stallman can do it.

                  I love open source. But I hate how difficult it is to make money. And I hate how the big players have used it to enrich and entrench themselves by making it just the crust of their closed source empires.

          • braza 19 hours ago
            > It's not like they can rug pull on the data or even the existing app binaries.

            This.

            I spend 6 months to export 100K notes from Evernote mostly because they intentionally throttle the exports to a limit and you can extract it only in their proprietary format that truncates some data.

      • Kye 20 hours ago
        I was surprised at how similar Trilium looks to Obsidian when it was suggested in a thread somewhere: https://triliumnotes.org/

        It's open source and as far as I can tell uses a database.

    • kgarten 20 hours ago
      Logseq? (Though it uses md)
    • scoring-wade-6c 15 hours ago
    • elbear 17 hours ago
      Tiddlywiki
    • gman83 20 hours ago
      AppFlowy ?
      • blubber 19 hours ago
        Isn't really (ie fully) open source, is it?
    • albertdessaint 20 hours ago
      You might be interested in Graphiti: https://github.com/getzep/graphiti. With a self-hosted Graphiti MCP, you can connect ChatGPT or Claude to build a knowledge graph from all your data. You can then query and update the graph directly through conversation & by ingesting data and visualize the graph using tools like the Neo4j Explorer.Don’t know if that could fit your use case but that could be a fun way!
  • sgarland 20 hours ago
    It certainly looks like the author has given careful thought to making this performant, but I am skeptical about it at scale. While OT means there should be fewer updates than CRDT, you still wind up with a fair amount of them, and you have to periodically rebuild the base document from accumulated steps, which can be quite large.

    Assuming your backing store is Postgres, I’d experiment a lot with the various column storage strategies, at various sizes of documents and varying amounts of writes. The TOAST overhead can become a huge bottleneck.

  • yomismoaqui 19 hours ago
    Is this the new "I built a Twitter clone in a weekend"?
  • johnisgood 21 hours ago
    Irrelevant, but "a faster", not "an faster".
    • nicoburns 21 hours ago
      Looks like the original title was "an actually faster" and HN stripped out the "actually"
      • lagniappe 20 hours ago
        Automated or not, editing titles is not cool. What an odd double standard.
    • ls-a 21 hours ago
      It's actually an faster if they used rust
      • lagniappe 20 hours ago
        'an' precedes a vowel sound, 'a' precedes a consonant sound.
        • not-so-darkstar 16 hours ago
          it's a joke
          • lagniappe 13 hours ago
            what's the punchline? I like jokes
            • ls-a 7 hours ago
              you just explained an vs a. Be ashamed of yourself
  • WillAdams 15 hours ago
    The thing which I've always wanted to see is a knowledgebase system which uses a company's e-mail as an interface:

    - new e-mail from client comes in which can't be matched to an existing project? New page in the knowledgebase

    - second e-mail from client comes in w/ an attachment? It's stripped off and added to that page in the kb

    - employee sends out e-mail with link to the initial version of the project? The link is added to that page

    &c.

    Maybe AI could make something like that work now?

    • smodo 14 hours ago
      Still baffles me that Outlook won’t let me tie together emails, calendar items and documents. It makes so much sense to combine these things. All my meetings are about documents and their related correspondence but you never have a coherent information space for them.
      • WillAdams 10 hours ago
        I spend a lot of time saving Outlook messages to the file system and storing them for reference later.
  • woile 20 hours ago
    prosemirror in rust? I'd like to see something like that!
  • bomewish 19 hours ago
    This looks like a tidy little out of the box fts system. I’d use it as a tantivy interface basically. And I’d pay for it if it had good and simple document ingestion and metadata search semantics. Not the intended use case really but this doesn’t exist.
  • airstrike 21 hours ago
    Really cool stuff. I will spend some time here digging into the details.

    I've built a Cursor for business users in Rust. Spreadsheets, slideshows, and an agentic loop.

    If you're up for it, it would be nice to chat and share stories and vision.

    Email is andy at inboard dot ai

  • nixpulvis 16 hours ago
    > It’s not decentralised, it’s persisted to Postgres, but loaded in memory on startup.

    How are changes to permissions managed I wonder.

  • hexo 16 hours ago
    Nice. I dunno what is Notion but I suppose - I tried Obsidian and some other sw i dont recall anymore, never liked it. Then I found org-mode in emacs and gave it a try. I did not look back except for one feature - mind maps or 2D note taking. For this I've tried mind maps but it just wasnt really what i needed or wanted. I probably dont really know what I want or mean by 2d note taking, I just have some vague idea.
  • aswegs8 21 hours ago
    Whats your pricing? Will early access be free?
    • Sekhmet 20 hours ago
      > Each seat will cost around €/$10. If you see yourself using this product, consider sponsoring Outcrop today for €/$100; you’ll get €/$200 as credits on launch.

      From the linked blog.

  • denysvitali 17 hours ago
    > Something went wrong! Cannot read properties of null (reading 'enable')

    (On outcrop.app)

  • ancharm 19 hours ago
    Will this also be available on the web via WASM compilation, in addition as a desktop app?
  • CalvinClare 18 hours ago
    While it's possible to develop a more convenient version of Notion, I think it's only suitable for practice, since we can't compete with companies that monopolize the AI note-taking industry.
  • thiago_fm 20 hours ago
    I see a big amount of naiveness on his post, I tried to view it with a positive mindset, but I can't help myself and think how naive his perspective on that is.

    First, lots of server-side code is IO-bound, writing it in Rust vs. Java/C# would barely show any difference in a Monitoring tool, in a real-life scenario.

    His authorization system is very limited in scope, of course it can be fast! Get real users and we will see if that will still be fast.

    When you are running it in production, even if using Zanzibar's approach of loading everything into memory, you'd still need to handle many aspects he didn't think of, like updates to such permissions, and dealing with sharding etc. Things are always more complex in real life.

    And last not but the least, Notion is really fast as it is. I never knew it was slow.

    Without bringing any new concept to "Notion", I find it hard to believe this will ever work.

    I hope he finds happiness building it though, building is fun!

  • 0dayman 19 hours ago
    Obsidian is much better
  • tonyoconnell 17 hours ago
    You can make your website run fast as well with https://astro.build - it strips the Javascript and uses HTML until js is needed. You can get 300ms page loads for outcrop.app with Astro on Cloudflare Pages. Good luck with the project. I requested early access - You should use the response to the form submit requesting access better - I mean somebody who added their email expressed a lot of intent - why end the conversation with a toast notification? I hope life is going well in Dublin.
  • beswalod 21 hours ago
    Another Notion-like app. But it's already many FOSS alternatives
    • crashabr 21 hours ago
      What are they? The thing I value the most is the collaboration and the relational part, allowing to build pages that are essentially views on other data.

      The only one I'm looking forward currently is the next version of Logseq which will enable collaboration on their existing block-based authoring model.

  • drcongo 21 hours ago
    Loved the thought processes in this post, so definitely interested. Notion always feels half-baked.
  • mellosouls 19 hours ago
    Unless its open source I can't really see the point with bragging about it being in Rust. Its just another product, and its either faster or its not - the underlying language or platform is pretty irrelevant.
  • wjsdj2009 20 hours ago
    Interesting perspective. Thanks for sharing.