How'd you like to listen to dot net rocks with no ads? Easy? Become a patron for just five dollars a month. You get access to a private RSS feed where all the shows have no ads. Twenty dollars a month, we'll get you that and a special dot net Rocks patron mug. Sign up now at Patreon dot dot NetRocks dot com. Hey, welcome back to dot net rocks. I'm Carl Franklin and I'matechard Campbell, and we are in our respective hovels. Here me on the East coast of North America. You
on the West coast of North America. Yep, both experiencing some weather. Oh yeah, I mean it's warmer here, right. There's a little bit of snow on the hilltops, which is where it should be, but just a bit stormy. But you're right on the ocean. This is the trade, right, So we're recording this ring what is really being hyped up as like the worst storm to ever hit America ever? Really? Yeah, because it's big, Yes, because it's big and tornadoes and like there's multiple fronts
and multiple things happening up here in the East coast. We're going to get rain and strong winds with hurricane watches. So you know, if it was colder, it would be a nor'easter, right, And I guess it's still a nor Easter because it's coming out of the northeast. Yeah, nor eastern. Typically you got the warm jet stream coming up from the south, the southwest, and you got the Arctic blast coming over the Great Lakes and they kind of join up and turn into Snowmageddon. But it's no snow this time.
Well, very little, I guess, but where I am. But anyway, so we're we're hunkering down for a good show here, and thank god the propane tank is full and the generators working. Yeah, I stalk the wood in case we lose the electrical heat, although heating on wood is pleasant, you know. But you know what though, if you lose power, Yeah, what would be better then? To, you know, pull out your battery powered phone or whatever, plug in a charger and listen to
some old dot it rock shows there what would be better? Okay, maybe drinking yourself silly might be better, but I can think of a couple other things. You know, you can do both. That's true. Hey, David Fowler is here. We're going to be talking about dot net Aspire, but first let's roll crazy music for better no framework awesome. What do you got? This being showed eighteen hundred and eighty one, which is just unbelievable,
isn't it? M palindrome? Yeah exactly. Yeah, I noticed that the last day of twenty three was one two three one two three one two three yes, yeah, two three one two three one two three yeah. All right, So it's eighteen eighty one dot pop dot me and that'll bring you to leftover Salad dot com to some cartoon versions of personifications of your favorite programming languages, and I just it just made me crack up. The first one, Python is a hipster smoking a cigar. He's got tattoos and holding
a coffee cup, and he says, my formatting is my syntax. Boomer. No, you didn't say boomer, but I can just I can just see you can hear it. Yeah, So I asked you both, David and Richard, to take a look and tell me your favorite ones. What's your favorite one? Richard? Oh? Well, see Sharp, obviously I have a daughter just like that. Yeah, C sharp is I am nothing like my father, and she looks C and C plus plus she looks uh
off the father. Yeah. So the right right above her is Sea, which is an old guy with a big gray beard and a balding head. If you're not allocating memory, you're not living. And then C plus plus right below it is the same guy, same caption, except now he has borg implants. Right, David, did you find one that tickled you? I thinkline is my favorite. Yeah, he's awesome. Her ling's very manga,
isn't it is it is? And it's uh. It's this woman with a with a cane and skeletons behind her, and she's saying, destroy one of my processes and I will only grow stronger. And that is a magic staff if I've ever seen one. Absolutely, she's wearing like an amulet and there's like mascara dripping from her from her eyes or whatever that is. I don't know, right, although Haskell is probably like peak. Yeah, the diagram is exactly what I think of HOSCO programmers, Like above everything this pure
math, everything is just like it is perfect. Yeah. And then go is this giant Google monster, you know, with a Google T shirt just ripped right, bald head and it's a little nerd sitting in front with bang Eyes. All right, Well anyway, okay, I thought that was fun. It's a good diversion. So Richard, who's talking to us today, Well, it turns out we haven't had mister Fowler on the show for a little while, probably a little too long actually, but he's been busy being
a distinguish engineer and stuff. So I'm yeah, we're not gonna fuss too much on that. He gets a get out of jail free card. Well, and I went back and looked at some of the old shows and so forth. I'm like, hey, you know, but I found this great comment just by searching on his name. Actually, it's actually a comment.
It's seventy years old. It's from August of twenty sixteen, episode thirteen thirty five, and when we were talking to Matt Watson, who's the Stacify guy, about his experiences migrated to dot net Core, of which we blame David for extensively. And so Matthew Decree made this comment admittedly seven years ago, where he said, having weathered the storm of dot net core and its other names since Beta eight, I can completely understand the frustrations trying to follow all
the decisions that have been made. I even gave up during the RC periods. Yeah, there was some bumpy times getting too V one holy man. However, the dot Net standard version is much easier to understand if only you have the right resources. Trouble is it seems that a large number of naming changes. That seems to be that there are many official locations for documentation too, remember to Life before Learn, none of which you appear to be completed.
I guess a documentation is in preview two. I did manage to and they managed to find an analogy by David Fowler, and he provides a link to a GitHub doc that's not in his head David that puts in terms any c sharp should be able to understand with code. With this is clear to understand the PCL capabilities. You can target the right version based on your capabilities.
It even describes Zamaran libraries in these terms. As a result, it makes it easier to know whether you're making a library that can be run on mobile or at least in that sense, if it compiles, it can ship. And that's what delighted me about this find right, was it's like, oh, it's David Fowler. So he answered a question with code. Of course, it's great. And the code still run, is still up, it's still there. I mean, of course the pcls are gone. Let's
not talk about that, my god. But yeah, it was such a cool comment and I probably should have read it years ago because it was one of those great things about how do you explain stuff to people? Yeah, so, Matthew, thank you so much for your comment. A copy of music Cobe is on its way to you. And if you'd like a copy of music Code buy I write a comment on the website dot net rocks dot
com or on the facebooks. We publish every show there and if you comment there and a reading the show, we'll send your copy music Codbear and you can follow us on Twitter if you want to. But the cool kids are hanging out. I'm mastadon, I'm at Carl Franklin at tech hub dot social, and I'm Rich Campbell at mastadondol social sen Usitute. You might get a mug. Pretty sure you won't, Pretty sure you might. All right, so let's bring David Fowler back here. He joined Microsoft, of course,
as a developer on the aspenat team in two thousand and eight. Before that, he did two internships at Microsoft as a tester and developer. He's originally from Barbados and went to college in Florida. And you may have heard of a couple of things he's been interested in, like I don't know signal R you know that little thing, lots of other stuff. And now we're going to be talking to him about Aspire. Hey, David, what's up. Hey y'all, haven't seen you in a while, haven't hung out for a
bit. Yeah, it's been a long time. Yeah, you know kidding, Yeah, yeah, yeah, And again, congratulations on the distinguished engineer. I don't even know if I know people people know what that even means. Yeah, I think it means a little bit of great hair. You
had been doing this for a while, Tiny. It's weird when you go from being the youngest person on the team, being the intern, to like being there for a long time and only beginning to realize how long you've been there when new people join and they ask you questions and you're like, what, huh, you guys not just normal? If you guys want to hear Old, I remember when dot net Aspire was a program designed to support the
growth and development of developers who are passionate about dot net technology. Oh my gosh, name reuse problems that never happens. What that's not? That's not that's not a thing. So if you go to chat GPT and ask can you tell me about dot net Aspire, that's what comes out, unless you ask it to go to the web and say no, no, no, no, I'm talking about the Azure thing net framework thing. Oh my name is super hard. I mean yeah, I remember even trying to name things
like Signal Or, Razor, Blazer. We got some pretty cool names. I will like, Blazer is a really good name. Yeah. Finally Razors as well, Razor Exactly. It's not Microsoft rendering tech stock for SP three like that meme that we have at Microsoft were naming things poorly. Blazer and Razor brought the entire mold. I mean to be clear, it's not a meme just at Microsoft Over Technology Foundation otherwise known as w t F. Yeah, OKID, it's been a ride. So it was an Ignite that you
decided to roll this thing out. Couldn't wait for build? Huh you were ready, couldn't wait for build? That's right, that's right, Ignite.
What's insandable? Aspire was the team had a lot of ideas rolling in our brands for like a couple of years now, right, So we did TIE in twenty nineteen, and Tie if you hadn't seen it, it's still there on GitHub, dot net, slash tight and TIE was our first real attempt at trying to build a micro service tool developer experience for making easy to develop these kinds of applications that were that were made up of multiple parts of your
app. And the story of TIE is is interesting because what ended up happening was was twenty nineteen was that year where Kubernetes was like we had been ignoring it, but me personally had been like, you see it, and it's important, and it's a thing people are learning, but it you put it in the back burner and you wait to see if you get more signal. And it kept getting stronger and stronger. Okay, this is the thing that people are using, and this is TIE T y E tie T y e.
Yeah exactly, yep, yeah, yeah. You know. I went researching dot net Aspire a little deeper from when I saw it ignite, and the first thing that came to mind is, oh, kind of like as your service fabric, but you know, community driven and yeah, so and we should correct one thing before Jeff Fritz actually reaches through the wire and strangles
us all. He announced it a dot comp which happened to the same same time as a night but and I was working a night although I did do a shift at dot net comp, but it was a dot dot com. So please no car box, like, calm down. I very angry right now. And we were we were actually at Ignite like that same week. So I did the keynote dot net Comp. We did talks, and then
I did the two panels like Aspire and stuff at Ignite in Seattle. So you did talk about Aspire at Ignite while also having announced it at dot net Comp. Correct, because that's not confusing at all. That comp is a community thing, right that Microsoft gets behind, and you know Ignite is obviously Microsoft's baby. But from what I remember, there were more people that were tuned into dot net KOMPF than went to Ignite. It was huge this year,
like it was insane this year. Just yeah, quite amazing actually watching that conference girl from this super small thing that Heavier kind of helped together into what it is today insanely massive conference that people watch real time life, and it was a ton of fun, like making the keynote recording at this time. I remember last year the keynote is life ye oh my gosh. Yeah, total stressful, like the back to back rehearsals making a keynote like work.
Well yeah, well I know that you are no stranger to live keynote code on the fly, demos that blow people's minds like mine. It's funny. Life coding to me is like the easy part, right yeah, all right, so let's just talk about dot net Aspire. What is it? So tai Tie is the precursor project, right, yeah, yeah, so Tie is the precursor, but in particular, how does it compare to as a service fabric, which kind of walks in the same path. Yeah.
So what's funny is when we were building TAI, I felt like we were going to get feedback about Doctor Composed and Thaie service fabric. Kind of surprised me, to be ho, and it should have, but it surprised me that people drew the comparison. But it in hindsight it made complete sense because Microsoft shit and Orchestrator. So during the Great Orchestration Wars of twenty you don't know fifteen to twenty nineteen. Right, there was Mesos from Apache. There
was like it was Mesos, Doctor Swarm, Kubernetes, Service fabric. Right, there are these four big ones that people were all using, and there's one called Nomad from I think Hashi Quork, and everyone was kind of trying to see which one to win. I'm not sure if you recall, but in Azure there was there was a service called ACS, right Adre I think it was the original AJUC container service, and it supported multiple orchestrators. You could pick your own and there was no winner at that point. Right,
you could pick an orchestrator like and bring your own containers. And then Kubernetes won. A service fabric is still very much used, Like, yeah, it's not like it went away and enterprise is Yes, it's still there. Right, why do you think Kubernetes won? But it's also really tied to Azure, isn't it service fabric. I mean it will run on Primo, we'll run on whatever cloud. But it's really it really shines because it's using I mean Azure itself is using service fabric, but it is the core of
Azure uses service fabric for sure. The Spire is really more like a framework, isn't it. For the dot net framework that super challenging makes it easy to put these things together. So there's the difference. We had this really hard time trying to figure out how to describe it succinctly, like what is a single sensus that describes what Aspire is because it combines kind of four things together and it is a framework, but it isn't a framework, So like,
don't you don't use the Aspire framework. You use it's been at core right. One of the challenges was, you know, we built this amazing website, we built this amazing tech over the last like eight years, and we have all these pieces that you can put together yourself in an application, but you kind of have to know how to do it. How do you wire up telemetry, how do you wire up wire up poly how do you
wire up health checks? All these things existed in the ecosystem, but putting it together into a package and having it be orchestrated and to end is the thing that aspired it to Aspire added orchestration for local development and give you patterns in your application for that. And what's funny is the tech isn't new. It's just we we glued things together that were that were there already, right,
So I looked at the Aspire components. Yeah, and you know, there are all the components that I would use my own dot net framework, except they have an Aspire in front of them. So yeah, obviously, so like Aspire dot as your blob service or whatever is as your blob service, but it's got the glue to hook it into the rest of what Aspire does. Open telemetry, Yeah, there's tons of them. Open Telemetry Configuration
DII exactly exactly, so, and it's funny. We spent a lot of time trying to figure out if that's valuable, Like is it valuable to have Glue packages that our version consistently and that glue things together that you would always need in an application. And we went back and forth with the you know, the adre ESDIKA team. Should we put this in the SDK, Should we have a separate component? What's the value in having a separate thing on
a glue package? But it I think based on what we've seen feedback, why so far people love the convenience, Like you basically grab this package and you call a method and it wires up like four or five things that you would have had to do by hand. And I think in isolation it looks simple, Yeah, I did it once this one time here for this one component. But when it's four or five reds and blogs and all these and you have distributed tracing on canfig config working, de I working, and it
also configures the pipeline in the right order. Right, I mean that's right. That's that's the biggest problem. When you have these things. It's like where does this go? Right? Yeah, exactly, It's like a jigsaw puzzle. Yep. And some of this actually came out of watching there were some internal teams building these higher level libraries on top of lower level SDKs, and we asked them like, why are you not using the SDK as is? And they were like, well, if you're building an at skilled cloud
service. Turns out these default configured, configed heatings made to work in any of it don't work well for the for our services. So we went, huh, could we take what you've learned from kind of building, you know, the team's backhand or the bang backhand and package it into a way that just works for our customers by default. So aspires trying to take knowledge from teams at Microsoft building high skill services and making it available for a third party
as well. That's as well. Nice. Yeah, there's a lot there. There's a lot to it. But at the end of the day, it's about that configuration, isn't it. It's about the distributed builders. Instead of like the regular old app builder you do in aspn net, you use the Aspire builder and then you can just add reddits at this ad that, yeah, wherever, and it just figures out how to put that pipeline together. Correct. One of the the first things we did was we took the
shop example on containers. Was one of like, is that it's funny? The backstory for shop is kind of incredible. One of our product managers, i want to say, like seven years ago, said we need to have this sample and a book with it, and they kind of like on their own built this thing, right, got vendors built, built this mega samples out. It's super popular, right, yeah, it never goes away, it never goes it super popular. So we were like, okay, that's
why I said, it's like really I heard I heard you. Well shop Shop got a massive revamp revapp in so the engineering team to cover e shop. So now the Aspinet core team owns the shop. There's a there's a new fork. It was a new repo that is kind of like successful to the older one containers and it's a Spire based a Blazer front end, right, yeah, it got it. It's all a Blazer front end, like it's all modern, super modern, has a beautiful photo like the the the
diagram is like amazing, and it's all Aspire based. And part of the proof we were like, okay, we need to be able to take each shop which is built on Doctor Composed and had a lot of manual deployment scripts for deployment to different parts of Azure like akas Aca, et cetera. And we said, okay, our test is we need to be able to take at a minimum a thing like each shop and aspiify it and then like be able to deploy it to Azure and have it just work right Azure or crew
nities and have it just work without too much changes. Right. The Doctor composed situation for Aspire and those who don't know, Doctor composed is a way to compose a multi process application locally, but you have to put everything in containers first. One of the big pain points in building doctor files for dot net projects is you have to copy every single project reference into the container for
container builds. Wow. So if you were to look at the doctor files for the shop, they're like one hundred lines long copying cs projects because Dunnet has solutions and project references and you end up having to copy the transitive closure
of all these dependencies just to build containers. Right, So imagine. So I've seen feedback people saying why would I use Aspire if I have composed And I think the the what ends up happening there is if you figured out the secret sauce to make it all work, and you have like massage your composed files to a point where if you're Mark Randall, yeah if if you if you somehow figured it out, then maybe you're happy with what you have.
But the moment you want to change add move things around, it gets hard again, right right? Yeah, wait for two exactly. So the when I mean when we moved each shop to Aspire, when we got enough of Aspire working to move each op to it, it was like, holy crap, Like we move and I think there were like four or five composed files on different environments because if yamo, there's no code you can't write if statements. You're you're bound by Like you basically end up having n different files for
any different configurations. Right where in the Inspire world we give you see sharp and you can write it if statement and you can declare variable. So like you end up in this place where I can just write code to say, if I'm in development, do X, otherwise do y right, yeah, super nice, super nice dot net visual studio, dot net templates. Yeah, is that where we would start, Like, I know you need docer for desktop, but I think it requires currently the preview version of visual Studio,
right, yeah, so there is, there is. It's funny this, This is one of the big things when we were like debating how were things land first, you can use Aspire from the command line or VS coach is fine, okay, cool, right? Big thing VS big VS does for you is when you hit F five, it'll auto attach to all your
processes and you can debug. That's one of the big things people ask for When we did TIE three or four years ago, it was I want to be able to debug a micro service, and I want to hit F five, and I wanted to launch the under the debugger all of my processes, so I can step across the end to end tracing right the end to end.
So typically you do that with the solution properties, right, run multiple projects exactly the same time, so you don't have to do that, correct, you don't have to do it. So your Aspire app, it just launches like end projects, containers, processes, and it will attach and you can just step into it. That's cool. Yeah, so be more of
that please, it's super nice. Yeah. We we built this local orchestrator and I think this is where the service fabric can be comes in because it has a very similar thing where service fabric has a local orchestrator, but that thing is the real orchestrator. When you deploy to like your environment on prem or to Azure, you are running that orchestrator. Yeah. Service service fabric
is really it includes the platform, the path. The platform is a service right, yes, correct, it's the platform right like it really is like you are running service fabric. It is an all in one, like give me the local dev orchestrator and then when you publish you get that same experience like in the cloud or whatever else. So Aspire Aspire is different different It
differs there it's lightweight's community driven. Did we mention that open source? It is this lightweight orchestrator and actually details wise, it's actually built on the Kubernetes pattern locally, but then when you when you deploy, when you publish, we create this intermediate format or IL if you must. This manifest. It is declarative and it kind of describes all of the resources used to build the
application locally. And then it's definitely Jason, but this is one of the big things we were trying to figure out, what do we how do you go from local development to production? Right? Do you do? You do? You take the orchestrator everywhere you go. So we said, no, that isn't what we're gonna do. We're gonna spit out this manifest that kind of describes in this declarative format all the resources and all the types. The
reatises all the caches, environment variables. And then it's up to a separate tool to glean from that manifest and turn it into concrete resources. So when you use the Azure Developer c l I you say a cd up, it actually tells ASPIRER give me your manifest and then it'll convert that manifest into BICEP, which is the you know, the as code language for azure. Yeah. Yeah, it's for ARM for as your resource man exactly, for for
ARM exactly. It's nicer ARM than ARM Jason. But it's writing ARM under the hood for you, just so you know, like there's no voodoo here. It is, but there's no matches. But if you've gotten tired of staring at Jason, like is more language y correct, I'm more tired of
staring at Yamel. Honestly. One of the big things that we were we were trying to have as a as a selling point for a spier was like, are you tired of looking at Yamo your silver Hansleman must have been involved in that because he hates it just as much as I do, honestly.
Like when you enter the cloud Nati space, one of the big things I think people just accept is like there is YAMO and can figure everywhere you are doing bits together by editing canfig files and passing in IP addresses and host and trying to figure out how things all like do this right glue together? No, get hub told me again, YAML is my number two language and I'm like, Steph, I bleue a lot of stuff together, Like that's just
reality for me. Yeah, it is. I think one of the big things Aspire will enable is building an ecosystem of packages that hide some of the YAML that the ammal isn't there is that you didn't have to type it. Yes, Rank God, that's the important part. You call rettis and you can give Intel a sense for configuring the port configuring like the uife reddis and you can build like you actually compose things, right. I think one of the big things that Polumi did, like they put that Plumi figured out which
they knew. Right. With code, you can build abstractions and packages and modules, and you can you can abstract end things by by having like one interface that does end things under covers yep, the Yamo bass can fig models
don't let you do that. You are stuck with stream replacements. You were like, how do I how do I have Let's say you want to have a base platform for your team, So my team is going to use Grafana and low key, and you name the top five CNC things, right, how do you give all of your team a template that says you guys should use this base template for all of your services. Like it's difficult, right, I wonder what the cartoon representation of Yamo would be. Let's just think
about something to do with like it's duplication. So it's something to do with duplicating stuff everywhere, maybe like Lucille ball trying to sort the strawberries as they come off, or the chocolate chocolate. Yeah. Yeah, So that was one of our big drivers, like could be and it was a big discussion
on the team, like what do we use as this file format? Do we have a solution, do we try to change the solution file because the solution is kind of like the Uber project for multiple projects, but we wanted something code based. It was like you put together your application by saying, give me an application, let me add projects to it, containers to it, executables to it. And that gives you enough of a primitive for others to kind of say, my company is going to use my platform. You
know I can do builder dot add my company's platform composition. Right, things we learned I don't know, fifty years ago from programming languages that can picktiles don't give you nonm ranting. Yeah, I know, it's so great that we're on the same team. Hey, guys, let's just take a break real quick for these very important messages and we'll be right back. And we're back. It's dot net Rocks. I'm Carl Franklin. It's my friend Richard
Campbell. He get out there with the beavers and the otters and the bears, most of the otters these days. And we're talking to David Fowler for Microsoft about dot net Aspire and how absolutely freaking cool it is and how much I love Jason, and I know, you know, it also strikes me that this might be the thing that gets you know, I developed a dot a developer that hasn't really gotten into the micro services container space yet, and said, am I ready now? Because it's pretty intimidating, you know,
I got to this project works, you want me to do? What to it? You know exactly? So I just I just wonder, coming from an existing application that just hasn't been broken down in that way at all, it's just a happy ball of mud. Great question, and then we do that. Yeah, can Aspire help me get started it? Can it? One of the big things we tempted to do was Aspire has kind of these
four main pieces like orchestration, components, telemetry. You can kind of pull in what you want want to pull in for your projects, so you can adopt at your own pace. One of the big things we learned and personally personally that I learned doing dot net Core in the first place, was people love migration when they can opt into doing it incrementally, right, Yeah,
no dead drops please. We just had a great show with with with Jimmy Bogart where he talked about migrating a framework app over the core, you know, to starting you got went to six and then up from there and just that we reverse processes things so you can just replace one piece at a time. It's always done on two platforms. And but no dead drops except that one day there's nothing left running in framework anymore except authentication. That was last
off session super heard off in session. But yeah, so that that was one of our main driving factors. Like you add the Aspire orchard to your main solution and you just get Aspire. You launched that project, it'll launch your big application, your big ball of mud, and you get the dashboard, you get telemetry like you can you can kind of ease your way into getting these benefits and features, You get container published, you get deployed to
different environments, you watch the percentage of mud go down every day. That's the whole. Right. We have big aspirations. I'll tell you. While we were doing the Aspire prototype, I was trying to project, like a couple of years out, what this could look like in the in the long run, And there were ideas floating around and just about being able to build your app as a monolith, the holy grail. Right you to build your
app. You think about app components, you think about parts of your app, and I think laser is the first incantation of seeing this from for a client framework. Yes, I mean and next jess and spelt kittting those things. Let me carve off a set of my app as a component, and then let me name it. And then I'm going to turn that universe into a deployable asset. So it doesn't matter if I start as one project or like five projects. I can isolate my code, and I can isolate my
app into different deployable units. Yes, and I feel as though Aspire is kind of inching in that direction. We started off with this very basic like I can add a project here, I can add a container here. You can imagine that being like, let me add a chunk of code, and
that chunk of code becomes its own deployable unit. Right. So I think I feel like that is the way to get people into a mode where I can build my application without feeling guilty that I did it wrong, right, and I can shift and change and refractor like as I go as I grow,
right, Because who would want to start with micro services? Like when you don't have the complexity like it, it's asking for pain before you have that desire, right, And if you can have someone be pretty active when they start off, start off, and then as they scale up, they don't have to rewrite everything from scratch, like, I think that is the holy girl we've been looking for for the last Like I don't know how many years we've been doing software right, many many many many many years. Yeah,
Yeah, it's been a while. Good stuff. It's good stuff. So we were talking about the open source finess of Aspire. So in terms of those community contributions, what are some of the areas in dot net Aspire that could benefit the most from open source development. So one of the big parts of Aspire that we knew, we knew would be once it controversial. It was a point of discussion for the team itself was components. Components are
accurated. One of the big things we were trying to learn from watching other players in the space spring boot being the Java equipment, the biggest probably the biggest well known thing in the club needs space for a spring Boot. Right. One of the things they have is this thing called spring Cloud, which is essentially a set of components that are curated. So when you are looking for something like a critis or a database driver or any client library for any
open source piece of software, they had an answer, right. And it wasn't that we didn't have an answer. It was that they showed you this list that had all the answers. So we were like, you know, maybe there's something to this list. Let's try to do a curation thing where all the aspiring components are basically this first class list that we create and third parties can build their own. But if you want to be in the curated list, you need to you have to be a verified Aspire component, so
you have to come through us, right. That was the You have to pay your eight dollars a month and get that badge. It's free. It's free, but you have to pass. You have to We don't really have a really well defined council ar review process as yet, but the intent is, like you if you were in the a Spark component list, you can be sure like the quality is high. It has these these minimum features by
default, et cetera, et cetera. Right, so it is a new GET package, but it's one where there's like more checks and there's more things in place, and there's more more things that we did to make sure it
passes some midbar of feature work. Right. Yeah. The community as soon as we went by open source, I could not believe how fast the community added more components like we had in the very beginning seql server obviously, like that's what we ship SQL server, seql server postgrass Rettis and the community just like through out a ton of amazing things. And the prs were of such high quality it was incredible. We got my cql from the from the my sql author for dot net. We got after PR, we got Cosmos.
It was just like dB so I yeah, Mango dB like and we didn't even have a document on how to write components. People just figured out how to write figure it out. But so we're even there yet. It normally, when I've worked on open source for a long time, and the maturity in the in the pull request that we got for Aspire, we're shocking, like shocking because these weren't small bug fixes. These weren't like, you know,
changing the semi colon hair are cleaning up comments. This was here's a whole new feature that works end to end, right, it blew me away. You mentioned open telemetry, Yeah, so how does that? How did I mean that? That requires some knowledge of how to use open telemetry obviously, yeah, but how does the how does that work together with Aspire? So one of the things we get to do since it was twenty twenty three
and now we're in twenty twenty four. One of the benefits of coming this lit to like these spaces are things become more stand so we don't have to invent our own protocol, we don't have to invent our own tools, we don't have to invent our own libraries. Turns out, over the last five or so years, open telemetry has been pretty much being standardized in the industry. So the benefit of that is we in Aspire, we said, how
do we get telemetry by default. One of the things we realized was if you think about the F five experience for a single project, the debugger and VS and like how amazing it is and the experience you get when you step through can see variables, what is that experience for distributed systems? Right? And James James King who did just donet. He went away for a week one week, right, and he built this trace UI in the dashboard.
And the first demo we had where we showed someone here's kind of our fate shop and here's the end to end trace, Like, people just sat there because on F five you had this default end to entrace that went through service A, service B and a database call and it was just on by default. And all the work we had been doing with open telemetry, with like our libraries, with the EF team, with all these open source partners, they had all this stuff like in the tools, it was just really hard
to see without wearing up ten different containers and diamo. And now on your default Aspire F five it's just there, right as though we turned the light on. Someone said, we did all this work and it was invisible, And now with this one dashboard view. All the work we did over the last five years is like there in your face. Is there a danger in not knowing how these things work under the hood and just running the default application
the projects and just publishing it. Absolutely so. One of the first Reddit threads on the Aspire stuff when it first came out, you can see the the tug of war developers had where this is amazing. It made me so productive, where some other people are like, oh, you know, this is an astraction layer. I need to know what's happening. I think it's kind of like like like anything else, developers will have to know certain things, and I think part of my job and our job as designers of a
framework is to hide stuff but don't make it obscure. Right. So one of the things we do is when you create an Aspire project. The reason open telemetry works is because there's coding your app that says at open telemetry like, it's there. We didn't hide it from you. It's not magic, it's right there. Configure with the comment and it says add the the OTLP exporter, which just says if you have an environment variable to call this thing
like it's passed in from the Aspire host and it works. What I've learned over the years is if developers can draw lines from coll to how things work in their brain, then it becomes less magic and more Oh, I get how that works. I get how this this goes there, how that gets sent here, et cetera, et cetera. It might be helpful to have an AI that could explain things when you don't understand what's going on. If only we had that. Yeah, if only there was an AI that way,
that would be strange. That's not a real thing. You guys are crazy, but you know, like, Okay, I get how to do it and it works, But what's going on here? Why does it work? Right? I love that. I love that. Right now, I think we're at the phase of what's funny is that discussion? This discussion would have been super strange if we had it like four years ago. Yeah, yeah, it would have been It would have been a joke, right, It would have been like, it's sort of like, what problem we try
to solve here? Like, what are you talking about? I know we're here in twenty twenty four saying that statement, and it is reasonable, it's right. Yeah, I could to the AI like describing how works under the cover. Is how how like when you create a container and a process held in neworking works between them, et cetera. Yeah, yeah, look at my app and draw me a app. Right, that's not crazy, No, it's not crazy. Yeah, we are. We are interesting towards that.
It's an ability to see these pieces. But the other I mean, part of what you're doing here is you're creating better delineations between pieces of functionality, right, yeah, That's always been the problem is it was very it's very hard to tell what is one piece live and another piece live? And how do they talk to each other? Like that whole manifest part has never been well described. You really have to read it and dig at it and
then watch it running like it takes a while to have confidence. This is what this actually means. I've been programming I believe it or not, a Windows Forms app in the last month for a client. Oh man, it's all like scientific technical analysis kind of stuff. And this this guy who hired me is a knows VB, knows how to read VB, but he didn't understand link and so I had some link statements in there that were pretty complex,
and he's like, what the heck is that? And so I just took the link statement pasted into GPT and says, hey, can you explode this into four loops for me and comment it? And it did and I was like, here, this is what it's doing. And I tried it, you know, and it get me the same result. And so I just left it in the code as commented rights as a way for somebody who doesn't understand how to read link statements. That's great idea. It's very very
cool, very powerful stuff. Or here's another thing that you can do the other way. You have this convoluted for loop that somebody's written and you say, hey, can you optimize this code for me? And it will? Will it write a link statement? I will tell you, it'll write link statements, it'll use parallel computing, like you know, it's pretty freaking amazing. This is a space that there is active interests on our team looking at like how do we take advantage of the AI to do this kind of stuff?
Yeah, because it really does begin to feel like the things that you wanted to do before in your brand, you know, possible, Like what if we could have Stephen Toby in a box? Right? Yeah? What if I could just have him on my shoulder when I'm coating, like the toll model, and there's a more optimal way to do that. You know, let me just optimize that for you. Start with the system prompt. You are, Stephen Taub, How would you do this exactly? That's what
you want? Yeah, yeah, But we digress a little bit. This is a conversation we had with Mad's Targeted back in the day where I said, like, okay, you're twelve versions of C sharp in like what and pretty much the code I wrote in C sharp three still runs just fine, So why would I use the new features? He says, You know, we're really going to have to focus on the tooling to help drive you towards
the new language constructs. So it is that how do you hint? How do you present a given chunk of code that runs It's say, you know, there's a terser way or cleaner way or faster way to do that. Yeah, yeah, it's tricky. Like languages, the changes have I think personally have been quite amazing, and I love the I love hew C sharp mixed things that were arduous and like more verbose, less verbose, and like succinct. I've seen a lot of teeth gnashing about being able to do things
in a very similar way with different syntax. The way I see it as the syntax gets cleaner over time, Right, I can do things more more expressively and easier. But it can be seen also as like you've added more ways to do the same thing, Right. I really think that's the thing. We we see as like an even split. Like I'll paste something on Twitter and on X and people will be like, what is this new syntax? I don't understand it, and I'm like, this is super nice to
have. I love the simplification. Simplication. Yeah, that's how I think we see it, like implicit usings. We simplify the syntax. Yeah, yeah, yeah, we' usings yeah, collection expressions. Yeah, it's beautiful, beautiful. So I want to get back to something that Richard brought up before the break, which was taking an existing dot net application and what did you say, aspiifying it as asper. So what challenges do you foresee in
adopting dot aspire in existing projects and how can you address them? How can we address them? So the big the biggest broad block thus far has been the fact that the Aspire Aspire has been targeting and up So when we started off, we were like, let's just say it, and immediately you know, people use the product and they want to use it because I think once you figure out how easy it is to use and how how you can opt into different parts of it incrementally, then I think people begin to say,
Okay, this isn't such a big hammer. I don't have to change all my stuff. I can add it to all of my stuff, Like, I'm not not worried, right, we will have to see what ends up happening there. I think that's one of the big blockers today, Like you have to be undone at it for it to work, right. So it's really great applications, but for or or if you're going to upgrade to eight, then you'll have Aspire support in your in your apps, right. But
most people are still on earlier versions of dot net let's face it. Yeah, but but you know, if they're on five, then they're unsupported. If they're on six, they're supported, right, But I mean, I know people are spread across the spectrum. We we see like that feedback sometimes. So if you still have a startup dot cs in your project, you you might be a red neck. Oh my god, do you want to
crazy a crazy thing? So when we shipped dot net one core one zero, right, we had gotten rid of the product Jason, my beloved product Jason that we killed. And there was a team inside Microsoft who had deployed an app on DNX and the engineer that had deployed it left and this engineer, the engineer that had that took over pay me. I was like, can you please get some support. I don't know how to move this thing. I don't know what to do with it. We built a tool to
help migrate. So like that's what he did over time, but like something broke and then he was like I can't find the dots anymore because the dots are now for like the cs fraud and the Jason follow is like gone. And it was yeah, those were tough times, yeah right, crazy? Where was being AI? Yeah? Huh huh. Let's talk about the roadmap for dot net Aspire in any coming features or integrations that you think are particularly
exciting. Yesterday, so let's say we came back from vacation. We shipp preview to just before the breaking for for winter, for before we all left for holidays. What's funny about that one. We a set of us went on vacation and we were trying to ship like days before going on break. This is about it. They do not ship software days before you to break. You're going to wrack your holiday, like you're just asking for it.
So it took us a couple more days to get it out. So some of us were like every night I was watching the chats trying to see if we were like any closer we got out the door. Preview two is what I thought Preview one should have been. How do we had more time? Preview two is like, yeah, I can try it now. And we took all of the top feedback and we addressed a bunch of issues. So people were asking, how would I orchestra and application where I have multiple repositories
right that have my source code? What do I do right? And their options that are like I can clone them all locally and orchestra and orchestrate that way, I can put it in a container. So we basically give you the options now to do all the things. You can reference projects not in your solution. You can reference containers, you can reference the process and they all work the same way. That that was one of the big things we had to solve because everyone saw it and thought, do I have to put
everything in one solution? And then to fight that, we have to have enough features so you can experiment with how you liilt your source code, how you lailt your projects, et cetera. Right, Yeah, I imagine you see a lot of variations on that, like more than any given person. Yeah, just because you guys have such a broad view of the different ways that the studio gets used, correct and people. The hardest part. If you look at the Aspire docs, it says that the stack is opinionated.
H The team struggles, like we struggle with having strong opinions because we are built in to be framework designers and we basically build pluggable systems. Yeah right, Yeah, So you have this dynamic between being inclusive. Lots of people can use this the way they want to and opinionate it, so it's not trying to be everything everything exactly, and so it's really nothing exactly. You got it. Another way to say opinionated is convention over configuration, which last
time I looked, was a really good idea. It is I think some of the Aspire things we said no to early on may come back in the future and people may ask for things like there's a lot of there's a lot of requests and I shouldn't be surprised there are a lot of requests to run the orchestrator like locally on prem like on prem. People want to replace their local on prem deployments with I and I guess I'll win now service with Aspire.
And we had no intention, like zero intention of having this thing live past development, right, So that is N five locally, it's not it's not run time exactly. You five locally and you can debug and see the dashboard. But then when you publish, you're targeting something. You you target kubrunettes, you target Azure, you target Amazon's cloud like you you run locally
and you target a cloud environment to a space. There's a lot of feedback from people, and I think the feeling is you can help me make might out more modern if you give me a way to kind of like take the ASPA experience, put it onto my local on prem environment, and then I can go to the cloud. So that's an interesting like thing that I think came up that we didn't foresee, Like I did not think that was gonna be a thing. Do you want to go down the run time of path
because man adds a lot of weight. Yeah, just to use Kaberunetes. Honestly, it might just be if you're on a local machine and you want orchestration Kubernetes, and yeah, exactly, you guys don't want to put exactly exactly you got it. We already had too many as it is, right, and and Kubernetes now has that that natural monopoly weight that the ecosystems growing around it. It has Helm and all these other tools right that make our
lives everywhere. Yeah, and everything runs it. So your every nautical metaphor you can possibly think the same. The same way you made us write less Yamo, you can make us can figure less Kubernetes exactly. So that's what we're gonna do. So we have this. So on the road map is we're targeting Azure container Apps in the addera space for for V one that people
ask for app service, people ask for Azure Kubernetes service. Akash aka s was was on the map, It might still be on the map, but Agri Container Apps is the primary like scenario or for B one, now we have community one of our community members. Remember I mentioned mentioned high quality contributions. This contributor built a manifest Kubernetes experience. Incredible. Wow, it's called it's called Aspirate, like not, I mean the name is desperate. Yeah,
and I have an in the name, so it's Aspire eight. That's all very close to Respirate, which is it's still breathing. It's still breathing. It is very close to respiate. But it's super cool. I can take my Aspire app and say, like, give me a Kubernetes and it spits out all of the stuff and it's all a lot of stuff, all the manifests, all the yamo, all the it does all the things.
How about g r p C g RPC web speaking of James King, Oh yeah, so there's there's first class support for g r p c's service Discovery and Aspire. One of the things we aim to not do is recreate anything that we already have. So say it's been at Core, it's g RPC, and we weave our way into those subsystems via how they're extended. Yeah, that's great. It really like it really should feel like I have my app. I added Aspire and I tweak like two pieces of code, and
it's not cold that you wouldn't have done yourself. It's just we did it for you, right, And it's the plumbing you would have done. You would have done this code yourself, you would have called at open telemetry and add these five things. We're just making it available to call like as a as a baseline. Yeah, awesome, very cool. So personally, what's new, What's what's coming up for you? What's in your inbox? What's next? Good question. I've definitely been looking at the AI space a lot.
You could imagine inside Microsoft, there's a lot of interest in overall, a lot of interest, and I've been avoiding AI personally for a very long time, but just you know, you know it exists. Yeah, you know there's people doing learning and that stuff, but you you kind of like wait until the way I get involved in stuff is I kind of like keep it on the back burner and I wait for signal to like kind of exceed
some threshold. Yeah. Yeah, And it is past that point now where I have to know enough about the space to have conversations to understand how I can integrate with what we're doing. So for me, for me personally, I've been getting involved in just understanding more the space so I can kind of understand how it affects the next ten years of dot net, Like do we have to be a big player in this space? Is it the Python will win it? Ready? Like just those those basic things I've been thinking about.
Just yeah, but definitely shipping aspires is top top top of top of my list, right yeah, yah, yeah yeah. It doesn't not sound like a spire is going to leave your life anytime soon. Yeah, right sure, no, no, and that definitely not. The list of next is huge, That's correct. Your burn list runfo and you wouldn't you wouldn't
believe. Like historically, when you build a new thing sometimes I mean this is well known, like people wait until Virgin three to try it out, like the version version one is not good, And internally it's really hard to get teams and to adopt things sometimes because you know, they want things that are tried and true and done, and only if they already have affordances for
it will they like take a dependency on it. HM. Like we're seeing people want to want to use a spire, like they see the benefit of it and they want to get toe lemetry and they want to get these things. So we're going to spend some time also trying to figure out what Aspire looks like for inside of my inside of the company sure, and hopefully bring
some of those learnings like back out. Yeah, that reminds me of a line from when I one time drinking with Jeff Snover where he said, you know, when I created PowerShell, they may be a distinguished engineer, but when I got the whole company to use it, they made me a technical fellow. That's pretty awesome. That's great, that's what I have to do. I got it. Well, David, it's been a delight talking to you for the last hour, and it's always great talking to you. And
Aspire is amazing. What can I say? And I hope everybody will dive in, check out the documentation and get started write something awesome. Thanks again, all right, and we'll see you next time on dot net rocks. Dot net Rocks is brought to you by Franklin's Net and produced by Pop Studios, a full service audio, video and post production facility located physically New London, Connecticut, and of course in the cloud online at pwop dot com.
Visit our website at d O T N E t R O c k S dot com for RSS feeds, downloads, mobile apps, comments, and access to the full archives going back to show number one, recorded in September two thousand and two. And make sure you check out our sponsors. They keep us in business. Now, go write some code, See you next time. You got jamdavans and
