This is a transcript. For the full video, see Adding Collaborative Capabilities to the Gutenberg Editor with Yjs - Tag1 Team Talk #011.
Preston So: [00:00:00] Hello and welcome to today's episode of Tag1 TeamTalks the webinar series about emerging web technologies. I'm really excited about today's topic. We're going to be actually discussing the future of collaborative editing in WordPress and Gutenberg with YJ. Yes. Joining me today are two of my dear colleagues Kevin Jahns, in Berlin, Germany.
Kevin is the founder and project lead of Yjs and the real-time collaboration systems lead at Tag1 Consulting. We're also joined today by my dear friend and Michael Meyers, managing director of Tag1. And my name of course is Preston So, I'm your host of Tag1 Team Talks. I'm editor in chief at Tag1.
I'm also senior director of product strategy at Oracle, and I'm also the author of Decoupled Drupal in Practice. Today's topic is going to be really interesting to pretty much every segment of our audience and everyone who works with a CMS on a daily basis, whether you're a developer or a content editor or a marketing team member, a lot of these ideas are very important to the future of collaborative editing.
And I want to talk today about exactly how Yjs is enabling a collaborative editing and shared editing in Gutenberg and a peer to peer fashion. So joining us today is Kevin and Michael to talk about this. But first, let's just take a bit of a detour.
Michael, why are we interested in this topic and why is Tag1 invested in this topic?
Michael Meyers: [00:01:24] This is a really exciting opportunity. You know, WordPress in particular is the most popular CMS that's out there. Uh, Gutenberg has been a major advancement in the platform and addressing content creation, which is, you know, one of the primary things that you do with a CMS.
Uh, and so this is, you know to be able to make it collaborative, which is what we're going to talk about today, to facilitate teams, to work together, to create content is what people need to do. Uh, and it's really technically challenging. It's really hard to make that happen. Uh, and the Yjs framework takes away all of that complexity and makes it super easy to implement.
So we're really excited to get this framework out there and show the potential of what it can do, not just for CMS systems, but to make any of your applications collaborative. So if you want to get on the collaboration bandwagon, reach out to Tag1 or Kevin and let us know how we can help you make that happen.
Preston So: [00:02:22] Wonderful. And just to kick things off here, let's take a big picture perspective on this and zoom all the way back out to the high level reasons why we're concerned about collaboration in the first place. We know that CMS is like WordPress and Drupal. They've been around for a long time more than, you know, two decades in both cases almost.
What exactly is the reason? What's the motivation? Why we need collaboration? And CMSs like WordPress and Drupal.
Kevin Jahns: [00:02:52] Yeah. So I think CMSs like WordPress and Drupal. They are really good at content creation, right? That's what they are built for, to publish content and show it to the outside world. I remember setting up my first WordPress site basically just a block and I wrote some blog articles.
And yeah. So that's like the idea behind these frameworks for a lot of people, right? So they should be really good at content creation, and they really are they handle so many problems. And especially like, I'm really impressed by a WordPress. They created this new editor, Gutenberg. That is awesome.
I would like to use it in, in many other projects too. And I'm a big problem in many CMSs is they the content creation part, like where you edit text. Is not collaborative. And that's for me, like yeah, an opportunity, right? I would like to bring shared editing collaboration to every platform that we use, to every editor.
That's my whole idea. And for me, this is a huge opportunity to bring a shared editing to Gutenberg. Let's start there. And let's talk a bit about why this is the right solution. Like, in my opinion.
Michael Meyers: [00:04:13] I feel like everything old is new again, right? Like back in the day, we used to cut and paste from Microsoft Word and other products into our CMS, and then we put a lot of effort into making our editors better. You know, now we have awesome editors like Gutenberg, but people are still working in other tools like Google docs because they want to collaborate with their teams.
So. You know we need to make that a core function of the CMS system to address the needs of users.
Preston So: [00:04:38] I agree. And you know, I think one of the things that's interesting about collaboration in the CMS is that you know, we know from previous Tag1 Team Talks, by the way, please check out our history of Tag1 Team Talks. You've got a great segment and a great set of videos about Yjs. One of the things that we know is that Yjs enables things besides just text editing.
So one of the things I find really interesting about the prospect of using. Yjs within the CMS context is potentially having collaboration between site builders and those who are managing layouts. Do we see kind of a future for that as well in the CMS? Because that's something that Google docs can't do.
Kevin Jahns: [00:05:19] Yeah. Right. I think that's always a drawback, right? We don't want to copy paste content from Google Docs or Microsoft Word because then you need to do all the formatting again, and it's basically a better idea to do that directly in the editor that is provided by the CMS.
Preston So: [00:05:36] The question is, you know, how do we think about the fact that, you know, a lot of CMS users, like content editors are managing texts, but we actually want to enable other things too, like layout building, right? I mean, and this is one of those very cases that in the CMS context.
It's something that you can only do in the CMS. Google docs can't handle layout management, for example. So do you see other applications for collaborative editing within the context of the CMS besides just texts? And besides potentially layout management, maybe even stuff like media?
Kevin Jahns: [00:06:08] Yeah. Right. Uh, so if you go on the website, you will see that you can create, for example, a cooperative drawing applications.
In Yjs too. And you talk about layout building directly in the CMS. Yeah. That's something that you can do in Google Docs and copy pasting will just really hurt. Like you don't want to do that. Maintain your sources on two places and then copy paste. It's the stuff back to WordPress because WordPress is really good at content creation and also at layout building and with with the additional of Yjs we make the Gutenberg editor collaborative.
Which will also enable you to make layout building collaborative. And we can make anything collaborative here, for example. Mmm. In the future, maybe there's a WordPress plugin that allows you to draw pictures or whiteboards or ideas, because like for me, drawing is really important. Yeah, you could do that directly in the editor without opening a some specialist software.
You can do that together. Drawing, drafting, and that's, yeah, I think that would be a huge deal for CMSs.
Michael Meyers: [00:07:24] It'd be really amazing if I could be working on a draft piece of content, a page, and I could lay out the page with you in real time and get your input and feedback before I publish it.You know it just makes the workflow so much smoother, right?
It's, it's how we work. I'm constantly gonna call you up and say, Hey man, take a look at this. Can you review it before I put this live? You know, what do you think? Uh, it just collapses the whole process into, into one step. Let's work together. Great. The content, and like you said, there's, there's no other way to do it.
It has to be part of the CMS if you're going to be improving the layout. So there's a lot of awesome applications for Yjs and a CMS beyond just the shared editing. .
Kevin Jahns: [00:08:06] Yeah. Right. I think especially for drafting, if you work together if, if you write an article that is not exactly finished and you really collaborate closely with other peers, you want the collaboration aspect.
Do you want to make a short outline? Maybe make some notes and if you want to like draw some high resolution pictures. The first thing that I do personally is I mean, make a draft. Like I just draw it by hand and then I make it professionally. And I would like to do that too. And CMSs. Because CMSs are like content creation.
It's not just about creating a finalized document. It's also about the process of getting to the final document. Right? And that's what collaboration is for.
Preston So: [00:08:57] I think that the CMS is one of those places where collaboration is key, but we want to also enable that in real time. And also in a, in a very decentralized way.
And we've talked about this before on our show, but we've never talked about kind of the most important topic that we have for today. And really a very exciting topic for myself and for the audience, which is. We're actually enabling the Tag1 Team is enabling collaborative editing on WordPress and on Gutenberg.
I mean this is an incredible development. It's one of the most amazing new features that I think adds to these experiences with any CMS. Let's talk about WordPress for a bit here cause I think everyone is really excited to hear about how exactly we're enabling collaborative editing in Gutenberg.
So what are some of the requirements that we need to enable collaborative editing in Gutenberg? I imagine you can't just install WordPress and it's already available as part of WordPress's default plugins. Right?
Kevin Jahns: [00:09:54] Yeah. Right. So we talked about this, like I mentioned it before. WordPress should just run on any server environment.
Like I mentioned when I was at school and I set up my first WordPress site, I hosted it on the cheapest WordPress site that I could found. It costs like $2 or three years to use. And yeah, that's what you need to be able to work with. And you can't set up a fully collaborative editing suite directly like on there and expect that everything will be performing and all the requests will just go in really fast.
But content creation, like collaboration like this should still be real time. So we thought about this a lot. And I think the Gutenberg guys who first worked on this project and had the idea, it brought up a few really good points. So WordPress including collaboration and Gutenberg, it should just work.
After you published it to your server, you shouldn't need to set up a second server or register an account at a third party client. You shouldn't need to be to do that. It should be really performant. It shouldn't like collaboration. It shouldn't block the server process. Like, imagine if you would send every keystroke to the server.
Which is basically how Google docs works on small instances. This, this might break the whole, the, the whole thing because they usually can't handle a lot of requests. So we are concerned about that and we have a solution for that. And furthermore, like collaboration should enable all the features.
And maybe more like if we talk about shared cursors. Uh, so you should be able to collaborate in the same paragraph. Like when you see two people should be able to work on the same sentence. Maybe one is bug fixing and one is adding new content. This is how I often create content with other people.
And I think it should be just seamless. It should just work. There should be no weird conflict. No conflict resolution. It should just be like Google Docs. Right? And, um. Yeah. There is something that we also talk about that we want to enable eventually. That's a versioning and Gutenberg like maybe you can hook it up together, Yjs how they store the documents because, well, if you go to the website Yjs.dev , you will see how we support versioning in ProseMirrror, which is a different editor.
And it's, it's pretty awesome. You can make a snapshot version, and then you make another version and then you can see the differences between the versions. There's just so much to show. And yeah, the last thing is offline editing. Like content creation often happens on a plane, on a train, on a bad internet connection.
And we would like to support that, like, we are open to think about that. I think it would be possible in the future. And Yjs is something that, well, just provides that feature.
Michael Meyers: [00:13:08] I think if you think about what makes WordPress, you know, the most popular CMS on the planet is, it's a really, polished product, you know, did it, anyone can use it, right?
That super small install all the way to the enterprise. So if we're going to make it collaborative. It has to kind of fit into that ethos. You know, what WordPress great or it's just not going to be a core part of the platform. You know, you can add any sort of plug into to WordPress. You can make anything happen and you can certainly, you know, add collaboration, you know, through that.
But to make it a core part of the CMS, it needs to meet these key requirements and today that has been, that's been really challenging until now.
Preston So: [00:13:51] You know, I would tend to agree. I think that a lot of the expectations that we have today are rooted in a lot of the history of the CMS rather than decades of how we've traditionally worked with the CMS. But we really need to reinvent the CMS world somehow. You know, I was talking to a friend of mine just a couple of days ago who said, you know, CMS is kind of boring.
There's not really any exciting going on in the CMS world landscape anymore, you know, and I said, well, no, I, you know, I actually think there is, it's just that we need to kind of change the way that we think. It's kind of like really reinventing the way that we approach the CMS as a product and as a tool.
And if we make collaboration, a core aspect, a core piece of functionality available in the CMS in real time. Rather than as a plugin, as you said, Michael, I think that's actually going to be a really good way to move the entire market forward. So it's not just about you know, out competing some of these other CMSs that might have the sense of real time collaboration.
It's really about changing the, the vision of what a CMS even is in the first place. It's a collaboration tool in real time. That's something that's never really been before. And I'm excited to see this happen, but we all know that this is. Not an easy process. Obviously Yjs makes this much easier, but there's a lot of challenges to implementing this. Uh, we've talked about a couple of these technologies. By the way, check out our previous Tag1 Team Talks . If you want to hear about ProseMirror, which we just mentioned just now, as well as some ideas about Web RTC, a peer to peer protocol. But I want to ask you, Kevin, how exactly can we bring shared, I think to WordPress and Drupal.
I mean, these are old technology stacks. How do we kind of marry the two worlds together?
Kevin Jahns: [00:15:33] Yeah. I think like there are lots of steps that we need to take and I think one of the cornerstones here is like something that makes it possible to bring shared editing to any solution. And especially to WordPress.
Um, it is that Yjs itself, it's, it's network agnostic, which basically means there are no restrictions on a specific protocol on a specific end point that you need to have and it's also peer to peer. And this sounds like like too much by what you need peer to peer in WordPress or other CMSs.
Um, here's how it works. We, we thought, we talked about the performance aspect and that we don't want to send every request to the WordPress site. And something that we could use is the web RTC connector. We talked about this in the last webinar which allows you to create a mesh network between all the peers that collaborate on the same document and uh, they will talk to each other directly without communicating.
Uh, through the WordPress site. Well, actually they talk a bit about it. Just to get, give a recap, there's the WordPress site still needs to be able to do the signaling part, which basically introduces one peer to the other peers, and then they can create a mesh network. So this is how it works and this this is really easy to implement.
It's basically just a publish, subscribe plug-in. That we would need to ship with a WordPress. We could implement a WordPress plug-in for that. Um I think that is really, really nice solution that basically fits in all the uh, things that we mentioned before, like performance and security. Like we can also talk about data ownership.
This data won't be at third party locations, which is really cool in my opinion. Like another thing is you could just switch it out and use a different WordPress plugin. If you really want to use WebSockets and persist the data directly on the WordPress side which is also really cool. It might be much more stable, but harder to maintain.
Like you could even use this third party location if you would, if you choose to, like why choose this network agnostic. You can use anything here, but the idea is to holds. You can just ship WordPress uh, with Yjs as a whole bundle. And if you don't need to set up anything else, that's really cool.
Yeah. So another thing that we need to do is still make the editor collaborative which is, well, it's actually still impressive right now. Um. The editor content itself, it's just immutable state that you need to share between like interests, a state object that you need to share between all the peers and Yjs already can do that.
So implementing shared editing, like the first draft of shared editing, that was really easy. It was really a breeze because WordPress already does it really well, like this statement instrument. So you just need to share the state and the editor is collaborative. Well, the next steps is like put cursors there and maybe some nice UI features.
That's still something that is missing. But yeah, these are the challenges. Like mainly that is missing is the WordPress plug-in for Web RTC or for web sockets. And the other thing that is missing is shared cursors and the UI aspect here.
Preston So: [00:19:17] And just from a, just to take things in a little bit of a different direction before we move into some of the other ideas here.
I'm , you know, I'm kind of curious, what was the kind of minimum viable product, you know, you mentioned Kevin that it was really easy to kind of start building a first draft of this implementation. What were the kind of core features in that? And did you have to take anything out and descope, let's say some of the more ambitious features.
Kevin Jahns: [00:19:44] Yeah, I mean something where we have to descope as as first was like making the full editor collaborative first because there were at that time, some things missing. For example, the Web RTC connector. It was just recently added to Yjs I had this for the last Yjs version and I needed to bump that.
Another thing is here, like you want security, some kind of encryption between the peers. That's also something that Y web RTC can now handle in combination with WordPress. So these are some of the milestones that we need to needed to take. Um so now all these these challenges have been solved, just need to be integrated.
So I think we had, we had really good place to continue development. Right now, like they hadn't been a lot of development in the last one and a half month. I think. The next step is just implement shared cursors and then provide the Web RTC plug-in that also handles a bit of user management.
So just tell the user that you have a specific name so that you can share that with the other peers. Like I'm, all the details haven't been figured out yet, but I think, all the groundwork has been done.
Preston So: [00:21:08] So let's move a little bit into uh, kind of and just to, just to stretch this particular kind of, kind of section out a little bit. You know, I'm kind of curious about the vision for Drupal. Um. You know, it seems very similar. It seems like you would want to have a Drupal plugin for web RTC triple plugin for web sockets.
That I think already exists actually but you know, have you all worked with people in Drupal on this? What's the kind of Drupal perspective here? Is it very different from a WordPress or is it still very early days?
Michael Meyers: [00:21:39] Well we, I mean. Yes, as a framework supports a large number of shared editors, and there are working implementations for these other editors.
Uh, so a ProseMirror is a great example. We have a really robust and fully functional shared editing set of capabilities already implemented into that. And so we have for Drupal, uh. Added ProseMirror as the editor within Drupal and through that had been enabled, you know, Drupal websites to do full collaboration users, permissions. It does it, I believe, currently Kevin in a, in a client server model, because it is for an enterprise client that has certain requirements. So they're not using the period or period K abilities yet. Uh, and I believe that's mean, that's been added, you know, recently. Um. But yeah, we, we have this working, you know, fully functionally as part of a dribble website, but not via Gutenberg, via other editors.
And that system also uses CodeMirror, in addition to ProseMirror so that you can do code with really awesome things like you know as you're typing, it pops up, hints as to like, you know, what you need to do next. And so you know, this is the, you know, taking Yjs and applying it to yet another editor in the ecosystem.
Um. And as Kevin said earlier, like Gutenberg is a really awesome editor. You know, I think that Drupal sites are even adopting it for its capabilities. So that's really the big next step here.
Kevin Jahns: [00:23:11] I think, like, I want to like you brought out something really interesting, the many editors that already are supported in Yjs and I talked about the web RTC plugin that needs to be edited to Word Press or like that we should. definitely at some point, add Drupal too which was a really small, simple plugin. As soon as we have that, as soon as we establish communication between the peers. Um we can enable collaboration in any editor that Yjs supports and Yjs already supports a lot of editors there is CodeMirror, ACE, Minako, ProseMirror Quill.
And I promise you the list will still keep growing in the future. So I think this might be really interested for a lot of people who use different editors who just prefer. Prefer a different content editors because they can just include it in their WordPress site or in their Drupal site. It will just work.
Preston So: [00:24:15] Absolutely. So we talked a little bit about some of the other solutions available on the market today. And you talked about the fact that collaboration isn't default feature in WordPress, and that's because of the kind of historical backgrounds. But why isn't collaboration a common or default feature in all these CMSs?
Is it just because of the kind of history of the CMSs, would you say there are other, there are other factors. I mean, they're, you know, there's a huge list of potential factors about why we haven't been able to enable a more realtime collaborative solution within these CMSs.
Kevin Jahns: [00:24:51] I think the main reason for that is doing collaboration is really hard.
And then you need to extend that to rich text editors, which is well, insanely hard to like, trust me. And then you need to implement that. The same algorithm. In the server and the client. So it's like double the work and a lot of smart people have been working on this problem. And so basically what you would end up in with most of the time is it's sort of an environment that is also written in Java script because it just makes sense.
It makes testing easier. It makes uh, you can use the same libraries. You can make sure that the encoding is the same. This encoding of operations, it's the same as well, that what you would use on the server environment. There are just so many problems. And the other thing is WebSockets historically, I'm not sure, haven't been that well supported and Drupal.
So, and that's a technology that you would need to use in order to support collaboration in the CMS, like Drupal or WordPress. And so, yeah, I think what you would end up with is, well, a lot of work, if you would like to implement that directly in repo.
I definitely want to talk more about that. I think it's an incredibly fascinating idea that. We're now really expanding the reach of what's possible with, with server side Java script. So one of the things I wanted to ask about though is, you know, there, there's other solutions out there, you know, that do actually work for this.
Ine of those that we identified way back in the day on one of our first episodes of Tag1 Team Talks was CK Source. What are some of the issues with CK Source and, and why something other than CK Source for this kind of solution.
Kevin Jahns: [00:27:55] I mean, yeah, CK Source, it's awesome. Like the idea here is CK Source.
They have their open source CK Editor and a CK Editor 5. It's pretty awesome and it directly communicates with their backend solution and it allows you to make any content collaborative. So it's makes it basically the same idea as we have, um. Like they did it much, much earlier, and they just provide Collaborative features for, for Drupal sites or like any site that uses CK Editor, which is really cool thing.
Here's something that is missing. They only support their Editor, the CK Editor. And the other thing is you wouldn't need to use their proprietary a server environment. I think you can just host it on your own, or you can use their server environment, so they handle all the scaling for you.
But here's my question. It doesn't like, here's my issue with that. It doesn't ship with WordPress. It doesn't ship with Drupal directly, you need, you need to set it up and you need to pay for it. And there's also like my opinion, small question of data ownership. Do you really own the data if it's on a separate server?
Um, how do you handle issues when, for example servers go down and content is lost and I would like to handle everything on one server location and in one database I would like to host it myself. Yeah. Here's another thing where it wouldn't work that well, is a lot companies use intranets to mmm. To host content, like just imagine for your company. Do you have like these really important government secret documents in your intranet and you put a lot of work into securing the data and keeping it within that intranet and now you want to make it collaborative and really makes sense for a company to work collaboratively.
Now you might want to make that collaborative and you need to host it on a third party location or do you need to somehow pay people who can hosted on your location? And there's a lot of trouble when you need to upgrade stuff. And. Yu know, and with that, with JYjs, you built this ship with WordPress?
So I think these are one of a few of the advantages that a Yjs um, has over a CK Editor, but still over CK Source, but still, it's an amazing project and it's already working really well and it's definitely they were some of the inspiration that I had for my project.
Michael Meyers: [00:30:49] Yeah, no, it's, it's a robust solution.
I think that the, the major differences is for me is what you hit at the end there. Kevin is the CK Source collaboration solution, purpose built specifically for the CK 5 Editor and so if you're gonna use another editor like Gutenberg,
Preston So: [00:31:07] which is, you know, quarter
Michael Meyers: [00:31:08] to WordPress it, it doesn't work.
Preston So: [00:31:12] if you want to make other
Michael Meyers: [00:31:13] applications collaborative, you know, that, that's what I love about why jazz is, you know, the, are using, you know, ACE in your application. It doesn't even need to be a CMS, you know, and you know, you
can plug that in.
Um, and that same technology enables you to make any aspect of your application collaborative, right?
You can't do layout building with the CK Source solution. You can't do collaborative drawing. And so it really, you know, for what it is that they've, I think they've led the market and have the most robust solution out there for a shared editing. It's just specific to that. And this is, you know, a framework that makes everything collaborative beyond.
Preston So: [00:31:54] You know, I think it's very interesting that we call this out as uh, a very important thing. You know, the fact that we want to have a collaborative solution that is open source not closed source from end to end. Obviously, one of the great things about Yjs is that it's open source and you can use it in conjunction with all these integrations that are also open source.
Um. One of the things that I found really interesting about our discussion just now is that a lot of people do have a lot of concerns about that ownership. I think this is one of the reasons why people want to have more of that peer-to-peer or decentralized kind of approach because they want ownership of their data on their own local machines and not have to necessarily share it with a server that's somewhere that they have no idea.
Where it is geographically there's also concerns around GDPR as well, and around some of the regulations that are emerging around compliance with how people handle data, how you have control over your data. And I think it's really interesting to call out the fact that, well, you know, with something like CK Source.
Uh, even though it's a very robust product, has been around for a long time. What if it gets into the wrong hands? What happens with all the data that you have to delete when somebody requests to be forgotten or, or things like that. So, very, very interesting. I think uh, you know, for CKEditor users clearly it's a very good solution and I want to look into it more as well, but it's something that's not necessarily the most compelling for people who are using these other editor, these other editors.
Obviously, you know, pros mirror. If you're using Gutenberg, it's not a viable solution. So now that we've talked, we talked a lot about some of these ideas around collaborative editing about the CMS, about how exactly we can use Yjs to make this happen. But one thing that I'm sure our audience is curious about is when is this all going to be possible?
What's the plan in the roadmap for making this work in Gutenberg? Uh, how soon can I just pull down a WordPress site and instantly have collateral editing? Is that like a year away? Five years away, 10 years away, you know, thousand years away. What's, what's kind of the roadmap look like? Kevin?
Kevin Jahns: [00:34:05] Like personally, I really hope that it will be possible this year.
So something I want to work on first is. To make this solution that we created um, available under under a future set. You can just enable it as an experimental feature because while it hasn't been tested, that well Gutenberg itself is still kind of experimental. So. Let's let's make incremental steps.
The first step that I want to take, like personally still need to discuss this, with the team, is I would like to enable this as a feature that you can use right now and like just make it experimental and find out how people are using it. And if there are any more problems, then we can continue and make it really nice UI integration here, like with shared cursor locations and like, there are so many problems.
For example, when you drag drop paragraphs from one location to the other maybe you want to highlight that that another user is currently dragging that paragraph. Like there's so many things that we could do and that have been done before and that I would like to do again for Gutenberg .
Preston So: [00:35:20] And one question about that right away. You know, one of the things that you mentioned is you want to find out how users are using this and interacting with shared editing with Yjs Is there any instrumentation built into the project where you're able to track certain actions users took or you know, is this kind of all wrapped up within the existing Yjs project?
Kevin Jahns: [00:35:44] Mmm. So the question here was like, do I like intercept these requests and maybe send them to my own server farm? Well,
Preston So: [00:35:54] Not necessarily to your own server, but you know, one of the things that Gatsby does, for example, is they do, they do telemetry, right? Where yeah, okay. Yes, they do submit that to a different server, but you can also disable it so that you only have it on your, on your local, I believe.
Is that kind of data that you're collecting? Like how people are clicking on things and interacting with things, you know, kind of like the full story idea, or is it more something that is a geYnerally about the operations themselves?
Kevin Jahns: [00:36:22] Oh man, I'm so afraid to implement a feature like that.
Yeah. I think that is something that would be really interesting. Like like my, when I first started implementing , Yjs like at the university, at the I5 Institute in, Aachen um, we talked about how we could capture these edits and how many deletions and how many insertions they are. And I think this is well, kind of interesting to get, and we made an experiment here. So on my first website I did that just send telemetry and I'm not doing that anymore because it turns out like the telemetric data often is bigger than the Yjs document itself. I don't want to block users, but yeah, actually I think it would be interesting if you ask the right questions.
Like, if we have specific questions, let's implement that to find out how people are using that.
Michael Meyers: [00:37:24] How many times do I rewrite that sentence?
Kevin Jahns: [00:37:30] I mean, I would be kind of embarrassed like to find out how often I restart or edit the same sentence or how long I'm stuck at certain sentences. That would be really interesting. Yeah.
Preston So: [00:37:44] You know, one cool thing that I can think about for a use case for this is something like Grammarly, right?
Like, where do you get kind of recommendations dynamically in real time and, and maybe, you know, you could have a little Clippy icon and integrate that with YJ as to say, Hey, you're really stuck on this sentence. You've been working on this sentence for too long. You know, here's a sentence that you might want to use instead.
Kevin Jahns: [00:38:11] Oh, that would be an amazing feature. Like just use this sentence and continue, man. Yeah, I would definitely de install Grammarly if Grammarly would do that for me. Um. Because, yeah, I always get stuck in sentences. Yeah. I think certainly something that that we should talk about more like as soon as there is a product ready and as soon as the feature flag is ready, that sends some telemetric maybe to the own instance, but only if it is enabled.
Yeah, definitely. Interesting. I also would like to find out more about how people are editing, using shared editing, if they are really working together. A lot. Actually, something that I've found out is that it's like why Jay is this all about conflict resolution? But I can find out if I have the document how many conflicts there are in the document.
And honestly there are. It's very rare that they are conflicts because usually server, the client communicates so fast with the clients, so I'm usually, there are no conflicts, but it's all for these certain 1 0.1% where you have a conflict and then Yjs very useful.
Michael Meyers: [00:39:26] There's a great startup business opportunity in here.
I'm writing my email or document, I get stuck rewriting. I could push a button and all of a sudden their professional editor pops in and starts collaborating in my doc with me, and it's like, no, no, no, no. Here's what you need to do. And I get that email out 10 times faster.
Preston So: [00:39:45] Um,
Kevin Jahns: [00:39:46] Oh, that would be awesome.
Michael Meyers: [00:39:49] collaboration.
Kevin Jahns: [00:39:51] Just the proof reader that is in the background like Grammarly, but a proof reader is sitting in the background. It's looking at your document and every time you make a mistake, you would go there and just fix it.
Preston So: [00:40:03] No, it would get rid of all of the need for spell check and grammar check in all word processors. Cause you could just hire somebody to do that for you. Right. I mean, and he would get rid of all of the automation problems with that too. Where. Like, no, that's an actual last name. I'm not trying to refer to some country.
Um, yeah, this is, this is, this is very great. We, you know I guess we'll have to take this offline and, and start talking to investors in Silicon Valley here and you know, I think this is, this is really funny because you know, one of the things that uh, I find really interesting about this idea is that. Once you actually get to the point where you've got different functions in the same documents. So you're talking not just about editing, but also proofreading, right? This opens the door to a whole workflow where you've got many different people interacting with you on a single project. That could be, you know, across a variety of media.
And they all have different roles, and this increases the, the kind of scope and the surface area that the CMS can really occupy and the kind of scope of what we're working on. So, you know, I find this really, really incredible and will be interesting to, to hear more about where this goes. Um.
Obviously it's not going to necessarily help me write emails faster. Cause my problem with writing emails is not that I make mistakes, it's more that I just don't know what to say. So we'll have to see whether, you know, I think actually doing the thinking process that's still a ways away for, for Yjs I think.
Michael Meyers: [00:41:30] I think the workflow is a really awesome idea where we're working on the site right now, now for a company and, and it's it operates in a ton of countries. And each country is available in, you know, one or more languages and you know, they have this really insane workflow where, you know, distributors basically own these countries and control the content that's on there.
Um. You made me think about how they could work collaboratively. You know, you know, it's not just the content creation, but it's the whole collaborative process to then translate these documents into all these different languages, the nuances that are involved, the review process, the back and forth. You know, you hear them talk about it, it's, huge pain in the ass, its crazy complex. Mmm. And this is something that would make it, I think, a lot easier.
Preston So: [00:42:21] And from the standpoint of a name for this kind of idea and how we can enable this, you know, we can call it as like content concierge or something free idea. Uh, if you decide to use that name I expect a $5 million check in my mailbox at the end of the week.
Thank you. So with that in mind, you know, I think we've talked about some amazing workflows. This enables, obviously the use cases are phenomenal. You know, the range of things that you can do that are possible here are, are nothing short of revolutionary. I'm sure that the Gutenberg team agrees.
What's the reaction been like? What if they'd been saying about this whole uh, kind of initiative to build collaborative editing into WordPress and Gutenberg.
The last question I wanted to ask was what's the reaction been like from the Gutenberg team? You know, I'm sure that they've been excited about this. I'm sure they don't see this as a normal, like a normal WordPress feature. It's clearly something that has a lot of staying power. What's the reaction been like?
Kevin Jahns: [00:43:22] I'm not exactly sure like how everyone thinks, but the feedback that I've gotten quite a lot is when they first see Yjs with peer to peer and offline and just, okay, it makes your editor just collaborative and it just works. And their question is, Man that seems really complicated. How is that even possible?
Um, like, um. I created this website, Yjs.dev, um, and it's fully available offline and there's versioning support and this, it works peer to peer and using WebRTC like, it just seems like magic and like kind of too good to be true. Right? Uh , I completely get that.
Just, just know that I've been working on this this project for six years and just. Just to get here to a stable release and to make all these future possible and performing. And like I've gotten a lot of feedback and I've addressed a lot of the problems with shared editing, especially with CRDTs.
And yeah, I can imagine that the feedback from a lot of people is, um. Man , this can't be true, right? WebRTC in WordPress. That seems to be kind of futuristic. Can we really use that right now? And, yeah. I, I think we can, I think we can implement that as a feature that will just work for most people.
And yeah, I'm really looking forward for actual users to use this feature and like, be amazed how fast this is.
Preston So: [00:44:54] Um, Michael, how about from your perspective? You know, you've got a very different kind of standpoint on this. Obviously the technology itself is very impressive. It's kind of magical. What do you see as the reaction being from the WordPress ecosystem, from the WordPress market? Um, how has the reaction been from the stakeholders on the Gutenberg side?
Michael Meyers: [00:45:16] Yeah, I mean, I, I think that, you know this is a huge priority for the WordPress community. It's, I mean, that moment is talked about at conferences. Um. You know, I think it's very much a feature that people want but until now, a lot of the challenges that we talked about have really made it, you know, far out of the reach of possibility, or at least, you know, a year or two, three years down in the roadmap.
I think what's really exciting about this is that we've proven that we can radically accelerate that. You know, with a little bit of funding and effort, you know, we can get this over the finish line in months as opposed to years. And so I think it represents a tremendous acceleration. You know, WordPress is dominant because of their ability to add things like Gutenberg.
Um, so I, I, you know, I'm really hopeful that, that we can accelerate the pace and with which this can happen and you know, I, I'm not like crazy involved in the, in the issue queues but, you know from what I've seen the conversations on GitHub It seems like people have been really excited about the early releases that Kevin's put out there.
The prototypes. Uh, there's a working demo of a Yjs with Gutenberg. Um. You know, and the progress that he's been able to make in such a short period of time, you know, in addressing, you know, feature requests like peer-to-peer and not having to install their technologies. You know, I'm hopeful that we'll continue to build on that traction and when more and more people over.
So I think it's been a really positive and that folks are really excited about it. And I want to see more.
Preston So: [00:46:59] Wonderful. Well, we're just about out of time and this has been a really exciting conversation. And I think we could go on for, for many hours and, and, and we'll have to have a brainstorm session about our upcoming venture but before we hop off here Kevin, how can people get involved? You know, I heard Michael mentioned that there's a demo available. There's a, there's some conversation happening on Github. Are there places that people should go if they want to keep track of the project and if they want to try it out themselves, report bugs add feature requests. Make your life harder.
Kevin Jahns: [00:47:31] Please do. Please make my life hard.
Just I would love to hear your feedback about this feature. You can try it out right now. Just go to the PR request that I open against Gutenberg and there I will continuously push updates like what is relevant updates to this project. And, um. Yeah. There's also a bit of documentation on how you can get this running.
You can actually get this running in your WordPress site. You just need to install this directly . But yeah, just try it out. Give me feedback. Things that might not work for you if it is not fast enough for you . Like please get involved. It's just follow this ticket.
Preston So: [00:48:16] Wonderful. And uh, Michael, just from your perspective, from the Tag1 kind of side of things people who are really interested in, in learning about their own ways that they can build in collaborative editing into their own websites and their own CMSs how can they get in touch with Tag1 to learn from our insights here.
Michael Meyers: [00:48:35] Yeah. A check out tag1.com/tagteamtalks We've done, I think this is like the six or seven talks we've done on Yjs, you know, there's a lot of information that we're trying to put out there to help people get up and running with it. You can also email us Yjs@tag1consulting.com if any questions you know, you can get free open source support.
Uh, via the community. If you're looking for some consulting services you know, paid support, please contact us. We'd love to help you get this up and running in your application.
Preston So: [00:49:10] Wonderful. Well, thank you both so much and thank you to our audience today. Uh, this was a yet another Tag1 TeamTalks episode this time about how to enable Yjs on Gutenberg and other CMSs. Thank you so much for your time today, Kevin, and also your time, Michael, I think our audience really enjoys hearing about this topic.
And of course, as always, one of the things that I want to mention is that if you liked this, this talk will be up and available on the Tag1 website at tag1.com/tagteamtalks/ All the links that we mentioned today are available with the link, with the link to the talk. We're going to share the Github URL. Obviously we'll share a lot of information about Yjs. If you did enjoy this particular episode, if you liked this topic. Please remember to upvote subscribe, follow us on Twitter, remember to share it with your friends and family, and if you have any suggestions for future topics, if you want to hear about something in particular, if you want us to talk more about how Yjs works in terms of other aspects of its amazing ecosystem, we'd love your suggestions.
Please write to us at firstname.lastname@example.org. Once again, I want to thank Kevin and Michael for joining me on this journey through Yjs shared editing today and until next time.