DejaVue

Nuxt 4 is cooking for a while and is close to being released soon. An ideal time for a DejaVue episode where Michael and Alex we explore the upcoming major version of the metaframework with the lead of the Nuxt team, Daniel Roe.

After introducing Daniel, we jump into the power of small changes and how Daniel explains his day job to people. We then dive into why Nuxt 4 is being necessary "now", its top priorities, and how to ease any fears about upgrading (don't worry folks!). Eventually, new Nuxt 4 changes and even features, like the improved folder structure will be discussed. As a bonus, Daniel reveals how he got into programming and that we was a real hacker-man early on.

And of course, Daniel reveals when Nuxt 4 will be released in the final minutes, as well as his upcoming Nuxt for React Devs course.

Enjoy the episode! 

Chapters

  • (00:00) - Getting Started and Guest Introduction
  • (02:43) - How do you Describe your Day Job?
  • (04:33) - The Power of Small Changes
  • (11:50) - April Fools Joke
  • (13:02) - Why Nuxt 4 Now?
  • (19:00) - The Top Priority for Nuxt 4
  • (20:54) - How to reduce the Fear of Nuxt 4?
  • (27:48) - Codemods for Nuxt 4
  • (29:41) - Experiencing Nuxt 4 Migrations
  • (32:02) - New Folder Structure
  • (34:06) - Exciting New Nuxt 4 Features
  • (36:46) - Compatibility Date
  • (44:26) - How did you get into Programming?
  • (48:44) - Daniel's Contact with the Vue World
  • (52:38) - University Degrees
  • (59:42) - Joining the Core Team
  • (01:04:28) - How Daniel is Funding
  • (01:08:56) - The Freedom of Doing the Things You Enjoy
  • (01:12:45) - When will Nuxt 4 be released?
  • (01:15:20) - Interesting Projects and Courses of Daniel
  • (01:17:25) - Wrapping Up

Links and Resources


Creators & Guests

Host
Alexander Lichter
Web Engineering Consultant • Founder • Nuxt team • Speaker
Host
Michael Thiessen
Full-time Vue educator
Guest
Daniel Roe
Nuxt Team Lead and Independent Open Source Maintainer
Editor
Niki Brandner
Sound Engineer

What is DejaVue?

Welcome to DejaVue, the Vue podcast you didn't know you needed until now! Join Michael Thiessen and Alexander Lichter on a thrilling journey through the world of Vue and Nuxt.

Get ready for weekly episodes packed with insights, updates, and deep dives into everything Vue-related. From component libraries to best practices, and beyond, they've got you covered.

Michael Thiessen:

Welcome to DejaVue.

Alexander Lichter:

Your favorite Vue podcast, you just don't know it yet. Or maybe you forgot about it, have a little Dejá-vu because this is the Vue.js podcast itself. I am Alexander Lichter. I am a web engineering consultant, do some videos on Nuxt, on Vue and various other topics around the front end ecosystem on JS, Nitro, etcetera, etcetera, so create some content.

Alexander Lichter:

I'm also part of the Nuxt.js team. And with me here is Michael Thiessen.

Michael Thiessen:

I am a full time Vue educator, so that means I create courses, write books, give talks, write articles, do podcasts, all sorts of content things around Vue and Nuxt. And we've got a wonderful guest here with us, Daniel Roe.

Daniel Roe:

Hello. It's, it's it's nice to be here. Thank you for inviting me.

Alexander Lichter:

Well, thanks thanks for having well, thanks for allowing us to have you here. I'll say it anyway. Thanks for coming all the way over virtually, of course, but, well, looking also forward to meet you in person at some point again. For everybody not knowing Daniel yet, it's probably, like, the 1 or 2 people on the podcast maybe, like, stumbling into the Vue in Nuxt ecosystem. Well, he is the team lead of the Nuxt.js team.

Alexander Lichter:

All the little PRs come in together from all the amazing contributors. Like, he's reviewing them sometimes. He's writing himself, contributing to to all the things. He's an open source maintainer, and, yeah, I think there's there's not much more introduction needed, I would say. Right?

Daniel Roe:

Well, I'll definitely take you as a hype man, any any day. You can.

Alexander Lichter:

Oh, happy to be. Yeah. I can be booked for weddings, birthdays. Exactly. Conferences.

Daniel Roe:

So it'd be be be very handy because, you know, like, there's this whole world of, like, well, so, I mean, there's it's an onion. Right? So it's the tech world, like, the bit of the tech world we're in, which is actually quite a small bit of it. And then, like, even, like, the JavaScript tech world, and then the front end JavaScript tech world, and then the view world within that, like, then the Nuxt world. Like, it's it's really you you go in and so, I don't know.

Daniel Roe:

People that that I know that you sort of encounter constantly online, you bump into them at conferences, and, and then you meet someone else from a slightly different section of the tech world. And it's, like, never the twinge you'll meet. It's totally different. So, yes, you should definitely come along and, tell tell tell my sort of friends and family what I get up to all the time because I'm not sure they have any real concept that I do anything other than

Alexander Lichter:

How do you do that? Like, if someone asks you, what are you doing, like, as a day job, how would you describe that to people? Maybe, like, to people in tech or to people not in tech?

Daniel Roe:

So I will tell you what I say, but I'm not it's very good. You might have a better thing. So I basically say quite sort of gingerly. So I work in tech, I say, and then I look in

Daniel Roe:

their eyes to see if there if there's like ah tech.

Daniel Roe:

Yes. That's a thing. Or if or if it's more sort of a fear. If there's a fear at that point, I back off very quickly. I probably I I tend to mention something like I I work in open source because I feel like that's that's the concept people might know something about it.

Daniel Roe:

They they actually very rarely do they. So they're like, well, what what does that mean? I said, well, I I help maintain a framework that people use to build web apps. A web app is something like Gmail or Facebook, something that's in your browser, but there's a lot more interactive than just a site with information on it. And then, like, oh, so what do you do you charge charge licenses for that, they say.

Daniel Roe:

And that's when that's when it gets a little bit more complicated. I'm like, no. It's free. And and immediately, people start to have, like, big worries. They're like, right.

Daniel Roe:

I see. You're basically the grown up equivalent of a teenager in his parents' basement. Is is that what's going on? It's like but but that's that's the sort of conversation that that I I I I I sort of go into because, I mean, like it or not, most of the people you sort of meet know nothing about TypeScript. Now I I or or view, and I I I realize that, you know, it's it's just a a horrific thought that, that that might be the case.

Daniel Roe:

But, you know, a lot of things I spend a lot of time thinking and doing stuff with are actually not that that important in the landscape of things.

Alexander Lichter:

Oh, I I would I would not agree. I mean, like, there are so many things to be built. Like, there are so many things that have been built with Nuxt, and I think, well, without your contribution, Nuxed wouldn't be what it is at the moment, and it would be very different than, what it will be in the future as well. So even though, like, okay, the grand scheme of things like the history of mankind, well, I think they're less important people as well.

Daniel Roe:

Let's just frame it that way. Well, I, yeah, I don't don't don't want, and and the same goes for you, of course. Both of you, really. I I don't know. I think there there's things that we all can do to make a difference, like, even if it is to a small community or a, gun.

Daniel Roe:

But, but it makes it like, it's worth it. Right? So if you make some people's lives better, that's good. You don't it doesn't have to be, like, an apocalyptic. That means someone made this point about films recently that, slightly give me off topic, but, like, made made this point about films that that, increasingly the the the desire for summer blockbuster takes directors away from, like, everything has to be bigger.

Daniel Roe:

So like it used to be, for example, there's this British show called Doctor Who. I don't know if you ever watched it where, you know, like an episode, an episode like the Doctor Who is this time Lord and the the episodes used to be things that were just sort of very local. Like, a town is threatened. A house is in danger, you know. And he would come and he would save and that was it.

Daniel Roe:

But the the modern poll is, like, no, it can't be a town. That's right. It has to be the entire country. It can't be the it must be the entire world. No.

Daniel Roe:

It must be the entire universe. No. That's not it's time itself. It's the fabric of reality, you know, like, it has to get bigger and bigger and bigger. Whereas, actually, to do something meaningful, you don't have to to affect everything in the world.

Daniel Roe:

And you can you can feel good about yourself and feel like I've made a difference and I am I'm I'm doing something that's worthwhile even if it is limited in scope to like, I don't know. I don't I don't know in any way. Like, I'm not trying I'm not disagreeing with what you said, but, like, I think at the same time, it is just worth remembering remembering that. That's what I try and tell myself.

Michael Thiessen:

I find this, a similar struggle with creating content around Vue and and Nxt about, like, do I tackle, like, this big topic about, you know, that's that everyone is gonna find valuable and everyone is gonna be like, oh yeah, I need to read that. I need to, I need to watch that. Or do I just say, well, okay, only a few people are going to have this problem, but the people who do have that problem, they will like, they'll really benefit from me showing how I solved it or how I figured out how to, how to do this thing. And maybe 99% of people won't ever encounter this error or this weird situation. But yeah, it's still, it's still valuable for those, those people who do end up finding it.

Alexander Lichter:

I think I would even go further and say it's more valuable, like, the general things because you have way more content on the, like, general level than on the very specific things. I mean, we all as as Daniel already said, we're like, okay. We're in a subset of a subset of a subset, and the the further the the more you go up again, like, abstraction wise, like, okay, from Nuxt to Vue, from Vue to JavaScript, from JavaScript to front end, from end to programming, maybe over, like, web programming, programming in general, you have more and more content. But if you say, oh, yeah. I have this specific issue with this certain function, a framework based on another framework provides, like, yeah, the chance, as you said, it gets very loaded.

Alexander Lichter:

People might encounter that. But on the other hand, there is probably literally no content about it except the post you would write, which, I think that that would be ideal.

Daniel Roe:

Is this a point without a point? But, actually, I think it has a point. I think it's sort of come back, and I think what you and Michael just said are absolutely taking us the right direction. Like, because I think this is about the power of small changes. Because basically the that this impulse, this this blockbuster impulse that makes us want to only make huge changes, like huge impact, an amazing whatever, but actually consistently making small changes or putting out content that is relevant for smaller audiences, but doing it regularly and building.

Daniel Roe:

And, like, the the power of the positive power of that to impact a much larger number of people really can't be it can't be. Like, there can't be a verse, mate. Like, it it it it it it is it's much bigger than you would think. I don't know. Someone, tweeted the other day, they were like, you know, I wish I could contribute to Nuxt.

Daniel Roe:

Actually, it's a it's a it's a friend. It's the kind we know. I think I think you follow-up too. He's like, oh, I'd love to get started in, in in open source. He's like, yeah.

Daniel Roe:

You should contribute. He's like, oh, I don't have the skill. And and I I think that the thing I said to him, Marta, I totally agree, is that skill is overrated. So it's not about those sort of huge, like, you won't even understand my code. It's so crazy.

Daniel Roe:

It's not about that. It's about small changes that are even Mhmm. A little bit embarrassing because they're so small, but enough of them put together and you genuinely make a difference. It adds up. Absolutely.

Michael Thiessen:

One of my favorite quotes is, from this marketer called Seth Godin, and he says, a small thing repeated is a big thing. And I think I I love, like, how succinct that is and how, like, yeah, even even learning a skill, acquiring a skill is really, if you think about it, just a series of small things that you have to do. Oh, you look up the docs and you figure out what this function does. Then you realize you were using it a little bit wrong and it's actually like this. And then you just like build up on these things over time and you look back and suddenly you're like, how, how did I get here?

Michael Thiessen:

Well, just a bunch of small steps.

Alexander Lichter:

It's also like there are so many, so many scenarios where the word works like it even left the interest of interests, effect. Same idea. You have, like, tiny changes that accumulate over time a lot. And, well, in the end, I hope that also maybe encouraged one or another saying, like, hey. I I encountered a specific issue, maybe at work, maybe in a side project, and I fixed it.

Alexander Lichter:

Maybe there's no content about it at all. So why don't just publish how you fix it? It can be like it doesn't have to be super elaborate, like 5000 words blog post. Please don't. Just, like, very, very rudimentary, like, okay.

Alexander Lichter:

Hey. This is this is what I did because probably you're not the only one having that issue or maybe you were the first one ever, and people will follow after you because they wanna try similar similar things.

Daniel Roe:

Transition. Exactly.

Alexander Lichter:

Well, right now, we always said in the beginning, Daniel, you're the lead of Nox team, And, sooner or later, Nox has to become well, to like, the version has to change to a similar number trying to rescue the transition here.

Daniel Roe:

I did not know where you're where you're going with that. Currently, you are the leader of the Nuxt team, but sooner or later. No. Okay. Well, this this is interesting.

Daniel Roe:

Okay. Go go on.

Alexander Lichter:

Yeah. Like your April fools joke. Like, oh, yeah. What? Mhmm.

Alexander Lichter:

I remember. Link for that also in the in the show note. If you if you missed the tweet from Daniel on that.

Daniel Roe:

I think it was the most gentle April fools joke ever. I because I at the same time as I tweeted the joke, I also treated the fact that it was a joke. I feel like I I I really didn't want anybody to to to get worried, but still people got worried. I feel like I might never make an April fools joke again. I'm not too sure.

Alexander Lichter:

I, I loved it

Daniel Roe:

Okay.

Alexander Lichter:

But, yeah, Nuxt 4 is the the big topic. Who knows? Maybe it could be out already when you listen to this podcast, but chances are it might not be. The question is, well, what what is Nuxt for itself?

Alexander Lichter:

What's what changes can we expect? What, well, changes can the users expect expect as well, and how did it all come together? Can you can you enlighten us on that?

Daniel Roe:

Well, so Nuxt 4, how did it come about? So it Nux4 has almost come about by by by schedule. So I I guess you could imagine that there would be 2 different approaches to a release. So one approach is, oh, we have all of these things that we need to to release, and they're breaking changes. So it looks like we're gonna have to do a major release.

Daniel Roe:

So that's that's one. You you want to do that that you do you have a set of stuff the the things you want to do. They're, urgent enough that you need to do, a major release, and you you decide you're going to to do it. We actually took the the the other approach. That was that was the approach, for Nuxt 3.

Daniel Roe:

There were enough changes. We had to do them. We had to do a major release. So and and it was it was driven by that this sort of this urgency or or this need. But in fact, it snowballed with Nuxt 3.

Daniel Roe:

So we had Vue 3, we had PostCSS 8, we had webpack 5, we had the release of Vite. We, rebuilt the server engine. We basically kept on adding more and more things, each of which and we we felt like, oh, we shouldn't do too many major releases, so we'd better delay the major release until we finished everything we might be possibly a bit breaking change. And that had some issues with it. Not least the fact that it was a very it was a very chaotic transition for people, and people also trying to keep up with, the released candidates, which were themselves often breaking, was not a great experience.

Daniel Roe:

So we decided when we we, post Nuxt three release to adopt the opposite approach or or the the the other, approach, which was to plan for releases on a regular basis. So, we have the and I know you know this, but we have this sort of, weekly ish patch release with, any bug fixes that we've we've handled. So those don't get too long delayed. Every 6 weeks, or so, a minor release with any features that, we that are accumulating, and then a, yearly or so release with any breaking changes. And the idea is, I guess, it's a little bit like, meetings with people.

Daniel Roe:

You know, if you have a one to one with your manager or whatever, you know you have it every week. So it means that you don't, you're never in a situation where you're unsure about what's when you're going to have an opportunity to bring up something. There's always gonna be a bucket to put it in, an opportunity to talk about it, which means that actually it takes a lot of the pressure off the moment. You're like, okay, well, this thing has come up, but it's fine because I've got a meeting in 2 days. I'll just bring it up then.

Daniel Roe:

And it's a little bit like that, I think, with releases too. So the the PR comes in, you think this is great. It's a breaking change, but that's fine because we have an opportunity to do that in 6 months. So we're just gonna park it for now and we're gonna pull it out then. And it makes the job of maintenance easier, but I think it also makes the job of, using a framework easier too because you have this sort of expectation.

Daniel Roe:

Okay. Look. We're expecting new features about every month or so. So we'll just budget in some time. And then they shouldn't be too big, you know, because they are regular.

Daniel Roe:

So rather than once a year have a heart attack, let's just every month take a few minutes and upgrade and read the release notes. And so that that whole sort of time driven rather than scope driven approach to releases, I think is serving us well. So if you this is a really long answer to your question. So what has Broadmapped 4 release about? Well, honestly, it's the ticking of the clock.

Daniel Roe:

It's the fact that we planned in 2024 to, release a major version with any breaking changes that we feel we need to make. And there are a whole there are a host of those, you know, the but it's it's not that that they were so urgent that they forced a major release. It's really the other way around. Is that was that clear at all? Was that I I don't know.

Daniel Roe:

I felt that it rambles.

Michael Thiessen:

Makes sense to me. The this is the first time I'm hearing this because I'm not part of the Nuxt team. And I think that makes a lot of sense because it it definitely does take the pressure off and even myself as someone outside the project and just doing software development. The the more I've done software development, the more wary I've become of upgrades, software upgrades, and like everything. And, and I know other developers like this too, who are just like, oh, a new version of Mac OS came out.

Michael Thiessen:

Well, I'll wait until next year because I'll wait until all the bug fixes are, are through and, you know, and so, cause we've been burned too many times in the past by upgrading and, oh, whoops. The, you know, there were some things that got through or whatever else. And so to me, it seems like less scary in a way to to go with that approach of, okay, so there's there's some breaking changes, but probably less than if you had waited until it was like super urgent. That, that would be my assumption. I don't know if that's true at all, but yeah, it, it seems less, less pressure to upgrade or less scary to upgrade as well.

Daniel Roe:

I mean, I hope so. I I think the fact that so, I mean, my top priority for the Nuxt 4 is is actually not to ship as much as possible. There are breaking changes that I do want to ship that actually I'm not gonna include in Nuxt 4. But my my priority is actually to make it a good experience. Like, to to be like, this is an example of what we want our major releases to be like.

Daniel Roe:

This is what we want breaking changes to be like. So but because right now, honestly, I think partly maybe people's other experiences, but definitely their experiences in in that's 2 to 2 to 3 mean that the moment people hear that there's a major release, like, their fight or flight instincts kick in 100%. And that both both of these instincts that someone opened a PR like, an issue. Like, do not release Nuxt 4. Indeed.

Daniel Roe:

The other day on on Discord, someone was like, maybe you should fix every single issue on the GitHub repo before doing a new release of Nuxt. I'm like, what? What? What? But, like, you understand, like, it that might sound quite hostile, but, really, what's happening is that someone is being triggered because they are remembering how bad it was.

Daniel Roe:

I want to reset that that memory. So, like, I want to reset it so, like, when people hear that next 5 is coming up, I'll be like,

Alexander Lichter:

oh, yeah. This is cool.

Daniel Roe:

I'm looking forward to taking half a day to, you know, upgrade our project to Nuxt 5 rather than, oh, horrific. I'm gonna have to take 6 months to rewrite the entire app. So, like, you know, I I want to want to sort of recalibrate what a major release looks like in the Nuxt 4

Alexander Lichter:

system. So based on based on that approach to saying, like, okay. Let's make a major releases, let's say, not enjoyable, like, to some degree, maybe enjoyable for people again. Like, less enjoyable. I think yeah.

Alexander Lichter:

Let's let's let's say that. Let's make major release enjoyable for people again, especially the the Naxx ones. Also, like, I I think in general, like, what's let's say, what approaches or, like, what, ideas did you consider, or, like, in the end, which which things you will do or you did already to to make that happen to, like, reduce the, like, the being afraid of, oh, another another major version besides the whole okay. Let's shift to a time specific thing. Let's release once a year breaking changes.

Alexander Lichter:

Are there, like, other things that's like, okay. This this helps reducing the the pain or maybe, yeah, reduce being afraid of it?

Daniel Roe:

Yeah. I think so. One of one of the things that, that we've been talking about for a while is is and using is the idea of flags. So in with Nuxt 3, we had the experimental namespace, and then there we gave us a great deal of flexibility to stick in, to try this new feature, but it's it's under an experimental flag, so it doesn't affect people unless they opt into it. And then at some point, we enable it by default, and then at some point, the option goes away and it's just part of Nuxt.

Daniel Roe:

And that worked quite well. I think about 6 months ago, we, announced that we're going to have future and features namespaces as well so we could actually say it was it's not that it's experimental. It's more that it's coming, and you can opt in early, or it's now part of the core and we actually think it should be configurable so you can switch it on and off as you need. And then for Nuxt 4, we had the idea of having a compatibility version. So you could actually run Nuxt 3, but opt in to the breaking changes.

Daniel Roe:

And interestingly, we even have, like, type changes in your project that you can opt into. So you get different types for stuff like, the default value of the async data error type, for example. Like, you get the type change flow into your project based on whether you opt for 4 or or 3 compatibility version. And I think that that hopefully, like, helps people try it out, see what it's going to be like, see what kind of migration, experience they they'll have. So I think that that's quite good.

Daniel Roe:

It's it's also granular. So everything that we've merged, most things that we've merged, you can switch off. So, it was actually your idea. Alex, I'm pretty sure. In in the PR implementing this, you're like, hey.

Daniel Roe:

Can we make this really, really granular?

Alexander Lichter:

I wrote it actually. Yeah. True.

Daniel Roe:

So so so, basically, all of the the new features that we're merging, most of them, they either have a migration guide, or they should all have migration guides if if if it's applicable. They'll have like, here's how you switch it off if you want to revert to the previous behavior. And, like, here, we expect that this is like a a big, has big impact or, like, very small impact on your app. And, and so we're we're sort of documenting those on nuxt.com as we go. And so I think all of that should help, quite a lot.

Daniel Roe:

I'm getting lots of really good anecdotal, commentary from people, who are saying stuff like their app is faster, which will probably be to do with stuff we're able to do with with file system watchers with the new directory structure, or and other stuff too, which is really nice to hear. But I think it's in the days, now after the release of 3 dot 12. Who knows when you're listening to this, but, it's it's it's it's like in in this sort of post release period where more people will start to try it out. They will see, like, are there things we missed, things we could have made, put in to make it better. Hopefully, that means that by the time we release 4, we've had sort of gradual people trying it out, people encountering issues or or not, and the chance for us to adapt before we say, hey.

Daniel Roe:

For us that time to time to switch.

Michael Thiessen:

So this granular system for different features, is that if I if I have a Next 3 app right now, I can opt in to different features and first test to see, okay, do I need to fix anything? Is that to sort of bridge between NUCs 3 and NUCs 4, or maybe it's both of these that people can sort of beta test these things in their Nuxt 3 apps before Nuxt 4 comes out? Or is it, is it one or the other or like a combination of those?

Daniel Roe:

I think, for so for me so some of the changes are to defaults. And so you for example, the directory structure, it changes the default value. But that's always going to be configurable. So Nuxt 4 is never going to stop you from doing what you do now. You can opt back.

Daniel Roe:

And even some of the stuff that I would really urge people, they don't change, like the def the default reactivity of, use async data. We're changing it to be shallow reactive, which is much more performant, and in almost all cases is what people really want. I would really say don't change the default value of that, but they they could, say, if you wanted to. So there are things that that are configurable, and so you can opt in early, and it it is a bit of a bridge type thing type situation. But then there are other changes where we are, you know, it's it's going to be a change.

Daniel Roe:

We're not going to be maintaining testing infrastructure to test both, scenarios. At the at the one of the most difficult things actually about the release of 3.12, and in general, is that we are testing a vast amount of stuff right now. We're testing all of our tests are running in both version 3 and in version 4 compat mode. So which is is maybe reassuring for people to know that our test fixtures without any changes to them are working in both 3 and 4 mode. Like, we're we're testing both.

Daniel Roe:

And we also have a matrix of a whole raft of other things that people might configure their app in, And I don't want that, as time goes on, to just grow infinitely. Like, in terms of some of these things, we we do want to say, like, okay. This is now the this is now the the configuration. And that, yes, it was a breaking change, but we hope the migration path is straightforward. And and so there are some of those too.

Daniel Roe:

So it's a chance for people to to detect it. In in most cases, changing their code to adapt is a one line or a couple line change. So it's not I'm not I'm not talking rewriting apps. I'm talking about, small code mods. There there is some really interesting work actually on the code mod front.

Alexander Lichter:

Maybe before before we talk about what's happening with codeless morale, could you just briefly summarize what codemods are for the people maybe never never touched a code or never heard about it?

Daniel Roe:

So, I guess a code mod, the idea is that some kind something automated that changes your code base. So, that might be something like, so it's a very simple level. It might be sort of for the new directory structure for Nuxt. It just moves some folders and files around. But it might be something that's and this is typically, I think, what people think when they say code mod.

Daniel Roe:

It might be something that's syntax aware. So it's it's aware of, like, you're calling this function and you're getting this value back. So we're gonna change the name of that value or we're going to insert another line of code that manipulates it somehow. And so the idea is you run a code mod and then you look at your your git diff and you see, like, this stuff has changed in my code base that I would have had to go through and do manually, but this tool has has done it for me. So, for example, as part of the transition from view 2 to view 3, a few people wrote code mods to change options API to composition API.

Daniel Roe:

There were a few projects that were around, or you might find that there are, you know, there those other kinds of code mods around. Valobot recently released a new API, and there's a code mod for ValorBot to update old versions to new versions. Check out codemod.com, by the way. They're doing really cool stuff, in in terms of, the they have a vision, I think, to be a sort of universal registry of code mods and, sort of updating package versions. You sort of run a CLI tool and get get the benefits of that.

Daniel Roe:

So just I think it's pretty exciting. Really cool. And, but yeah. So the the the idea is mostly for Nuxt. We would want changes to be quite small, that that would be needed.

Daniel Roe:

One, they probably wouldn't be needed at all. And 2, if they are needed, that they would be small changes rather than big ones. I, I've moved my insight over. I did that this morning, after the release of, 312. The, the the diff is basically just me moving files into different folders.

Daniel Roe:

That's all I did. And I wouldn't have had to do that, but I felt I'm going to be vanilla out of the box and, see what that feels like. Sebastian dropped me a line. He migrated, a project across, and, actually, he he gave me he really scared me. He's like, oh, no, Daniel.

Daniel Roe:

I am sorry. And I was just I was I was on the edge of my oh, no, Sebastian. What's happened? Because he he he was giving a talk in in Code Europe, and I and and he said he wanted to do it on the latest version of Nuxt. I released 3.12, making sure to give him half an hour before his talk to be able to use the latest version.

Daniel Roe:

And he's like, Daniel, I am so and I I I don't know. I was thinking, oh, this is the worst thing in the world. He's live coded something on stage using that just released version of Knox, and there's some edge case that's bit him. And then he said, this is too easy. Since when do we have such easy migrations?

Daniel Roe:

And sent me a diff of the, the the migration, which was literally removing two lines of code in his Nuxt config and adding a comment and another line of code that enabled the compatibility version.

Alexander Lichter:

So it

Daniel Roe:

was it was like it was the best possible migration that I could have seen. Like, that's what I want to see. Like, I want people so even Mhmm. Nuxt, 4 compat mode, will like, it will look at your project and say, okay. What's your structure?

Daniel Roe:

Is it following Nuxt 3, or is it following Nuxt 4? Okay. It's following Nuxt 3. Great. We know what to do.

Daniel Roe:

We're gonna handle this like like we did in Nuxt 3. So, you know, stuff shouldn't stuff should just work in in in 4. That's that's the image. I I'm hoping that most people won't need to change anything.

Alexander Lichter:

So it's like it should be really frictionless in the end, even if you don't, like, let's say, adapt to the new folder structure that comes with Nuxt 4 by default?

Daniel Roe:

There are good reasons for the folder structure, which is obviously why we're changing them. So it it is more performant to have a source folder rather than place all of your source files at the root of your repo. Not least they're not so much because of Nuxt itself, because of tools we use under the hood like file system watchers. So, Chokidar, for example, when you watch a directory, it has to crawl every single subdirectory. It is an architectural limitation of Chokidar itself.

Daniel Roe:

That means if you're crawling dotgit and node modules, you will have performance issues when you start your server. More so on, so macOS actually is, it tends to be fine because, it doesn't have to iterate. But on Windows, goodness me, you will experience, like, a long delay, particularly as your project grows. There's nothing to do with your project code, but it's just to do with the fact that this is how the watching file system watching implementation works. And so simply by creating a separate source directory, we just opt out of that.

Daniel Roe:

And, and so there are good reasons. This is not a stylistic it's not it's not a stylistic change, you know? But, hopefully, it's a it's a nice performance improvement. So anyway, yes, people can can use whatever they want, but but but certainly, I would suggest people check why we've made the change because they might they might prefer to have have the new folder structure when they when they know what it what it means.

Alexander Lichter:

It's also documented, I guess, in the migration guide or, like, the Nuxt 4 part why the the change was made in the end.

Daniel Roe:

I hope it is. Yeah.

Alexander Lichter:

Otherwise, when you're listening to that, it it will be.

Daniel Roe:

Exactly.

Michael Thiessen:

What other features are coming in Nuxt 4 that we can all look forward to?

Daniel Roe:

Well, so this has been one of the things that I've been saying that Nuxt 4 isn't bringing features

Michael Thiessen:

Mhmm.

Daniel Roe:

Any more than any other minor release. So in 3.12, we shipped, like, lots of features. And, actually, there's nothing there's no reason I would delay a feature for Nuxt 4 other than, you know, it, if if it's time to release 4 and we have a feature, it's going in in Nuxt 4. So, mostly Nux four is just about is just about the breaking changes. So, I I know I I wish I had a a different answer in a in a way.

Daniel Roe:

You know?

Daniel Roe:

I wish I could say Nuxt 4

Daniel Roe:

oh, it's the best and the the most amazing Nux, but we're doing our best to ship the amazing stuff on a monthly basis, not on a yearly basis. So, I I can tell you about some of the things I am excited about, though. So I'm excited about incremental builds where we don't rebuild your, code if it hasn't changed. I'm excited about multi app where we have, sort of 2 module federation approaches, one which allows you to federate next steps as separate apps and one which actually allows you to, embed them, just parts of them. Like, you could use a component from 1 app in another app or or a page, like, as a route in another app without needing to, like, even on the same like, in the same app.

Daniel Roe:

So you you sort of click, hey. This link if you click this link, it's gonna load the page from this other app, but That's gonna be seamless from your point of view. It's still gonna work using your existing routing structure. So stuff like that. I'm I'm excited about that.

Daniel Roe:

I think that that's that's cool. It's it probably won't affect most people because multi app approaches are not, actually the best choice for the vast majority of teams. But I it's a it's a fun engineering challenge, and I think it will be really helpful for the enterprises that do need and use it. Mhmm. Some other stuff that I'm excited about, I'm excited about separating.

Daniel Roe:

So build directories are going to be separated out based on production and development, which is going to enable you to, say, build your app while you're running the dev server and not have any issues in terms of types or, anything being being interrupted. Once we've transitioned to 4, the change we've made with file system watchers is going to enable us to experiment with some really interesting stuff. I I think some more performance stuff in terms of of focusing on improving the speed of your startup. Something we did ship, and, actually, I forgot to add to the release notes of Nuxt 3.12, is compatibility date. Different from compatibility version, which is just about a major version.

Daniel Roe:

Compatibility date is about specifying a, behavior set for most often presets, like nitro presets or Nuxt image presets. Because you you have providers, but then those providers change their implementation in a way which isn't doesn't really work well with SemVer. So for example, if you have Cloudflare Pages and they have a new implementation or Cloudinary or, you know, Vercel Image or something. But, like, we we can't just because they changed their implementation, we shouldn't be creating new majors of Nuxt Image and Nitropack all the time. And so compatibility date is a way of handling that and saying, like, you can you can freeze the implementation of, say, this provider's, solution without having to manage that in the center of of Nuxt or Nuxt Image.

Daniel Roe:

And that is something that we are going to and we're also thinking that would that will help us with things like run times. And that's something that in a new version of nuxi, we're going to actually add to your Nuxt what prompts do you want to add it to your Nuxt config? And you basically get, like, a frozen compatibility date, which you can update at any time. And we'll we've we're creating tooling that will show you, like, hey. These are the new features or changes if you want to update your compatibility date.

Daniel Roe:

And you can also do it on a per provider basis rather than just one date. So that that is an interesting set of features that are going to be enabled by that and will make, hopefully, the whole release cycle a lot better because it will mean that, say, when Nitro needs to release a new version of, I don't know, AWS Lambda, it doesn't we don't have to say, oh, no. We can't release it until Nitro has a major. We can actually say it was fine. We'll release it, but we we have a compatibility date constraint that people have to opt in to the new date to get the new feature.

Daniel Roe:

And that that should make people's experience also a lot smoother too because they if they have a fixed compatibility date, even when they update to new versions, they're gonna get a guarantee of behavior, which is what you want. Right? You don't want stuff changing unexpectedly on you.

Alexander Lichter:

So the compatibility date, I I also think that might help in like, it might it might help the users a lot in terms of, like, you don't have to wait for another major or, like, have to patch the package yourself if you want new behavior. But will it also make it more difficult for maintainers to decide, okay, what should go into, let's say, a minor or a major at some point versus what belongs to a new compatibility date and also how to maintain all the previous, let's say, compatibility date behaviors, side by side?

Daniel Roe:

Yeah. So from from my point of view, it's not going to cover, compatibility date isn't going to cover Nuxt behavior. So it's it's not because, yes, that would be. I I think as far as Nuxt behavior is concerned, we have Semvo for that. Compatibility date is going to be for stuff like presets or, so in other words, for example, if you have Nuxt Image, which has 20 plus different image providers, and some of them are changing their behavior.

Daniel Roe:

So that that's what it's going to be. So we're not going to we're not going to be changing Nuxt's behavior based on compatibility data. I think that's that's the first thing that as far as I'm I'm planning, we we won't be. And I think that's also true of NitroPack. So, again, it's the presets under the hood, and it's basically trying to figure out how to version stuff that you can't version with SemVer.

Daniel Roe:

And so I I think, you know, there there are some providers which which do this, like Cloudflare has the Wrangler TOML, which has a compatibility date concept. Sanity, for example, is the CMS. You can have a compatibility date. Lots of APIs, GitHub API has a compatibility date, and so you can sort of specify, like, I don't want behavior changing from here. And that means that the, the test will never be about Nuxt because these things won't necessarily interact.

Daniel Roe:

The test will be, like, Nuxt Image will have 2 different providers for something, and it will have a test for each of them. And you can opt into 1 or the other based on your compatibility. You know? So it's I hopefully, it's not going to add testing burden. The last thing I want is, and this is one of my, it's a concern that I've, you know, I've shared as we've been, figuring out how to do this.

Daniel Roe:

I don't want to create something which is less maintainable. Like, I I I don't want like, I believe I believe in testing and testing fully. I'm I'm a member of the 100% test coverage, camp. That's what I would want to to go for, and I know a lot of people say shouldn't shouldn't drive for it, but I I do. I do want I want to get that.

Daniel Roe:

It it doesn't guarantee stuff. It's not the answer. Right? But it is a good thing if you can do it. And so I don't want to make that complex too too complex.

Daniel Roe:

I don't wanna have too many forks and too many matrices and running in the test speeds. So that is not what I see compatibility date doing for us. I see that as a way of versioning provider providers that that that change outside of our control.

Alexander Lichter:

I think that's very interesting. It might be, I think the challenge besides the the maintenance and also making sure, like, when to deprecate certain compatibility levels or, like, dates, when to remove them. I think besides that also educating the people on the topic of, like, okay, you have the Nuxt version, you technically also have, like, underlying maybe a Nitro version or, like, an OFET version. You have a Vue version, and now you also have the compatibility data that basically also spreads around maybe some modules, some packages, Nuxt and Nitro, and how these all belong together. Yeah.

Alexander Lichter:

It might not be easy, but it's I think it's doable. It's just like it's it's one more thing I'll say to to consider. But, also, as you said, like, okay, it's it's more provider specific things, and it's not really behavior of of a package of, like, Nuxt or Nitro or Nuxt Image. It's more like, as I said, the the provider's changing. I think with that, it's it's already, like, giving people a sense of, like, security as in, like, a, like, a sense of safety as in when the I want more or different provider changes or updates to preset, I change the compatibility date.

Alexander Lichter:

Otherwise otherwise, I don't have to.

Daniel Roe:

Yeah. I think I think so. I but I would, I mean, I would say that, you know, when we do release it, I would I would, you know, say, hey. Fix the compatibility date at the current current day. And then when you run, Nuxi upgrade, the aim is we'll we'll say, hey.

Daniel Roe:

Okay. You're upgrading Nuxt. There are some new features or some new behaviors, for these providers. Do you want to update your compatibility date? And so, like, basically, it's it's a sort of separate slightly separate channel for, for updates.

Daniel Roe:

Anyway, this is this is very much work in progress. So this is not something we're shouting about right now. This is not something that even will have any effect. If you set your compatibility date, it's not going to do anything. But I think we have an opportunity to do some useful, cool stuff with it in the time ahead.

Alexander Lichter:

Definitely. Totally agree.

Michael Thiessen:

Yeah. So maybe we can go a little bit further back before Nuxt and Vue and talk a bit about how you got into this whole programming web development thing in the first place. So where where did that start for you? What did that look like?

Daniel Roe:

So, programming. So, basically, we had a we had a computer growing up. Like, I like, I I don't know of the age where, those sorts of computers were because that are quite old, and I I remember going to a friend's house and, like, there's a turbo button on the computer, so you could press the turbo. And I don't know what it did, but, like, there was a turbo button. I feel like that that dates me.

Daniel Roe:

And I remember those buttons. Yeah. Windows 3.11. Goodness me.

Alexander Lichter:

No idea what you're talking about, folks.

Daniel Roe:

So, like, I I remember so Qbasic. So, like, trying to build, like, games in Qbasic and, friends would be like, okay. So it's like, go to this line and, like, ask a prompt question. Like, if they do this, then go to this other part of the code and, you know, terrible experience in some ways. Like, it's just this really, really long file with, like, go to line number to to change the flow.

Daniel Roe:

Like, that's that would be very frustrating. But, but you could build some cool stuff. That was fun. And and the idea of being able to think of something and make it happen. So I think that was my first experience with programming.

Daniel Roe:

And then I I bought a book, teach yourself visual basic in 31 days, and, taught myself how to code in Visual Basic, which again, you could bake stuff and make stuff that run on your your desktop. I made some stuff, like, I was, I don't know, probably about 13, and I can't remember. I made, like, a password stealing app, that that would steal the idea was it would steal my parents or my sister's password for the computer, so like it would, it basically pretended to be Windows. So, like, it had, like, a login dialogue and, like, a desktop, And so you'd click you think it was the login and you click it and you type in password. And what it would do is it would, like, say sort of wrong password, and then it would disappear.

Daniel Roe:

So then you would be confirmed with the actual Windows login, and you would try it again, and it would work. So, but behind the scenes, it would, you know, collect it for me. Like, there was Unique? I know. I I built, like, a time tracking app for, I think, for my dad.

Daniel Roe:

Like, I built, like, a little you know, on the on the sneaky side as well, I had, like, a, like, reset app. So, like, I could press a keyboard shortcut, and, it would, like, reset my desktop to, like, the homework I was meant to be doing. That was quite a handy handy app. And, yeah, I don't know. Like, it was it was fun.

Daniel Roe:

Like, you could you could build stuff and hook up logic and just, like, draw buttons around and click them, and they would did did stuff. And so that was that was and and and then, I don't know, hacking around with PHP and WordPress, trying to to make make a website do and look the way you wanted it to look. So I don't know. I I I did lots of that that kind of stuff. Just, you know, it's like a just for fun.

Daniel Roe:

I I did I did I had a I did one, freelance job for a Chinese fashion company that was coming to New York to do a fashion show, and they were a client of my dad's, and, and they hired me, to to build them a website. And I was very proud of it.

Alexander Lichter:

I think I made

Daniel Roe:

it Macromedia Dreamweaver and it was beautiful. I can't find it anywhere. I've looked in the Wayback Machine and whatever, and it's just not there, but I remember it being gorgeous. You know? I mean, it was like image map.

Daniel Roe:

It was like an image and then, like, image maps and, like, you hover it over and stuff happened, but Oh, yeah. Very different outdated tech from from today's world.

Alexander Lichter:

The hot stuff back then?

Daniel Roe:

But absolutely, that's right. Yeah.

Alexander Lichter:

Sweet. And then how did you make the contact over to the Vue world, let's say?

Daniel Roe:

So I was, well, fast forward quite a few years, and I was, I had a small creative agency. We were focusing on clarity of message. So thinking about how to express what a business was, uniquely good at, simply. So what was the essential point? And we were alongside helping businesses think about what their brand was.

Daniel Roe:

That would be it, like, what what you're about, but we would also help them implement that brand. So think about things like branding, sort of graphics, images, colors, fonts, and then create stuff like a website. And so we were doing that in in WordPress, Laravel, and I think through LaraCasts because even in the WordPress, world, I was trying I I really thought, I regarded Laravel as, sort of, this is this is good. Like, dependency management through code rather than through clicking buttons in a dash dashboard and randomly downloading zip files and running them on your server. Like Yeah.

Daniel Roe:

It feels like doing this through code is, like, is a better way. So, came across sort of was very much looking to the Laravel ecosystem and, I came across a course on Lara casts, Geoffrey Way, teaching view. And I love Geoffrey Way. He's fantastic.

Michael Thiessen:

So I

Daniel Roe:

that's just that that voice and that sort of simple, video of just, like, a IDE and that's I did they that was perfect for me. And, and so he was teaching Vue and I guess this is Vue, this is how it works. And the idea of an app that was reactive, like, that that allowed you to declare how your data affects the view you get on the web page, and then have that declaration generate your UI. So as the data changes, the UI changes. You're not you're not going around hitting document query selector.

Daniel Roe:

You're not sort of thinking about the the jquery model of I'm gonna go into that page and do stuff to it. You're thinking more about how do I define relationships. Like, it really it was a really amazing concept, really changed my mind about what what websites could look and feel like. Because at this point, you're you're building apps again. Now this isn't just a website.

Daniel Roe:

It's sort of displaying data and you click a button and it goes back to the server and makes the database great. No. You're you're building something which is much more present for the user, much better experience if you're if you're using it. You you you have something which happens instantly. And so that was that was amazing.

Daniel Roe:

We basically pretty much immediately transitioned over to use Vue, either as a front end for a WordPress back end or just as a a full full app. I remember sort of telling my, my, I guess my my lead, coder that we were just to scrap the WordPress site he was starting to build. We're gonna build this one at Nuxt. So that was that was the sort of the beginning of the transition for me, I guess.

Alexander Lichter:

That was back to in in Nuxt two times, I I would assume.

Daniel Roe:

There was

Alexander Lichter:

Yes. I mean, it can't be Nuxt 3 because, well

Daniel Roe:

There's some time, time difficulties paradox in that case.

Alexander Lichter:

Time traveler Daniel here. Okay. Busted clearly. And and just to double check, like, you you never, like, formally learned to program. Right?

Daniel Roe:

No. No. No. No. So, I studied I my degree was, law, so I studied, you know, arguing, and oh, no.

Daniel Roe:

I mean, it was it was jurisprudence, so, theoretical law. Like, and then I and I also studied theology, but never once. So I know I I think I might have also had a a course, introduction to programming or something like that in school, but it was it was c plus plus and it was one of it was like a or computer science maybe. But that was that was, like, that was in school, not not at university. That was alongside, you know, maths and physics and, writing and lots of other stuff.

Daniel Roe:

Obviously, Alex, you're you're sort of very you've just finished a dissertation. You have, like, a proper proper degree in everything in it. I don't have a degree yet, though. Not yet. No?

Alexander Lichter:

Bureaucratic hurdles. I don't wanna get into it, but it will come soon. So the hat that's well, it's not very visible. It's somewhere up there on top of the Nuxt 3 thingy is yeah. Next time, will will be will be there for a reason.

Michael Thiessen:

So soon. Yeah, I have, I have a degree in CS as well. Not a, not a master's or anything. Yeah. My, my school was so some schools that I've, I've seen do both computer science and software engineering.

Michael Thiessen:

So one is like more math focused and the other one is more like practical software development skills focused, but mine was sort of like a 50, 50 blend. So I like, I did a class on programming languages, but I also did calculus and never once have I used calculus in programming. So I don't know why that was in there, but I learned it.

Alexander Lichter:

Never formally verified if a programming works or not.

Daniel Roe:

I loved calculus. I loved calculus. Nothing I I wouldn't really know how to integrate it with programs, but but calculus, oh, it was so much fun.

Michael Thiessen:

I had a limit of how many math courses, math and science courses I could take in my degree. And so I wish I could have taken more. And that's, that's all I'll say.

Alexander Lichter:

I think the average computer science, student would probably say, I would love to take just less of it. At least I remember my English actually like, oh, math. So difficult. Like, also, I enjoyed it in a way. Never had the best grades, in at least in math courses, but I was also just a bit lazy with learning sometimes, which, well, somehow it still worked out, I guess.

Alexander Lichter:

But it's it's super interesting because I was, like, the all, like, algebra and, like, theory behind it, like, set theory as well. It all helps subconsciously, like, understanding certain logic constraints. I mean, you can even map that to, like, certain things in reality, but even just knowing, okay, this is the thing, like, doing that and and understanding the false behind it even can help without, like, consciously realizing.

Daniel Roe:

And I think a lot of it is logic as well. Right? So, like, thinking about just thinking critically and rigorously. I mean, I like, it's easy for me to say this as someone who doesn't have a computer science degree, but I feel like a lot of a lot of it like a lot of the the challenge that most people face when coding is just that computers do what you tell them to do. And that is the problem because we are not necessarily very precise when we tell people when we express what we want.

Daniel Roe:

So we can express what we want, and we get we have this new language we can use called JavaScript, and we express what we want, and it doesn't do what we want to achieve. And the problem is, almost always, we weren't precise or clear enough or we failed to take account of some consideration. Right? It's like and so those are those are, in a way, easy problems once because it's it's it's just about thinking. That's that's what's going to hopefully reduce the bugs.

Daniel Roe:

I say this as someone who creates bugs all the time. I'm not not but but, like, I I feel like it's that that thinking thing is a very accessible skill because it's not like a a hidden secret that you can't learn. Like, it's it's just something you can get better at.

Michael Thiessen:

I think it definitely is a lot about like, programming is a lot about thinking clearly. Same thing with with writing, by the way, which, I found there's a lot of trans transference between the 2, that I found. And, yeah, you can learn how to think clearly in a lot of different ways, like taking philosophy courses or math, or there's lots of people who get physics degrees or engineering degrees and go on to do software development or Yeah. Study law or I mean, you don't have to study anything formally. You can just, you know, pick it up as you go.

Michael Thiessen:

I think there is value in a degree, but it's for myself, at least it's like the other things that it forced me to do like time management and, and being disciplined. That's, that's where the value is. And so it's like, there's often I don't know if that debate is the right word, but like, sometimes people who don't have a CS degree feel insecure maybe, or feel like they, they can't apply for certain jobs or that their skills aren't valued. And I think that that's dumb because I know some really great developers, like yourself included, who didn't learn formally. And

Alexander Lichter:

I also know the other way around with people, like, having a degree and don't know how to program at all because, well, university doesn't teach

Michael Thiessen:

you to program in

Alexander Lichter:

a family. You you have to do it, like, practically. You have to work on a project. So, yeah, I don't think it's the best indicator of, like, coding skills. But, of course, all the things I said, like, time management, discipline, learning how to learn, so on, like, putting oneself through, like, a whole university course is an achievement for sure.

Alexander Lichter:

It just doesn't say much about programming skills.

Daniel Roe:

Yeah. I mean, I wouldn't necessarily say I was that great at studying at university as in I think I probably didn't study any more than 2 days a week. And I think probably if I went back and did it again, I would be maybe, I don't know, a lot more efficient. I think I I feel I've I've learned things since I mean, I I didn't do too badly, but, yeah, I think there were a lot of a lot of useful a lot a lot of fun things and good things that came out of it.

Alexander Lichter:

That's for sure. So now we almost did a full circle. Like you said, you after not studying computer science, but having 2 other degrees, which is pretty amazing, and then starting to build, not before proceeding more on the flaravel, but with you and with Nuxt, to Nuxt 2 times, well, then you were one of us, one of us, the Nuxt developer. So what happened? So you eventually became the lead of the Nuxt JS team.

Alexander Lichter:

Or maybe before that, you probably well, not probably. I we all know that, but joined the core team of Nuxt. So so how how did it happen? It was probably wasn't just like random, like, hey, Daniel, you're here. We're here to join the cult.

Daniel Roe:

Well, it was basically bad. So, I mean, I No. No way. So bay basically, so I had discovered Nuxt and, still had my my company. We pivoted into software as a service because we we, one of one of, my our our clients, needed, an app.

Daniel Roe:

And so we built it for them. But, actually, I really believed in their vision and what they wanted to do, and so I ended up acquiring them. So, we did a lot of work for them, and and and we basically bought their IP. And, and it sort of pivoted into software as a service because, I liked I liked the idea of having a team that could build something that could scale. And so that was that was really, really great, really exciting.

Daniel Roe:

And we were doing more and more with Nuxt, and so I started helping out with deploying to Vercel, for example, and I was, helping, triage and create bug fixes for the the Nuxt Vercel builder. It used to be Now Builder, mind you. These were the days. It used to be you could deploy a docker image to Vercel. That just was deprecated at some point.

Daniel Roe:

It was a hard thing when that happened. Threw threw me into, a great deal of trouble at the time. But but, yes, just started helping out, and there was this other guy, pi pi 0, didn't really know who he was. He seemed to be very sort of doing lots of stuff as well, and so, I didn't even realize that he was sort of, on the I anyway, you just from the outside, you're just seeing seeing people, and collaborating, and it was, it was a lot of fun, something that I really enjoyed doing. When my, and then I started contributing more to Nuxt, as well.

Daniel Roe:

And I guess, when I I decided to to wrap up the company, so my co founder and I were had a slightly different idea about how to go forward and, it was sort of COVID times, and we we felt it was probably best to wrap things up, not in not in a bad way. And so we we shut things down, and I thought I would take a little, a month or so and figure out what was next for me, partly because I had no background at all in tech. So, you know, this is this is something I did. I did it myself, so it's not like I even had I wasn't going into something where I could say, oh, you know, now I know how tech works because I've been working at a at a company and I have colleagues and sort of like, no. It's my company.

Daniel Roe:

So I had nothing to nobody to learn from. I'd never been to any conferences, you know. I had 1 or 2 online over over COVID. And so I I didn't really I I thought I was trying to figure out dust off the CV and try and figure out what's next. But, Sebastian, when he found out that I I had stopped, my company, he's like, hey.

Daniel Roe:

Can can we sponsor you to work on Nuxt? And I was and I was basically really, really honored, that that he would ask. So I was really delighted to do that. And so I sort of tore up the CV and, yeah, started building Nuxt 3. So that was that was the thing.

Daniel Roe:

It was basically a knock on the shoulder and, hey, come join us.

Alexander Lichter:

But after being around for a long time, after contributing for for quite a bit, so that's that's the important part there as well.

Daniel Roe:

It was it was basic, but it's not just like,

Michael Thiessen:

Yeah.

Daniel Roe:

Exactly. So it was what I was doing already, but without the need now to go and find a a job to enable it, which is pretty cool.

Alexander Lichter:

Very nice. Here we are.

Daniel Roe:

And here we are exactly.

Michael Thiessen:

So are you still primarily funded by that sponsorship?

Daniel Roe:

Yes. Probably. So I have a, sponsor. I I I've tried to specify. I think it's the so the majority of my of my sponsorship is from Nux Labs, Although, I do also have sponsorship from from others, and and other companies as well, like, FormKit, a generous sponsor, Sanity, for example.

Daniel Roe:

There are some others on my on my website that I that I mentioned. Evan sponsors me. So a number of number of folk. Henko.

Alexander Lichter:

And, of course, quite some individuals as well, like some some developers too.

Daniel Roe:

Yeah. Absolutely. That's true. So, I I've I basically, have have sort of individual sponsorships. In some cases, I have retainers, which retainers that I don't typically think of as sponsorship, but it's it's a little bit more, sort of project focused.

Daniel Roe:

And then I do a very, very small amount of consultancy, on that sort of sort of by the hour type of of thing. But, really, I I don't have a lot of time to do that. And so I'm very, very grateful for sponsorships because they mean that I don't have to, and I can focus on well, I can focus on what I enjoy doing, which is maintaining Nuxt and helping as best as I can. Open source. Exactly.

Daniel Roe:

Yeah. Yeah.

Michael Thiessen:

It seems like most of the Vue ecosystem is actually, like, true open source where you are sponsored by Nuxt Labs, which is a company, but at the same time, you aren't a free agent. You're still independent and Evan is independent. He gets sponsorships and other things. And, and so it is interesting how, how that works. And, yeah, it's, it's nice to see that this whole like open source thing, like it can work.

Michael Thiessen:

It's not just like a pipe dream of, you know, people just contributing in their, their spare time, but that there can be folks who lead it, that are independent.

Daniel Roe:

So speaking, like, just very much, personally, the fact that there is this independence is very, very important to me. So if if I weren't independent, I would probably be doing something else, because the the the thing that I value about open source is that it is, like, free will. So it's it's a sort of something that I do because I enjoy it and I want to help people. The moment that it stops being that so the moment that I start being, I don't know, having KPIs and, you know, like, I might as well do something else that has KPI. Oh, yeah.

Daniel Roe:

I might I might as well do something else that is that is also better paid. You know, like, it it becomes a different kind of thing at that point. So, the the fact that I think you can bring a sort of things can be gen things can be genuine and open and straightforward. I don't like the idea of hidden motives and people who have agendas that are not entirely disclosed, or even the suggestion that that might be the case. So independence is good, and I like that.

Alexander Lichter:

I mean, the 3 of us all running well, either being solo self open source maintainers like Daniel running their own businesses, like like, we like, I think we all value our independence as well to to big part. And I I think also, like, in your case, Daniel, it's really nice that you have the opportunity to do exactly what you would like to do while not worrying about, oh, yeah, how to pay the bills because thanks to the sponsorship that's done. Because otherwise, as you said, then you would do more consultancy. You would have less time for open source, and it would be like a means to an end because, well, you have to live for something too.

Daniel Roe:

Yeah. Yeah. Exactly. I mean yeah. I think it's always difficult to know exactly what what things would look like, but, yes, I think it's I'm just I just feel very fortunate.

Daniel Roe:

I do also think, you know, things like this also do somehow make you unemployable in a way because half of the the thing the thing that I enjoy about, about having my own business previously, for example, and also about being involved in a a consumer's project like Max is the breadth of what you get to do and the the, like, the impact that you can have on people, that you can actually have a big picture perspective. Like, I mean, think about, you know, yourself, being able to write code and then teach people about how to use it. Did you know, like, there are lots of different avenues that you can can be, diff different ways you can be applying your your mind and inclination. So you're not sort of stuck in a very narrow space. You're in quite a broad space.

Daniel Roe:

And I I quite enjoy that even if it's a little bit different. So, like, you know, a lot of issue triage, sort of thinking about where to take things in terms of framework, sort of building features. Yes. Reviewing people people's PRs and seeing their PRs get better and better. You know, giving talks.

Daniel Roe:

You know, there there's lots of of different things that it feels like don't fit very well in any one box. And having the ability to do all of that is is is a lot of fun.

Michael Thiessen:

I completely agree because, like, any given week, I'm writing code and writing articles and I do marketing and sales for the, the courses that I've gotta do to support myself. And I get to record podcasts and talk with interesting people that I like to hang out with. And, and like even, even the code part is while at my previous job, I was, you know, the best place to put me was just writing view on the front end, because that was what I was really good at. But with my own stuff, while I get to mess around with database schemas and try and figure out how do I, you know, improve this deploy and fix other things. And it's like a wider breadth of thing.

Michael Thiessen:

Yeah.

Alexander Lichter:

I mean, you also have to, in a way, like I don't, I don't, I don't have to hire someone to do it, but other than that, like, okay. You'll learn. You'll get into that and play around with things you would maybe never touch otherwise because, yeah, then you're like the hyper focused specialist. Like, okay. I'm good in that tiny niche of the other tiny niche and so on so on that we discussed in the beginning.

Alexander Lichter:

So really a a really good thing, for for learning. And also, like, once again, the the independence and freedom of choosing what to do, because you don't have to, like, always be super efficient as in, like, I have to make every hour count because otherwise, I don't know, I would get my salary. I would get, the emotion, or I would be rated badly compared to coworkers is also a big thing where the the pressure is is really reduced. Mhmm. Yeah.

Alexander Lichter:

I think on on that note, that's, sounds almost like a good part a good time to wrap up. We have, like, still a few things when it comes to, like, Nuxt 2 to Nuxt 3, the whole story around that, but maybe that's even good for another episode as we're already quite good in time as well. Mhmm. So, Daniel, would you like to come on for another episode again?

Daniel Roe:

Oh, absolutely. This is so much fun. Yeah. Anytime. But next time we have to get together in person.

Daniel Roe:

Right? It's like,

Alexander Lichter:

that would be cool. Yeah. I would love that.

Michael Thiessen:

Let's figure that out.

Alexander Lichter:

Definitely. There's there's one last question, though, because I I know lots of people are interested in that. So before we fully wrap up, I I have to ask that just because, otherwise, the Nuxt 4 people looking forward to the framework they add to the new major version of the framework or the framework itself, they would be like, why why you didn't ask that Michael and Alex? Why you didn't do it? So we talked about all the tiny breaking changes here and there, like, make it frictionless, like, it like, less effort for the people.

Alexander Lichter:

Ideally, almost no effort as as you said, with Sebastian's, 3 or, two lines of code change. When, Daniel? When? That's the big question.

Daniel Roe:

So, the big thing for Nuxt, for right now is, the Andreas ecosystem. So almost all of the changes that we'll make on the Nuxt specific end have been made. So you can install Nuxt 3 dot 12 and opt into compatibility version 4, and almost everything is there. So you basically almost have Nuxt 4. The the changes that we still have are things like a Nitro Pack major release, and some other things like that.

Daniel Roe:

And Puya is working incredibly hard on that, and hopefully, I'm gonna be able to help as well. Shouldn't just be up to 1 person, but, like, there's there's there's a lot lot to be done. So, originally, we said 16th June. It's seeming unlikely that that's the case. I think it is likely though that it will be before the end of June.

Daniel Roe:

We shouldn't be too too far delayed, particularly because we have 3 dot 12. So as long as people test it, find issues with it, let us know how it goes, then, then I think we would we'll be good good to go when when we have the the new Nitro release.

Alexander Lichter:

Perfect. That's I think that's the best, estimate we we could have. I mean, pinpointing down to a certain date is always difficult anyway. Yep. I mean, we also don't do this with major versions.

Alexander Lichter:

We just say, hey, once a year. Right?

Daniel Roe:

Yeah.

Alexander Lichter:

So so that makes totally sense. And I think that's also good, well, a good instruction for the people listening. Like, hey, you want Nuxt 4? Just take 3.12, test it, opt into the breaking changes. And if your app works, that's pretty amazing.

Alexander Lichter:

If it doesn't work, which is very unlikely, but it could be, well, either change your code, fix things, your super quirky cool modules, or report a bug if it's a bug. Yeah. Pretty much. Then last but not least, Daniel, where can people follow you? Where can people follow your projects?

Alexander Lichter:

Is there anything you wanna share with the audience? Anything where this particular, like, hey. You have to check that out besides Nuxt itself, of course.

Daniel Roe:

So, I have a website to to check that out. That's, Roe, roe.dev. And you can contact me that way. So I have all my social links on Twitter where I'm @danielcroe . On GitHub

Daniel Roe:

@danielroe . Let's see. Projects. I think the main thing, that so I could I could mention let's see. I've released a new my my newest sort of app type thing is Page Speed.

Daniel Roe:

So page dash speed dot dev. You can check out, the speed of your website and share it on social media. And it's it's just to queries the PageSpeed Insights, API and the Google core web vitals API. So that's that's something I just pretty enjoyed building. I'm also planning on creating a course on teaching React developers about Nuxt.

Daniel Roe:

And if you go to reacttonuxt.com , you can, sign up for that. So that's, that's something I'm going to be emailing people soon to ask for to try and get a cohort of early adopter react people who can, be be there with me as I record and create some some content. Introducing Nux to the React world.

Alexander Lichter:

So send it send it all to your React friends, maybe colleagues from other departments. Be like, hey. That's your chance to learn Vuonox easily.

Daniel Roe:

Exactly.

Alexander Lichter:

Very cool.

Daniel Roe:

Yeah. I'd love to get you on If you want, you should do do a collab.

Alexander Lichter:

Yeah. Absolutely. Would love to. So let's definitely, let's definitely go further on that. And, of course, all links Daniel just mentioned, they will be all collected by us.

Alexander Lichter:

Put in the show notes as well. So if you just, like, note it down on a on a paper because, like, oh my god. Yeah. Perfect. For my colleague, he needs that course, gets into Vue and Nuxt, well, then no worries.

Alexander Lichter:

Just take a look as usual. So, yeah, Daniel, thank you so much for enlightening us, all around, next for your your journey, being an open source maintainer, and, we're looking forward to, well, Nuxt 4 and having you on another time. Thank you so much.

Daniel Roe:

Thank you.

Alexander Lichter:

And for everyone out there, of course, don't forget to check out, well, later, like, older episodes. We have a few more in stock. Super interesting from, well, people building amazing things in the open source, community like Daniel is doing, to people, like, using Vue and Nuxt every day in the industry, building amazing applications through game developers and so on so on. So have a look there as well, and, of course, tune in for next week's episode as well. Releases are every first Thursday, depending on your time zone.

Alexander Lichter:

Of course, maybe a little bit delayed, but, anyway, every week, a new episode. So thank you, everybody, for listening to DejaVue , and talk to you soon.