Co-founder of Motif here. We're building Motif because we think that ultimately, there is no difference between a document and a full-blown website. The tool needed to author such docs should be at the intersection between a coding environment and a word processor, and leverage open web technologies. The goal is that, by building a platform geared for content creation, with a rich set of tools and helpers (think drag and drop, asset management, WYSIWYG editing, shared components, instant publishing...), we can make software development accessible to more people than just developers, and improve collaboration between teams that have been siloed apart in different tools.
Today, Motif is a collaborative text editor (based on Monaco + Yjs + Replicache) that runs entirely in the browser (thanks to esbuild, no local Node dev environment required). It also syncs with the file system so that you can use your tools of choice (we posted about this last week [1]). It supports MDX [2], Markdoc [3], React/JS/JSX, Tailwind CSS, and ES module imports. It features instant publishing (as a Next.js application hosted on Vercel).
Why MDX and Markdoc? While we do think that MDX provides the most versatile format and the most powerful API (with the Unified.js ecosystem, which we will soon support), we want to give optionality to experiment and choose what is best for a given situation. Other formats, like AsciiDoc, might also be supported down the line.
Yes that's one of the goals, and CRDTs are pretty much built for this. Also, browsers are starting to support Progressive Web Apps (PWAs), which enables the websites/apps themselves to be opened while offline.
Yes, this is an interesting topic. In Motif, we are using MDX for the page content, which has an associated AST and a nice set of tools (Unified.js [1]) to manipulate it. We plan to use this to track semantic changes in the content, and act in an appropriate way. For instance, if the same block of JS code is changed, instead of merging, we can prompt the user with a diff and allow them to edit the final version manually (effectively transitioning from a synchronous to an asynchronous workflow). In simpler scenarios, such as text markup, we can use heuristics like the ones presented in Peritext [2].
Definitely seems like an asynchronous workflow, kind of like with git, is the way. I wonder whether something like this for markdown could be doable, with a GUI being able to render not just the markdown in either of the conflicting versions, but with an editing suggestion, like the ones in Google Docs. Not sure whether this would benefit from an extension of the MDX syntax, or could be handled by the runtime diff of the ASTs.
Sure! Motif is an MDX editor running in the browser, with a full-fledged JS build system inside (based on esbuild). It allows you to publish your content instantly (in fact, as a Next.js app, deployed on Vercel, benefitting from things like ISR to make your pages fast, SEO-ready, etc.). For instance, the entire Motif website is built on Motif, including the blog, as well as our docs: https://motif.land/docs.
We're in an exploratory phase on this. We have been experimenting with reading the .git folder to determine the current branch, and store this info alongside the CRDT in the client. Still early to say whether this is a fruitful approach or not.
Mozilla doesn't even want to give add-ons some sort of file system access API (which means that since the switch to webextensions, mass downloaders/download managers have become rather gimped and cannnot download files to outside of the system download folder without prompting for each individual download, can't intelligently handle conflicts between new downloads and already existing files [1], etc. etc.), so I wouldn't hold my breath for them allowing such an API for websites in general…
[1] With the Webextensions API, you have to decide on an action before starting the download, and the only choices are "overwrite", "rename the new download" or "prompt the user". There's no "skip the download" option for example, and Firefox doesn't even support the "prompt the user" option, either.
Today, Motif is a collaborative text editor (based on Monaco + Yjs + Replicache) that runs entirely in the browser (thanks to esbuild, no local Node dev environment required). It also syncs with the file system so that you can use your tools of choice (we posted about this last week [1]). It supports MDX [2], Markdoc [3], React/JS/JSX, Tailwind CSS, and ES module imports. It features instant publishing (as a Next.js application hosted on Vercel).
Why MDX and Markdoc? While we do think that MDX provides the most versatile format and the most powerful API (with the Unified.js ecosystem, which we will soon support), we want to give optionality to experiment and choose what is best for a given situation. Other formats, like AsciiDoc, might also be supported down the line.
Would love your feedback! Our Discord is: https://discord.gg/MBMh4apz6X.
[1] https://motif.land/blog/syncing-text-files-using-yjs-and-the...
[2] https://motif.land/docs/basics/mdx
[3] https://motif.land/docs/basics/markdoc