Exciting stuff Luca. Cool to see you're using BlockNote as the editor (project I'm working on). Let us know if you have any feedback for us / features you'd love to see!
HN user
YousefED
https://www.twitter.com/yousefed
Excited about Local First software and Future of Programming concepts.
Founder of https://www.blocknotejs.org and https://www.relive.com (outdoor app)
In our case, they started building on top of our project and then reached out, so not sure I can share any lessons on this. With that said:
- I think administrations in the EU are (slowly but steadily) adopting "Public Money, Public Code" policies and looking more seriously at open source
- Note that policy / strategy on this depends a lot per country / local administration / project etc. I think most governments don't actively develop in house - France is quite the exception in this
- There are a number of conferences that might be relevant (FOSDEM for example just finished)
- We also benefitted from EU grants (e.g.: NLNet) to bootstrap our work and the early research phases
Think of Docs more of a modern, kind of Notion-style collaboration tool. It's not meant to be a Word replacement for full-scale document authoring (I believe La Suite will work with LibreOffice for that, but might be wrong here). The product vision is that Docs should focus on "Content over Form"; i.e.: make it easy to create well-structured documents (content), as opposed to Word which makes it easy to change every little visual detail of your document (form).
In addition, there are some advanced integrations with other products in La Suite. For example, video calls made in Visio can be automatically AI-transcribed and presented in a Docs document, etc.
Great to see this on HN. fyi, La Suite is an umbrella project built by DINUM in France that started several years ago, mainly to enable people in the public administration to use more independent tools. It's built in-house, often on top of other open source technologies. E.g.: Matrix powers chat and LiveKit powers Visio (which was recently featured on HN as well when they announced it's rolled out to replace Zoom / Teams, etc [1])
I'm fortunate to be collaborating with them as their Docs product is built on top of our open source BlockNote text editor (https://www.blocknotejs.org).
Docs specifically started as an international collaboration with Germany [2] to explore how different EU countries can collaborate in building sovereign workplace solutions (several other countries including NL have shown interest as well).
They're actively supporting us, and related projects like Yjs (https://yjs.dev) by sponsoring feature development.
I'm sure many of the team members will follow along here as well! Happy to answer any questions.
[1] https://news.ycombinator.com/item?id=46873294 [2] https://www.zendis.de/en
They're pretty mindful of sponsoring things that also works for us. I.e.: we try to align both our roadmaps as good as possible.
We're discussing how to work best with downstream dependencies as well. So far they're actively sponsoring Yjs, but not prosemirror/tt.
fyi, here are some early thoughts by the PM of Docs on how to collaborate between public sector and OSS (companies): https://github.com/virgile-dev/playbook-work-with-oss-librar... (we surely don't check all the boxes yet, but it's good to have the discussion!). Feel free to jump in!
I work on BlockNote (https://www.blocknotejs.org), the block-based editor that powers Docs (https://github.com/suitenumerique/docs).
1.5 year ago DINUM (La Suite) and OpenDesk (Germany) reached out and started sponsoring quite a bit of our work which has really helped us accelerate the project
Yep! Docs is using our editor BlockNote (https://www.blocknotejs.org) which builds upon Prosemirror (and we're also proud to be sponsors of Marijn from Prosemirror who's done an amazing job, indeed)
Maintainer of BlockNote here (and contributor to HocusPocus). I can't speak for Docs as to why they chose BlockNote, but can answer some of your questions. BlockNote is actually built on top of Tiptap - but designed to take away the heavy lifting. As powerful as they are, to build a Notion-like editor on top of Tiptap (or Prosemirror) still requires quite some engineering firepower. We've built BlockNote to come "batteries-included" with common UI components and a simpler API to make it easy for you to add a modern, block-based editor to your app.
Congrats! I used PartyKit since the early beta; for the open source React rich text editor I'm working on (https://www.blocknotejs.org, the homepage runs on Partykit), and PartyKit was a breeze to integrate (ofc, big part because we both build on Yjs). Looking forward to seeing where Cloudflare wants to take this further!
Congrats OP on launching this, looking forward to dive further in! It's great to see people experimenting in the Reactive + Live Programming space as like you mention, I think it can bring a lot of improvements to how we build software. Did you run into any limitations adopting this model?
A killer feature of Observable notebooks for me is that they provide the shortest possible route from having an idea to having a public URL with a tool that I can bookmark and use later
Thanks for sharing simon! I'm working on an Open Source Notion + Observable combination (https://www.typecell.org), where documents seamlessly mix with code, and can mix with an AI layer (e.g.: https://twitter.com/YousefED/status/1710210240929538447)
The code you write is pure Typescript (instead of sth custom like ObservableJS) which opens more paths to interoperability (aside from having a public URL). For example, I'm now working to make the code instantly exportable so you can mix it directly into existing codebases (or deploy on your own hosting / Vercel / whatever you prefer).
Thanks, great feedback!
Although it's entirely architected on a local-first stack, I indeed haven't shipped the main benefit of this, a locally installable app. There's a WIP PR here that adds PWA support: https://github.com/TypeCellOS/TypeCell/pull/352. I'll highlight this more when this is merged.
Nevertheless, some of the benefits are already noticeable and come "out of the box" with building on a local first architecture, even if not shipping an executable yet: - multiplayer sync - speed: documents are loaded from local storage initially if they have been loaded before, and changes sync in after that
In the future (when there's an installable app), I also want to enable saving / loading from the file system, so that it's completely transparent where your data is.
This article has been quite the inspiration for many projects and progress on this front. I think we're seeing more and more developments around CRDTs and local-first frameworks / applications.
I'm working on a few projects in this area:
- https://www.typecell.org - Notion meets Notebook-style live programming for TypeScript / React
- https://www.blocknotejs.org - a rich text editor built on TipTap / Prosemirror that supports Yjs for local-first collaboration
- https://syncedstore.org - a wrapper around Yjs for easier development
In my experience so far, some things get more complicated when building a local-first application, and some things get a lot easier. What gets easier is that once you've modeled and implemented the data-layer (which does require you to rethink / unlearn a few principles), you don't need to worry about data-fetching, errors etc. as much as in a regular "API-based" app.
Another interesting video I recommend on this topic is about Linear's "Sync Engine" which employs some of the local-first techniques as well: https://www.youtube.com/watch?v=Wo2m3jaJixU
Do you have a link to the MIT license of the editor? As far as I can see its also CC NC
If you're interested in this hybrid of docs and live coding, I'm building something similar for the Typescript / Javascript / React ecosystem @ https://www.typecell.org (open source). See https://twitter.com/YousefED/status/1677342430545301504 for a preview of the next version which will be more "wysiwyg" than the current notebook environment
Thanks for the shout-out!
Congrats on the YC funding and the launch! I've enjoyed building https://www.blocknotejs.org on top of TipTap / Prosemirror.
fyi, BlockNote aims to be a bit more batteries-included (comes with UI and block-based editing) - in case headless text-editing libraries are a bit too much work / steep learning curve.
Fyi, I'm building an open source block-based editor @ https://www.blocknotejs.org that uses one large contenteditable and doesn't have those downsides you mention. It's built on top of Prosemirror.
Would be interesting to see projects going beyond contenteditable for sure!
Congrats! Having wrestled a lot with contenteditable I realize this is no easy feat.
I'm building a similar library, but with a block-based (Notion style) approach, also on top of Prosemirror (see https://www.blocknotejs.org) - great to see more projects in this problem space! Welcome any feedback!
Thanks for the feedback! It was designed from the philosophy that existing frameworks like PM or even TipTap are too low-level - but I can understand you need more ways to customize UI elements. It's certainly possible, but I think we need to document it better
It can be used for other frameworks than React, but the React version comes with built-in UI components. See https://www.blocknotejs.org/docs/vanilla-js for more info
fyi, from my experience it’s still quite a lot of work to build on top of Prosemirror and TipTap directly to do so.
So I’ve started working on https://www.blocknotejs.org to make this even easier for developers; its a batteries-included library with Notion style UI elements out of the box.
Definitely bullish on this ecosystem including Yjs and local first dev!
Hi HN! BlockNote is an extensible, block-based editor (similar to Notion, Coda, etc.). Featuring different block types, animations (try changing block types, indenting, etc), menus, placeholders, collaboration and more you expect from a good editor.
BlockNote builds on top of Prosemirror and TipTap (two great libraries to build text editors for the web and work with ContentEditable and its quirks), but these libraries are pretty bare-bones / low-level("headless").
I hope BlockNote makes it a lot easier to get a great out-of-the-box text editing UX and am looking forward to your feedback!
I just added real-time collaboration to the demo on the homepage (desktop only), powered by Yjs & Partykit - definitely play around :)
What makes me most excited about this is that it uses LLMs in a way that the result (a computer program) is still understandable and editable (hackable).
Instead of having an AI model output some kind of "black-box conclusion" on a data set / question, it can output code that we can inspect, improve, and learn from. Using LLMs in this way still keeps us as users "in control" - and I think it's a promising path for responsible AI.
I've done some experiments[1] adding ChatGPT-like functionality to my open source Typescript Notebook environment[2] back in december, and hope to revisit this soon :)
[1] https://twitter.com/YousefED/status/1599805936280907776 [2] https://www.typecell.org/
Hi HN!
I've been working on a "notebook"-style live programming environment called TypeCell (https://www.typecell.org). It mixes TypeScript, Monaco (vscode) and full NPM support into a as-you-type live programming experience.
After being amazed by ChatGPT last week, I gave it a go to integrate it into TypeCell. Still can't believe it actually works! Most prompts work in one go. If it gets a little bit more complicated, sometimes I need to add some instructions about the error I'm getting or about a possible fix.
I’m working on an open source notebook with built-in support for React and Typescript. It also comes with a built-in reactivity model and evaluate-as-you-type. To be open sourced soon, but preview version already available at https://www.typecell.org
Hi! I think the Liveblocks demo is quite impressive as well! It looks pretty smooth. One of the main things I'm missing is the ability to nest (indent) blocks similarly to how Notion / BlockNote allows this. This was quite a bit of work to get right in BlockNote.
BlockNote's live collaboration is powered by Yjs, or (y-prosemirror to be exact). Highly recommend checking it out!
Toggles are on the roadmap to add! They are definitely a basic kind of block that should be built-in.
Databases/tables are a whole different ball game of course. I’d like to focus on building an open source, reusable text/block editor on par with Notion’s editor, not to build a clone of their entire product :)
Thanks! Agree those components are important. Some of them are already available for the Prosemirror ecosystem, so it should be straightforward to add them.
Focus so far for BlockNote has been to get the “block” system right (including nesting, drag and drop, etc) and the basic UX elements (placeholders, menus, etc). Now I think we can continue working on more block types!
Very exciting! Great to see support for yjs. Does fb use yjs internally? Would love to learn more about this!
Love the examples in this blog (both use cases and prior art). Thanks for sharing.
I'm currently exploring what the ideal end-user-programming environment for this could look like https://www.loom.com/share/6fd5637254584cfea8de315f0f3b532c. I'd love to see end-user programmable applications that can be customized like described in the blog - in an environment that reacts as spreadsheet software (immediate results, no need to fire up an external editor or wait for a build-loop).