A deep-dive look at what's shipping, what's coming, and where the product is heading.
Speaker 0: Alright. And with that, we've made it to the last session of the Leap Week. I really hope you enjoyed all the great announcements so far. But before we wrap up today, we wanted to take a beat and talk a little bit about what we've shipped recently and what is next for the Directus platform as a whole. I'm Greg Consonzo, the CTO and cofounder here at Directus, and with me is James.
Speaker 1: Thank you very much. Yeah. I'm James. Working at Directus as a staff product manager. Thank you for the intro, Rick.
Speaker 0: So first and foremost, some of you might have seen that on GitHub discussions, we put a big banner, and we we posted a couple of comments about our new road map. So we moved platforms over to roadmap.direct.io. You might have seen it. Why why did we make this change, James?
Speaker 1: If we look at the old mechanism for feature requests, we used to manage this through GitHub discussions. Honestly, it became a a place for things to kind of go away and die, unfortunately, through no, you know, no means on our part or no deliberate means, but, it wasn't so integrated with, you know, linear and the development workflows of the teams. So it's kinda had this, you know, disjointed journey between the feature requests and then how they get actioned and then making that visible to the community as well. So we've started to use a new a new product. And like Wrike said, you'll have seen on some of the discussion threads, that, you know, we've moved over now.
So some of the threads have been locked. Some of them we've kept open because we wanna keep the discussion going. Right? And we don't want that to stop on some of that particularly some of the ones that have been upvoted heavily. But what you will find is that, you know, these have been ported over to our our new road map, which you can find at roadmap.directus.io/roadmap.
You can go in here, search for existing discussions, and we've maintained that link back to the GitHub thread as well, because there's lots of useful information there. So, yeah, that's that's kinda how things look. I don't know if you've got anything to add, Ryke.
Speaker 0: Yeah. I'll say it's it's one of those interesting points where it feels very obvious to keep it all centralized on the repo. I mean, GitHub already has discussions. They already have upvotes. They already have, like, a, submitted by status.
They already have the whole it's it's, approved or denied or completed and all that kind of stuff. So it it might be a little weird to just see that move over. But at the end of the day, we kinda just outgrew the tooling that was available. Right? So even right now, when we noticed, oh, we wanna move over, there's no way for us to to prevent new ones from being open on GitHub without shutting down all of the old ones, which is very unfortunate because then people can't find them.
So at the end of the day, you know, this is a great, great upgrade, to at least be able to manage these feature requests and and also help our team ship, the things that are truly important here to the community. With that as well, any request that you put into this product line right now goes straight to our product team. So you're also straight talking to the source and and the folks in charge of that roadmap. You're truly in James in this case, which is a lot nicer line of communication in that regard. So just as before, you know, please do take a look at the road map.
If you see something that you agree with or you're aligned with, please hit that upvote button. If you have a different request that nobody else has requested yet on this particular list, hit the new request button, and it will fly straight to us. And we'll we'll reach out, for more information.
Speaker 1: That's right.
Speaker 0: Give it to me. Plus one. Any updates?
Speaker 1: Direct line of communication, like you said. And Exactly. Feel free to add an extra layer of detail. If you see something that, you know, you see yourself in in the request, but you wanna add, you know, additional information because that comes directly to me and Mike.
Speaker 0: Exactly. And with that being said, I think let's take a look at this road map sort of going in in reverse chronological order maybe for this one. Let's take a look at some of the stuff that we've recently completed. So we'll we'll group this roughly by release, instead of chronological order. Well, I guess it's kinda the same if you think about it.
But, you know, we we plan these things out on the road map over time. But starting with with 11 dot 16 release, we have the global draft versions, which is a a part of a bigger new project. James, what what is that project all about?
Speaker 1: Yeah. So I think there's been a a perception that, the content versioning features inside Directus have been kind of a advanced feature. They're a little bit tucked away. They work a little bit like GitHub branches, funny enough today. But for, you know, content editors, that need to version content, that workflow for how you work with the draft, how that gets promoted or published into the, you know, the the the live item has been not super intuitive.
So we started on this track to make that a lot more native. And the latest update brings, you know, a global draft version to any item that has content versioning enabled. So the moment you switch that on, you're gonna have a draft version inside that that item. That was something you'd have to create yourself before. And then with that, we've brought that into the visual editor as well.
So if you're looking at the visual editor and you want to preview draft content, you can now do that, via the visual editor. So it's part of a foundational part to making all of these content editing workflows much more intuitive for you for your business folk who are managing content. And we'll see, you know, extensions of that over the next couple of releases, for sure, particularly in the v 12 release, to make that feel much more native, that whole publishing workflow of content.
Speaker 0: So practically, that means that today, the moment you like you said, the moment you like the moment you open an item, it's straight into draft. So then it's it's way more of that sort of one, two step. You make your changes through draft. You hit publish by the time you're ready. You don't have to manually switch, back and forth ahead of time for that to work.
Now that allows us to start working towards way more powerful capabilities in the future as well, of course. So we're thinking about things like dedicated permissions for versioning or potentially approval workflows even or releases of multiple of these content items together. So this this first draft change is is one in a step of many, many changes all related to what we're calling the CEW project or the content editorial workflow project, internally.
Speaker 1: Awesome. That's right.
Speaker 0: Then another thing we shipped recently that fits really well in this sort of one two punch of you make a bunch of changes and you ship it out. Can you guess what it is? It's the deployments module. So we just shipped a new module directly in the studio integrated with Vercel, quickly followed up by Netlify by a community member. Thank you for that.
Thank you. What what is that deployments module all about?
Speaker 1: Yeah. So it's it's something we we've even struggled with internally, our internal marketing teams that use Directus. You know, the sites are deployed on on Vercel or Netlify or, you know, other other hosting providers. And let's say you're managing some content inside Directus, you then have to leave Directus, you know, assuming you have access to that third party solution, to then go and deploy your site to reflect the the changes that you've made in your CMS. Now that's a little bit nuanced, whether you want all of your content editors to have access to that system, which is primarily about deployments, potentially not.
But maybe you wanna give them the flexibility to still rebuild the site on demand. So this is really about bringing that functionality natively into director's core so that you can make those changes. And then, you know, you can go in and you can hit, trigger a build in in Vercel or Netlify. And then we'll give you the, you know, the the deployment status, the build logs, give you a link out to see the the the, the the site once it's built. So, yeah, I mean, all all covered by RBAC.
So, you know, if you you want to delegate responsibility beyond the admin in terms of who can trigger deployments, that's all kind of covered by the existing, role based access control settings inside Directus. That's what it's all about. I mean, I think we'd love to extend this beyond Vercel and Netlify as well. So you probably got some ideas.
Speaker 0: Gonna say, like, with with most everything we've built in Direct is we've tried to do this in as most of an abstract that way as we could, which is why we saw Netlify flying relatively quickly. Now this is this is too good of a a segue not to use it. If people wanna request which one we should add as a third, where where did they do that?
Speaker 1: Well, I I guess you could come come on to here. Right? And you could still add the feedback here, just so it's, you know, tightly related to this project. But this is a completed project, so maybe the best thing to do would be to hit new request. Tell us that you want Cloudflare pages or something like that.
And then, that's gonna come right to us. And, obviously, that's gonna be something that we're but we're already thinking about it. Right?
Speaker 0: For sure. For sure. Yeah. Alright. Onto a very different topic then.
And this is a feature request that I opened back on GitHub maybe four years ago, if not five at this point. The ability to potentially filter within JSON fields. It is one that we've sort of toyed with. We've tried it out. We've done a PR in the past that didn't quite land, but there's updates on that front.
James, what's the latest?
Speaker 1: There is. And they're currently showing is in progress, but, you know, part of this was actually released in in, like you said, the 11/2016. But, yeah, this is really about bringing support to interact with, you know, JSON data in your database, at the API. So the first piece that we delivered in 11/2016 allows you to select fields within a JSON blob very simply. So you don't have to bring the whole thing, you know, client side and deal with it yourself.
That is nice, but it's clearly not the end goal. The end goal is to to bring full support, in the API for filtering, sorting, aliasing, across all of the different database vendors, of course, and then extend it, you know, to to the SDK as well. Make sure it's not just supported in the rest API. So we'll see a big big chunk of that, particularly the filtering drop in the next release. And I think that, you know, in subsequent releases, there might be additional things just to to get us to that final state.
But, yeah, like you said, I think the original GitHub discussion maybe we can have a look. Got a feeling this was yeah. A little while ago. But lots of community support for this, so really happy to be able to to work on this. Shout out to Tim internally who's been working on this.
It was actually a bit of a hackathon project that ended up getting rolled out, into the core. So
Speaker 0: It it was something we've all been wanting to have for a long time, so I'm glad we're getting to it now.
Speaker 1: Awesome. Yeah. Super exciting. What about something that's probably quite close to your involvement, which is we've had a bit of an AI related work stream over the last few months. Things have developed not just not just in the market, but also for directors.
So maybe you wanna give us a few, a few thoughts on how
Speaker 0: how things develop. I might use this as a little bit of a a sneaky personal pitch, but if you happen to have caught my my recent keynotes at the at Vue JS Amsterdam conference or coming up at Vue JS Atlanta, one thing that we have been heavily focused on is to see how can we use the AI technology stacks, so LLMs and generative images and things like that, within the product in a way that actually makes sense for our users. Right? So the thing I'm personally always scared of is shipping a bunch of gimmicks that nobody then cares about, which, you know, hot takes, but it happens all over the place. So how do we use that technology then in a way that actually makes sense?
So the first thing we did is implement that MCP endpoint that shipped, I wanna say, in 11/13 or even '12. It's a little while back now. It's been out for a minute. We did it as a standalone package first to test the waters. That went really incredibly well.
Then we moved it into core as a native feature that is just there by default. So that allows LLMs outside of the product to use the content and data within and but also take other system actions, like doing the data modeling or even setting up permissions. Although, make sure you confirm what it's doing. The second big step for us there was to move that experience into the product itself. So right now, we have that AI chat sidebar, natively in the product.
So it's always available in the bottom right, and it knows the context of the page. Where are you? What tools are available? What can it, you know, what can it do both on the client and server side? So on the server side, we've implemented the same MCP tools that you had before from external LLMs.
So that is things like changing the data model, reading or writing items, retrieving files, and some other system operations like that. The second big thing we started developing is sort of the client side tooling integration of that. And what that means is that the LLM chat sidebar can take actions in the studio on your behalf. So not just on the API, but in the studio as well. We're continuing to explore what that looks like.
So right now, we're focusing heavily on exactly the e d assets and translations workflow. So that is really focusing on, you know, helping you do the content creation in various languages that you might not be native in on the fly, in line in the studio rather than doing it, you know, hidden away in the background. So a lot of very exciting stuff on that front. We're also doing a little bit of r and d in this sort of more agentic workflows in the background and background processes, but, you know, that is a little too early to to share too much of that.
Speaker 1: Nice. And I think since we released some of these capabilities, particularly the the embedded AI assistant, lot of feedback we got was around extending support. Right? I think we went live with Anthropic and OpenAI, but maybe you can add a bit on how we've looked at support beyond that and and what people are still asking for.
Speaker 0: For sure. Yeah. I mean, as as anybody who's been anybody who who stumbled into Twitter in in the recent week or so, I mean, you see these models, they they evolve so, so, so rapidly that it is near impossible to just pick one vendor and and be happy with it for, you know, years to come. So as with most everything else at Directus, like we just saw with, the other features we talked about as well around deployment, we wanna make sure we built this in a an agnostic a way as we possibly can. So we'd indeed shipped it with an abstraction with just on top of OpenAI and anthropic to start with.
But then immediately, people started mentioning. It's like, oh, but what about Gemini? Or what about Grok? God forbid. Or what about an OpenAI endpoint that I self host, which is very interesting.
So we started shipping, some of the big other vendors that you'd expect. So I think we we, well, not I think I know we added support for for Gemini pretty quickly after, but are now also really focusing in on, like, okay. What are the nuances of, like, an open AI that runs on Azure that you have full control over, or what happens if you run a Mistral AI model that you have self hosted? To really tie back into that data sovereignty play. Right?
Because at the end of the day, the technology stack is really cool and exciting, but you might not be comfortable with sending, you know, that private data from your database over to some external company that you may or may not trust. So this is a really interesting next angle here for the way we treat AI within Directus that I think fits in really well in our sort of overall self hosted, data sovereignty play.
Speaker 1: Very nice. Very nice. So, yeah, you can you can add add an open AI API compatible, that's a hell of a mouthful, provider inside the director settings today if you wanna use the the AI assistant, with an alternative provider. Let's come back to the completed section. I know we're going jumping all over the place as we go, but I think that's okay.
Yeah. I mean, this was an interesting one internally for the team, at least. I think collaborative editing was a was a capability that was that was developed suddenly before I joined Directus, but originally built as a extension. Is that right?
Speaker 0: That's right. And that was really to make sure that we, just as with the MCP endpoint, had a way to experiment with what that needed to look and feel like. So as you might imagine, with something as broadly used as direct as in terms of use cases, with that comes a lot of different hopes and dreams about how that collaborative nature of the thing works. Is everybody working on the same draft state that we just talked about for the CEW project, or are you working all locally, and does it sync up only when you hit save? And how does that then do do merge resolutions and and complicated things like that?
So we shipped it as a plug in first to test the waters. That went really well. We learned a lot from that. Then by the time we were like, okay. This feels now like we know what this needs to look like in the product for real, we were able to move it back into core.
And luckily, because, you know, extensions are built as very modular pieces, that are built in the same way that we built the core product, it was actually relatively straightforward to to move that in here as well.
Speaker 1: Nice. I think that one was added in in 11/2015 maybe. But, yeah, that's now basically a core a core capability. So if you want to enable collaborative editing, you could do that in the project settings. Once you enable that, you're gonna see, you know, multiple avatars if you're collaborating over the same same item inside the studio.
And you get things like field locking behavior as well. So if somebody's working in a field, obviously, you can't edit it while they're editing it. So, yeah, really nice, feature for for content folks, who want to collaborate together. So highly recommend switching it on and, of course, giving us feedback, if you experience anything that you think could be improved or anything like that.
Speaker 0: If you know where to find us now. Also, with that quick shout out, you know, we we often do use extensions as the the vessel to do experimental work. So if you're you're curious to see what is, you know, the newest of the new, do take a look at the extensions that are out there, both from us and and the community. We post a lot of experimental work on the Directus Labs GitHub organization that I think is worth, a quick look.
Speaker 1: Awesome. Maybe that's a good segue into something which we're gonna have to comment on because it's it's sitting right at the top. Certainly, the thing that caught my attention since I joined Directus, right, which is this one. And the reason I say that is because you you mentioned extensions, and you mentioned, you know, at the moment, this is something where I think people who are looking for a solution to configure as code or or gen more generally speaking, environment synchronization, they are having to look to third party extensions, and there are some good ones out there. I think that's
Speaker 0: For sure.
Speaker 1: That's something we can say for sure. So a bit of context on this one today. I think schema snapshot is all all or nothing. Right? You can synchronize, one environment to another, but it's all or nothing.
And I think that that's not really providing the granular control that people need. I think they need to be able to do it resource specific, be able to exclude, include certain collections, and, of course, support things beyond the schema itself, roles, permissions, etcetera. Maybe we could comment here. I mean, I think I think this is a really big priority for us this year, and we wanna give visibility that this is top of mind. What I would say is at the moment, if you're struggling with this, look to the third party extensions.
Some of the the third party extensions here, you know, the the director sync, underneath Traktor. Really good, fully modular, decomposes the schema into discrete files. You know, highly recommend that, if you need kind of selective syncing capabilities in absence of anything native. The migration bundle is actually a Directus Labs one. This is very UI driven, allows you to select resource types, push them to different environments.
And then the Directus schema sync as well is another one that I'm aware of that that allows for sort of event driven auto export as well. So there are some great solutions out there. Right? But I think that one of the concerns is is some of these are, you know, they're they're not native solutions, and so we're really looking to bring kind of a first party experience here as well. Don't know if you you wanna add anything on this one, Reich.
Speaker 0: Well, I think the fascinating thing here the question is is I'm sure on top of everybody's mind is, what took you so long? Like, why has this thing been open for such a long time? It's been the number one or two. At least top three upvote of feature requests for, you know, as long as this project has been live. And I think it's interesting to dive into that context a little bit because there's there's two feature requests that come to mind that have been open and upvoted a lot.
The second one, we'll circle back to, you know, I I would say put in the comments if you can guess which it is. But config as code, it's one of the ones where there's just such a tremendous wide range of opinions and hopes and dreams. Right? Even different use cases as well. Some people wanna use it as a sort of way to move from a dev environment to a prod environment, which is very valid.
Some people wanna use it more as a sort of backup and restore approach that you can go back in time to a previous state of your project. Some people have been telling us they wanna use it as a sort of template for new projects. Like, if you run an agency, you just wanna, you know, spin up multiple copies of the same underlying template. And all of those different use cases, they all kind of require the same solution with a twist. So they're all slightly different, and they all have their own requirements and and differences, which is why this has been in in research phase for a long, long time while we just capture and ingest all of that information.
So over the now years, we've been talking to a lot of different people about what this means, and what those different use cases are and and outline how it all comes together. And we have a pretty good plan now into how this, this could actually look like for real as a native feature. So that is super exciting and something, you know, I look forward to having.
Speaker 1: Cool. Have we covered the completed? Do we want to look at other things on here that are either in progress or coming up?
Speaker 0: I mean, when it comes to the completed list, there's there's a lot more to look at here on the road map itself. In the interest of time, you know, I don't wanna spend the rest of the whole day or even this week just going through them item by item. If you do have questions about any of these other stuff, by the way, a, you know, where to find this now on the road map itself, but, also, we have the community, of course. Right? So we have community.directus.io.
If you have questions about anything you hear today, anything here on the road map, feel free to to put a post up there as well. We we actively monitor that. I'm more than happy to chat with you, about any anything and everything, frankly. So find us there. I think, you know, a couple of small things that are probably worth calling out on the to do list is the MIME type restrictions on file interfaces, relatively tiny thing, but it's something, you know, people have been asking for, for quite some time.
So we're very glad that we've been able to to to put that in. We did a we did a revision to revisions, an update to how, you know, the comparison looks like if you if you look, to compare the current state of your item with a a previous state. So we we changed that from from the little sidebar you might have seen, with the red green changes into more of a side by side view that is a lot more in-depth and allows you to explore, you know, the things that changed. Other than that, we did also finally add bulk file and folder downloading. So in the file library, you could select multiple things at once.
Just download them all as a as a folder instead of having to go one by one. It's the little things. It's the little things that are huge quality of life unlocks here for the platform. You know? So oftentimes, things like that, they're a little bit too small to mention anything like this, but it's definitely worth shouting out, I think.
Speaker 1: For sure. The the other one that comes to mind is the, external third party JWT support. I think this is something we saw a lot of feedback around how to manage that, how to validate a third party JWT translated into direct us accountability object. And I think we exposed some u utils there to to make that much easier, and there's a there's a really great reference guide. So if you are looking to, you know, integrate sort of for machine to machine purposes with Okta and things like that, then, you know, there's a there's a great reference tutorial, which hopefully is, like, flashing up on screen or something right now, that that I'd recommend people check out as well.
Speaker 0: And it's another one of those things. Right? It's like, from the outside looking in, it's it's just hard to really know what that means and what that unlocks. But that external JWT validation means that you can have your users log in using something like Okta or Auth0 and then use that same token you already have from that external service as the token indirect is, which is, you know, not everybody might need that, but when you do, you really do, and there's really no other workaround. So, again, I'm very glad that our extension service combined with some of these utilities that we provided are now allowing you to to unlock that that otherwise blocker.
Speaker 1: Good stuff. I think beyond that, looking at kind of, you know, what's in progress now, I think we've we've touched upon a lot of these already. Like we said, the the global draft was the kind of foundation towards this draft and publishing workflow, having that really intuitive experience, and incorporating things within that, like auto save when you're editing a form, which kind of relates to this one. Right? You know, you wanna save and stay.
Well, if you have auto save, well, that kind of becomes somewhat redundant. So looking to solve some of these problems that exist in the to do with, you know, some of the solutions that are also in progress right now.
Speaker 0: Absolutely. I I teased it a little bit before when I said top three, most upvoted things. Save and stay button, definitely one of the three, but we we have to touch on the elephant in the room, which is renaming collections and fields. You want it. We want it.
We all want it. Everybody has wanted it from from a long time. This is one where it's not so much the yeah. There it is. Triple digit.
There it is. The big one, the the light will of this team. The the, where where the config is code or even the save and state default state is one of the ones that takes a lot of research because there's so many different opinions and so many different ways of approaching it. Renaming collections of fields feels like a very dumb one in comparison. Right?
It's like you have it or you don't. There's really not a lot to figure out for that. So you might be wondering, like, what the hell takes you so long to to do that for the same reason. And this is quite frankly, you know, system design thing from from back in the day. So we have, when we make that change in the database well, of course, it's a very destructive change in the database that is connected, so there's a third party tooling problem potentially.
But, But, also, there's a lot of internal references that need to be updated, some of which, can be a bit under the hood, for things like layout options and and other references that are otherwise hidden. So we've we've seen, quite a few different experiments on this topic, recently in in extensions, which, again, thank you for that. It's it's great inspiration. Make sure to check those out. But we also recently started experimenting internally with, like, okay.
How could this come together in a way that doesn't immediately break everything? Right? So how can we work on API aliasing, for example, to unlock some of the the requirements for this without breaking the connected database and its connected services that we might not know about. Alternatives as well, of course. Like, what what are the options that we do all of those updates in the system tables as one giant transaction in case, you know, something goes wrong and you have to undo it?
All of that is to say is do know that there's not a day that I wake up and not think about renaming collections of fields. You you you find me in person at conferences and it's the first thing you bring up and and do know that I've I've heard you loud and clear. And it's something that's very, very top of mind.
Speaker 1: Good stuff. So we expect to hear more about this one, you think, this year?
Speaker 0: For sure. I mean, you're gonna hear me bring it up every single time, if if anything. So you're gonna hear about it. You're gonna hear about it. Now we're we have some some very active experiments in flight now to see how we can bring this to life in a way that doesn't completely break everything or is a huge breaking change to migrate into and all that that kind of stuff.
Because, of course, you know, it's it's it's one thing to say we now allow you to rename everything, but the migration into the new version takes, you know, a week to do by hand. That's not good enough for us either. So bear with, you know, there's quite a lot of technical work to be figured out here, but do know that we're we're actively talking about it.
Speaker 1: It's front of mind.
Speaker 0: Front of mind.
Speaker 1: Good stuff. Beyond or behind all of this. Right? We've spoken a lot about a lot of stuff today, but maybe to think, beyond just what's visible on the road map here. Few rumors on forums, few things being hinted at over the last year.
People are naturally gonna be curious about what that means. If you know, you know. If you've seen things in the forums, you might know what we're speaking about. But can you tell us anything about that, right, is there anything we can let people know about?
Speaker 0: Well, I can say we have been teasing and and sometimes leaking, you know, who you are. Some of these some of the information behind this. But, yes, the the rumors there are true. We have been hard at work behind the scenes on something brand new as well. So this is gonna be a separate thing from Directus altogether with more of a back end as a service focus than we've had in the past.
It's his own image, inspired by Directus and using the learnings that we have, but aimed at a way sort of larger scale, multi data source, deployment paradigm. I don't wanna overshare too much yet before people get mad at me, but we are putting out a a sign up link if you wanna learn more. So we're gonna do some early sign ups for alpha release for a sort of private testing phase. We're very excited about this, and I wish I could just share, you know, a lot more than that. But be assured, we're gonna be sharing a lot more in the next league week, about this project.
Speaker 1: Very nice. Very nice. I think that's a small small teaser for now. And like I said, there should be a resource for people to go and, sign up and and and and get onto some kind of wait list for something. Look forward to hearing more about that.
Alright.
Speaker 0: With that all being said, I I know we mentioned it a couple of times today, but if you have any other feature requests or ideas about what this road map should look like or what you find important or don't, that's also very valuable information. Know where to find us at roadmap.tractors.io. That gets you straight in touch with James and yours truly. For everything else, any questions, any concerns, any other teasers, find your way to community.directus.io. We have a wonderful discourse server over there, that we actively moderate and manage, and that is incredibly active within the community.
So I highly recommend find your way to those two resources, and we'll see you on the Internet.