The Modern .NET Show

Episode 94 - Open .NET with Geoffrey Huntley

Sponsors

Support for this episode of The Modern .NET Show comes from the following sponsors. Please take a moment to learn more about their products and services:

Please also see the full sponsor message(s) in the episode transcription for more details of their products and services, and offers exclusive to listeners of The Modern .NET Show.

Thank you to the sponsors for supporting the show.

Embedded Player

Episode 94 - Open .NET with Geoffrey Huntley
The .NET Core Podcast

Episode 94 - Open .NET with Geoffrey Huntley

Supporting The Show

If this episode was interesting or useful to you, please consider supporting the show with one of the above options.

Episode Transcription

Hello everyone and welcome to THE .NET Core Podcast. An award-winning podcast where we reach into the core of the .NET technology stack and, with the help of the .NET community, present you with the information that you need in order to grok the many moving parts of one of the biggest cross-platform, multi-application frameworks on the planet.

I am your host, Jamie “GaProgMan” Taylor. In this episode, I talked with Geoffrey Huntley about how the Open .NET project could help lead to greater, and faster innovation within the .NET community via community ownership - something other languages and frameworks have adopted.

Along the way we discuss some of the controversy surrounding some of the key decisions in the .NET space from 2021. We chose to discuss these topics in a positive manner, attempting to bring them to light and allowing for a constructive discourse on how any future issues could be avoided. I ask that you take our discussion in the spirit in which it is intended: one of support and constructive feedback.

So let’s sit back, open up a terminal, type in dotnet new podcast and let the show begin.

The following is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Jamie

Thank you ever so much for being on the show, I really appreciate it. We’re in completely different time zones on the opposite ends of the world. I’m in the UK, and you’re somewhere in deepest Australia. So I appreciate that. You’ve had to sort of juggle your day around to fit me in. So I do apologize for that. But I also thank you ever so much.

Geoff

No problem, Jamie, thanks for having me on, there’s so much we need to talk about, like, there’s been a whole bunch of events that’s happened in the .NET space. And I hope to like kind of bring people up to speed of some of the things that have happened. So people can understand why the community has been upset. People will say it’s just drama. Well, that’s one way to dismiss how people validly feeling about something they love.

Jamie

Sure, yeah, we’ll, we’ll definitely have to discuss that. Because it’s quite important. I feel like, it’s good to be able to criticize something that you enjoy, or like or have positive feelings for, because then you can sort of see it from both sides. Or you can say, hey, you know, for instance, I’m very keen on video games. I’m very happy to say I love this video game. But it’s got some problems, you know, and I feel like having that discussion is it’s a nice balanced discussion. And like you say, there’s some very important things that are happened when this episode goes out last year, because we’re putting this out in 2022. Right at the beginning, so a new year new start, let’s talk about these things. But before we can get to those, would you mind giving the listeners a really quite brief introduction to yourself a little bit of sort of color information about yourself, so we know who you are, and that kind of thing?

Geoff

Sure. I’m Jeff used to be a Microsoft MVP. Then I put my MVP award in the literal Shredder, I actually put it in the shredder, the thing is about, like an open platform open source programming language, why do you need a close boys club? Like and why does the why do we even have this close boys club anyway, the program started turning into Can you please help us advocate for Azure. And it degraded into here is all the content that we publish this week in Azure, maybe you might use it for your YouTube syndication. And we start seeing these incoming generations of people in the community. And when you look at some of their contributions, it’s, well, they got a large amount of people on YouTube, they got a large amount of people on Twitter. Now there are a lot of people in the MPP program who are amazing, freaking amazing. So just because I don’t find value in the program doesn’t mean it’s not valuable to you. Right, don’t don’t take this as a personal thing, right. So just didn’t like the shape the program, so I quit. So before the MVP program, I was open source maintainer for quite a few projects in the .NET ecosystem. These days, I don’t write .NET at all, I still love .NET. And I’ve left the .NET ecosystem. So this is another thing. So one of the things that happened in the .NET space recently, we actually had someone resign from the .NET Foundation. And they cited diversity of thought is the reason they left. They cited that specifically they were looking for an inclusive board of directors, which sounds great. But the the person who resigned actually cited that, well, we just got all Microsoft fanboys here, we’ve got people who are in the MVP program, or people who want to work at Microsoft. So that person quit from from a diversity of four point of view, about myself, yeah, open source maintainer for quite a long time in the .NET space, made a lot of friends along the way. And I generally mean that. And these days, I don’t do .NET much anymore. But at the same time, that puts me in a unique position where I see all the different programming languages out there outside the .NET ecosystem and see where they’re excelling. And I see where .NET is not excelling.

Jamie

Sure, I can understand that. And it’s always important to have a look around at the other. Imagine that we’re doing physical manufacturing, or do physical engineering, the old phrase of all you have is a hammer, everything looks like a nail, right? And so if the only tool in your toolbox is .NET, you’re going to approach things in a .NET way, in the same way, that if all of the tools you have are Python, you can approach it our Python way, right? Or JavaScript or rust or go or whatever, right. And so it’s my personal opinion is quite important to every so often just look around, see what’s happening, right? Personally, I’m learning a little goal in my in my own spare time, just because I’m like, Hey, what’s this goal language all about? Let’s give it a try, right? Because otherwise, like you say, I’ll always attack the same problems in the same way. And it may be that I’m trying to solve a problem in a way that isn’t, I guess, relevant, you know? So for instance, if I’m in C# in .NET. And I attack a problem that requires functional programming, where maybe F sharp or Haskell or you know, any of the other functional languages, they may be more relevant. And so it’s better to even if all you know is the name and the paradigm he uses, because then you can Google that stuff, right? You just got to Google Haskell functional programming, boom, you got 1000s of tutorials, F sharp, functional programming, boom, you got 1000s of tutorials, I’m trying to sort of balance the .NET technologies versus the non .NET technologies there, if that makes sense.

Geoff

Yeah, it does. Well, you completely right. Look around. I don’t know what it’s like for yourself. Like we go back two years ago when I was in Australia, and I was looking around to all the .NET meetups right. There were no one, like very rare to see anyone under 30. There. Right. And like, even see a woman there at a .NET meetup here in Australia doesn’t exist, right. But if you go to any of the meetups outside of the .NET space, they’re getting all the new brains. Right. So what do you see at your meetups, like so you look around, right? And you see problems. And these problems may not necessarily be tooling. It could be mindset of mindshare people aren’t coming into the ecosystem. What happens if people don’t come into the ecosystem?

Jamie

Yeah, exactly. Right, it starts to sort of get stale, I guess. I feel like perhaps JavaScript had this throughout the late 90s into the early 2000s. And then all these new thought processes came along. And now we’ve got Node, we’ve got NPM. We’ve got, you know, express, we’ve got react, we’ve got Angular, whether you think those are good things or bad things. That’s a whole shedload of innovation right there. Right?

Geoff

Yeah, it’s it’s a whole new generation of people looking at things in a different way. Right, rather than a singular way. And this is the way we do it, though. We’ve got lots of young, brilliant minds, in looking at how things are done differently. Now, there are a lot of problems in some of those ecosystems that you mentioned. Like they have a library for, like if something is it to do a quality check if something is no, that’s a library in that ecosystem, they don’t have a good standard library. But you look at what they’re what they’re doing. Like, if you’re a junior software developer right now, and you want a guaranteed job that’s remote, you learn JavaScript, guaranteed, you’re going to get a remote job. If you want a remote job and your .NET developer, is that even possible, they do exist, but a lot of my governments, right, a lot of my government so that there are problems with demographics here.

Jamie

Sure. And there is a slightly spiky, hairy topic that I’m going to try and vary around. But it’s something you brought up in, you know, most a my experience. Now this is going to be different for everyone else. In my experience, the majority of .NET devs are male, right? That is, in my in my opinion, a bad thing we need as many different mindsets in as possible. And how we do that? I don’t know. But maybe we should be looking to other languages and frameworks and figuring out how they’re doing it. If they are doing it, and maybe adopting those ideas. I’m not sure like I say that’s a bit of a spiky hairy topic. I’m a bit worried about the the actual topic if I’m completely honest, just because I don’t want to exclude anyone.

Geoff

Yeah. So look at the rust community and how they run their community. They’ve got some very good ideas. So if you’re doing a programming language or ecosystem right now, look at Ross today or the Northstar everyone’s looking at currently.

Jamie

Okay, have you any examples about what they’re doing? That is so fantastic that they’re doing or? Or is it just a, it’s an exercise and listen, I gotta check out rust.

Geoff

It’s an exercise to listen, I go look at rust and look at? Well, this is one of the reasons we’re here to chat is right now .NET is produced by a single entity. And that singular entity that shapes how the community thinks, and currently will listen to my observations, I think that the community seems very helpless. If Microsoft makes a decision, all they can do is like, complain, they’re not empowered to make changes, right. And if you look at that, though, from those type of dynamics of like collective ownership, there is no collective ownership for this programming language that everyone uses in the .NET space. But if you look at rust, for example, there is very much this feeling of collective ownership. They they any they can make any changes. They like there is a process but here in the .NET space, that is not true. So Microsoft has gone through a fantastic transformation. You can jump on YouTube, and you can watch the API reviews and that’s lovely. I’ve done one in person and that was mind blowing like massive respect for the team that was engineers there. It’s a hard problem. But at the same time, it’s not collective ownership.

Jamie

I feel though Just to try and take the, to use an example of a different programming language, you could perhaps go the other way and have, instead of having, you know, the one entity sort of describing the journey that language and tooling takes, you could go completely 180 degrees the other way, and end up with PHP, right? Where there’s almost no ownership. I feel right. Because I’ve looked into some things like, there are commands in that that are in different human languages. So there APL is there are some API’s are in English or more in French, some are in Romanized. Hebrew, and there’s nothing wrong with that at all. It’s just like, well, as someone who doesn’t speak French, or Hebrew, or German or Portuguese, that represents a barrier to me, right? Maybe it’s a good thing to go 108 degrees the other way and have almost no ownership and anyone can do anything and no oversight. Or maybe it’s, you know, where’s the balance? It’s a difficult balance, right?

Geoff

Yeah. So we’ve got a pretty good standard library like we’ve we’ve just seen Mano reintegrate in with .NET, we’ve got NET Standard has disappeared. Like we actually now have a stable BCL, we got rid of the PCL drama, and that would piss anyone who did my multi platform development during the PCL era. That was hell. So like, we actually now got a stable base library, that is lovely. But it’s not really about base libraries, the things has happened in the community in the last last month or so had nothing to do with the VCL, or the design of the of the actual API’s. So to recap, some of the things that happened was, like the cat came out of the bag .NET exists as a way to sell tooling. Right? What happened was, we had a feature that was added into the programming language to the SDKs. And that’s the correct place to add this feature, by the way, because if you add that feature in at the programming language level, at the SDK level, and you’ve got a good shared primitive, that all the products that use the programming language can integrate with, like, a good solid baseline and foundation where people can build upon is really important. So what happened was, as we’re talking about the hot reload, what happened was there was a decision came down to remove this feature from the programming language. So instead of actually having a shared foundation that all editors, and I’m talking about Visual Studio code here, and Visual Studio for Windows, and I’m talking about, like anything, I didn’t matter instead of having that cool, shared primitive that was ripped out. So and put it only into Visual Studio for Windows, which hinders vs. Code, by the way, because the share primitive is removed. And that upset a lot of people not just in the community, but actual people within Microsoft themselves and actually created a large division to the point where internal engineers at Microsoft started leaking emails to the press.

Jamie

Yeah, I am. So having seen the Twitter conversations that were going on at the time, I saw, you know, the big names that everybody knows, saying, you know, we’re sorry, we’re working on this, we’re trying to figure it out. And not our decision. We’re trying we’re doing what we can, and whether that was them trying to do damage control for themselves, or whether that was them trying to say, hey, you know, we genuinely have no coal in this decision? I don’t know. But I did see that. And I think that a lot of people I talked to sort of dismissed it. They were like, Yeah, well, of course, but then, you know, I pointed out that, for instance, the the feature we’re talking about is .NET. Watch, right, which is you can from the command line, say, watch the entire repository, that’s the entire source tree we’re looking at, and perform an action when something changes. So you can run .NET watch and say, rebuild everything or rerun everything. Whenever we’re wherever we’re running. And you make a change to one of the files, and then the whole thing will rebuild. But then they added the the improved on that upgraded this thing called Hot reload, which meant that you could change a source file, and instead of rebooting the application that was running, he would rebuild it and do some really cool. I totally do not understand how they do it. But some like injection stuff. So you don’t have to reboot the application. It just continues to run, but with the new code, and that’s fantastic. And people were saying, Oh, but but it makes sense. And they would take it out. I’m like no, it doesn’t because you can actually see the git commit where they commented the code out, you know,

Geoff

that there is the problem that they’re right there is the cat out of the bag. If you go to other programming languages. other ecosystems like .NET watch or .NET, hot reload equivalent exist in that ecosystem. And if they come around to the .NET ecosystem, because they just want to try it out and that primitive doesn’t exist, how are they going to react? And then like, what happens? Is that people, the community, oh, yeah, we had it, but we removed it. But you have to install Windows to get this feature. And you have to install Visual Studio suspicious, like, I use Visual Studio code on a Chromebook. No, it’s not this, I’m going back to go like, this is just a silly, but even to defend the decision, right, even to the defenders decision, because essentially, what’s happened is, we’ve got an open programming language that’s openly developed, and Microsoft doing a stellar good job with that, by the way, really good job. And these bits, was certified with a go live license. And it wasn’t just a go live license, this was the LTS go live, meaning it’s going to be supported for, I don’t know how many like four or five years, right. And this was removed a couple days before it shipped, like, just removed, and like it wasn’t how it was removed was they were a pull request was raised, the features removed, it was self merged, and then the conversation was locked. That’s not right. For an open platform, right? We had this these features that are going to be really cool to allow all the editors in the world, emacs VM VS code, Visual Studio for Windows and Mac to build upon, and it gets ripped out because they want to put it as a feature to be sold, there is the key problem in the .NET. Space is .NET exists to sell Visual Studio licenses,

Jamie

as oppose a corollary might be somebody adds a new feature to the Linux kernel. And then, you know, just before patch day, Linus Torvalds, comes along and goes, No, we don’t want that.

Geoff

We don’t want that because I’ve formed a proprietary company, and I’m going to sell that feature. I don’t see how healthy open community can be even stomach that that that was a good idea. And the best thing for a programming language. And it happened. So there was a large community uproar, I stirred some crap there as well. But we managed to get Microsoft to turn back on it. And there are less this blog post saying, Oh, it was mistake, it was an accident. The entire community had seen like, all these different well, we’ll link it in the show notes. There’s a good summary of it. But we’re seeing all these key people in the Microsoft space, all the engineers, and they’re all posting emojis of crying, like crying cat emojis and stuff. Like you can see the internal conflict right there on Twitter, and it happened. And then this blog post came out saying he was an accident. Like, if you’ve read that blog post, it’s so clear that Scott Hunter is being a full person for the situation. And the decision came down. The Verge reported by leaked emails from Max employees to The Verge saying this person said rip it out. Because we need to sell Visual Studio licenses.

Jamie

That’s when you realize that the story relating to a programming language that is maybe you know, the maintainers and the designers and everybody contributing towards it becomes almost mainstream when site like The Verge is reporting on it. Right. I saw it on the register. But then the register reports about oh, you know, there’s this problem with no, no, this things happening in Go. So I didn’t really see that as a yardstick myself off, oh, my goodness has gone mainstream. But when the verge picked it up, I was like, Whoa, this is this is legitimately rather large. It’s, you might say, is a huge story. You know,

Geoff

people from the outside, they’ve been seeing things boil up about the third or fourth thing that’s happened in the community. They might say, Oh, this is a huge overreaction. But they haven’t actually seen that. There’s been the few things that came before that. So we had the .NET foundation took ownership of open source projects, and without permission without consent, and moved where those open source projects existed on GitHub. So instead of being part of a GitHub organization, they will move into a enterprise GitHub organization. Now, the reasoning behind that makes sense. Like it makes sense. The reason they moved in there was for succession and getting free access to Code Spaces and all that, like, it makes that make sense. The problem was a lack of consent. People that open source projects, and some of these are actually businesses, there’s businesses who joined their IP into the foundation that was moved without consent. And that blew up onto the register, because there was no consent. Now, if we go back before that a couple of weeks beforehand, we opened up the show, and we’re talking about a person who left the .NET foundation. This is a person, a person of color, who left the .NET foundation and including said, they just want people who are all races, genders and authenticity. But everyone is like, rah, rah, rah, Microsoft is awesome. And this person joined the foundation for one reason to advocate for the open source maintainers, not to advocate for Microsoft and Microsoft use cases. And if we go back a little bit further, a little bit further, you might remember the .NET maturity ladder. So the .NET maturity ladder was a set of rules, which were like kind of like a way of graduating a project, it was basically pushing these rules down to say, to make your open source project more consumable by a built billion dollar company, this is what you need to do. So it was pushing this governance down on these unpaid maintainers, to make it easier for the software to be consumed. Meanwhile, these open source maintainers have joined the .NET Foundation, because they want support from the foundation and the foundation is now pushing down this government saying you need to change how you how your way of work does. So it’s easy for people to consume. And maintain is like people already consuming us left right Senate. That’s the problem, we need support, and the foundation wasn’t providing support. So all these things have been bubbling. So if you haven’t been following the entire chain, it might seem like drama.

Jamie

Yeah, I’ll make a point of putting links to the stories in the show notes. Because I think it’s rather important for .NET devs, to know about, regardless of whether they are in the .NET Foundation, or whether they’re open source developers or not, because it’s kind of important to know about the things that are happening with the tooling, right? And I’m not trying to be critical of Microsoft. And I’m also not trying to be supportive of Microsoft, I’m trying to take the middle ground in this conversation, just to say like, okay, let’s, let’s just get these news items out there in the open for people to know about because, and because I’m not like I say I’m not trying to form an opinion of them. I’m just trying to say, hey, maybe y’all should have a look at these things.

Geoff

Well, thank you, it’s good to have a moderating voice. I don’t do .NET anymore, I should be looking at other things. But at the same time I in the other things, I log back into .NET. And I see wow, there’s some stuff that needs changing here, really, really needs changing here. Now. I don’t speak for the entire community. And the the maintainers in that community aren’t the community .NET is a huge space like massive I would like if you ever get the chance to sit down with .NET product manager and poke him in the ribs and say, I’m not going to tell I’m not going to but can you how many WinForms applications are created every day. And you see it in their eyes, like WinForms is still one of their biggest use cases of .NET. Right? .NET is huge. But why this matters is the people in the .NET Foundation are the open source maintainers that those WinForm developers consume. Without them, there is no open source community without no open source community, then there is no compelling reason to use .NET. Because the reason businesses now use open source is because they can get stuff done faster. So you can go to types that TypeScript and you can go to NPM. And you want to integrate with some third party SaaS offering. You bet your bottom dollar, you don’t even have to think about it that SDK exists. Can you say the same, we handle heart guarantee that you will that confidence exists in .NET? Or are you still building that .NET SDK for .NET. And that’s why it’s really important to care for the open source community and those maintainers that’s why they matter because they’re the growth of the platform.

Jamie

Absolutely. As an example, I don’t think the DevOps revolution would have happened. We’re not for the open source tooling around DevOps things, you know, the, the creation of the Yamma language, the the gluing together of different tools to build and release and things like that. Git, and GitHub slash git lab slash all of the other implementations of a distributed version control system using Git and SVN. Were had these things not existed. DevOps wouldn’t have happened, right? And so, like you say, all businesses rely on open source at some point in the stack, just because it’s so much faster to you know, to rather than building something from scratch that went pull from a Git source and do the build, you can rely on the fact that Git has a web hook that will raise an API request when certain actions happen, which is how the majority of these DevOps systems work, right?

Geoff

Yeah, so here’s a scenario. Company A is using TypeScript. And all their packages exist on NPM. They can just glue together libraries, and then ship the business value, company B’s and .NET. The SDK doesn’t exist. And your engineers need to build that SDK. Company is winning. Yep. So there’s ecosystem things that need resolving. So when people fawn over Microsoft, and we don’t critically say, these are their problems, and we need to work on our problems and work to a point of collective ownership, then we’ve got problems.

Jamie

Yeah, and I think it’s important to be able to criticize something that you enjoy using you enjoy doing or whatever, something that you love. I can’t remember whether I said it earlier in the recording or offline when we were chatting just before, but I’m a keen video game player. And I feel like it’s very important to say, Hey, I love this movie. But my goodness does have problems, or, Hey, I love this book. But there are definitely some problems with it. And here are my problems that I have with it. Were then being able to take that and say, Let’s try and create a constructive criticism, right? Not just to criticize and say, Oh, it’s a load of nonsense, and there’s no good, you know, waving the banner and saying .NET is no good, isn’t going to help anyone in the same way, the waving a banner and saying go, or rust, or TypeScript is no good doesn’t help anyone, right? The long standing joke of making fun of NPM because x, y or Zed, right? Doesn’t help. At that point, it becomes background noise, you know, people who say, Oh, JavaScript, bla, bla, bla, bla, bla, I’m like, guess what your competitors are using that technology. And like you said, there, Jeff, they winning, they already have a product on the market. It may be a little bit janky in places, but guess what, they have a product, people are using it and people are paying for it. You know, the end of the day, your boss, your client, your customer, whoever doesn’t care how it was built, just the the has been built yet. If I use a car analogy, I don’t care how the gas gets injected into the engine, and then an explosion happens which drives a piston which then is turned into circular, my dad, none of that matters. What matters is when I press on the gas bill, and if I’m in gear and I don’t have the handbrake on, the Go moves in the direction that I want it to move in. Yeah, it doesn’t matter about whether it’s built with an electric engine, or a gas using engine or some other engine that uses hydrogen or whatever. I push on the gas pedal, I go forward, that’s what I care about.


Narrator

Grab some popcorn and find your seats. Monster of the Week actual play podcast “$2 Creature Feature” returns for season two on February 22. This season will see a whole new crew of hunters confronting the mysteries at the heart of the town of Jupiter Hollow.

Megan Murphy

I’m Megan Murphy. I’m playing Zelda Wardwell, the flake. “Oh wait, I’m supposed to protect people, too.”

Nye Elder

I’m Nye Elder playing Eric Ashran, The Crooked. “let’s just say I don’t ask questions that involve textbooks. I asked questions that involve cash.”

Laura Macmillan

I’m Laura Macmillan and I’m playing Tammy Jo Marple. “I’m your hometown Homefinder. I’m here to make deals with the good people of Jupiter hollow but I already made a deal of my own. Tammy Jo is the monstrous.”

Mr. Ray

And I’m Mr. Ray. I play everything that tries to kill these people. And if you enjoyed our first season, you ain’t seen nothing yet. New episodes every other Tuesday wherever podcasts are found.

Let’s all go to the lobby. Let’s all go to the lobby. Let’s all go to the lobby, and get ourselves some snacks.


Geoff

So I don’t want to spend all this time pointing out problems. Sure. I have some have some ideas on how the community but it really depends on the community itself, if they’re okay with the status quo, or they themselves want to see if they feel this this way. So I’ll give you an is another example of a problem. .NET exists to sell Visual Studio tooling it has for a longest time, right? What year is this? It’s 20. It’s what 2021 20 This is going to air in 2022. Isn’t there a thing called Azure? Right? Why are we still focusing on selling licenses for Visual Studio and shaping a programming language for license and Visual Studio when there’s Azure? Isn’t that like Steve Balmer style old world thinking? Like, we got to like compete against all the tooling vendors. But it isn’t meant to be all about Azure now. So if it’s all about Azure now, why are they ripping out features from the programming language just because JetBrains might use it? What? Okay, so Microsoft made Visual Studio Code. Why is it that rust and go Lang has better support in Visual Studio code? Then C#? What Microsoft made VS code Why is C# support in VS code worse than rust and go Lang? What’s going on there? I would suspect that as a symptom of .NET being a thing used to solve Visual Studio for Windows licenses. If that dynamic didn’t exist, we wouldn’t have this weird dynamic where rust works better on a Microsoft product. Then .NET now I should be clear there I said .NET the F sharp community is doing a banging job. I and I had those team there. They’re awesome. If you want to awesome experience of F sharp. Go get ionized and VS code. It’s one of the best experience But when it comes to C#, and C# is not .NET don’t make that mistake. Trust me just started travel what you need to be questioning why VS code has some of the worst support for .NET? Out there? Why? Because like someone who’s coming across from roster go like they’re using VS code and their day to day and then they load up C# in VS code, like, what the heck’s going on here?

Jamie

Yeah, I have to say, I help out with some students at a local college. And I do know that even though they have the MSDN, double A licenses, most of them are using Visual Studio code, right. So maybe that’s maybe that’s a symptom of what’s happening when they’re like, well, I could use the MSDN, double A license Have you been given, but Let’s call a spade a spade, Visual Studio Code opens way faster. And if I have 45 minutes to get my work done, I’m going to use the tool that starts faster. And maybe that is because Visual Studio is, I don’t want to use the word bloated. But it’s like, Visual Studio is the Swiss Army knife of IDs, it has so much stuff. And 90% of the time using a text editor, IntelliSense and f5.

Geoff

Even 2022, when this ships, what editor someone uses should not matter anymore. It’s all about Azure. So this is the call to action. Right? So if you go to GitHub, and go github.com/open-.NET, you’ll see a dot GitHub repository. And we’re starting to catalog some of the these things like, here’s another one of these oddities when you go to the official .NET website. So remember, .NET is a platform. If you were to go to the official rust website, they’re like, I use Emacs use VM use all these things. The official .NET website only lists Visual Studio as being compatible. If this is a truly open platform, why is it only listing Visual Studio? Why isn’t there a section there for JetBrains? Why isn’t there a section there for like Omni sharp, or VS code, right? Or why isn’t there showing like the VIM like if it’s a truly open programming language open platform? Why is it only pushing this relationship that we’ve seen the last month has caused a great deal of stress in the community.

Jamie

I do have to say that as a counter to that. Although it isn’t the first thing that people new to .NET will see. I do know that Scott Hanselman has changed his language. When he talks about .NET stuff. He uses the phrase, however you like, build it however you like. If you want to use Emacs, you want to use Vim, go do it. My problem with saying that is that unless I find those talks, unless I find those videos, I’m not going to hear a Microsoft employees say that. And like I say, I’m not trying to I’m trying to be sort of middle of the road and moderate here. Maybe not moderate, but try and stay middle of the road. But I tend to agree with you on that one. If I’m new to a thing. Let’s say I’ve joined a boot camp, right? And they’ve said right go to get dot .NET forward slash six, or whatever the URL is, cuz it confuses people when you say try.dot.net. Because that’s the URL to run .NET in your browser, right? But whenever you do, let’s go. Let’s say you got a dot .NET forward slash download, or whatever it is. The first thing you see is works brilliantly with Visual Studio, you’re going to go, oh, well, I better go get visual studio as well. Now, yes, there is a free version of it. Now, I’m going to say these things, the license can change as I say this. So please do do your own due diligence. As far as I’m aware, visual studio community, which is the full version of Visual Studio with some things in it is available for open source for people in education and for people in teams that are smaller than a set size. So you can get the version of Visual Studio for free. But again, the problem there is you got to have windows. You said earlier on Jeff, I’m on a Chromebook. And I right now I’m sitting here with a machine running pop OS. So I’m happy with JetBrains rider or with Visual Studio code. Yeah. Okay, so my experience with Visual Studio code is a little bit janky. And I can never get IntelliSense working. But for the very tiny projects that I’m working on, have a single program.cs file or a single F sharp file that works for me, but maybe doesn’t scale for people who are in large open source projects or even in the enterprise. I don’t know because I’m not I’m not working on a large enterprise project in Visual Studio code. So what I’m saying is I don’t see these problems because I’m not in that target demographic.

Geoff

Yeah. So I highly recommend people do the analysis go so come join us at Open hyphen .NET. That actually is a URL, we’ll link it in the show notes. And right now, it’s just a GitHub repository where we’re just cataloging these things. There’s talks about, hey, what happens if we start producing a built? And people like, wait a sec, how can you compete with Microsoft? Or know what happens? If that’s not the goal? Right? Whatever, if it’s just about collective ownership of .NET? Like, does the community even know how to build its own programming language? Because right now is it’s it’s very hard to build the .NET programming language from source. So if it’s hard to build the .NET, programming language from source, then how you’re going to get like university students hacking on it. Sure, the new brains coming into the ecosystem. I’ll give you another good example of a difference between ecosystems. JVM, you pull down a open source package from Nougat, and you found a bug in it.

Jamie

I haven’t. But I pull nougat packages. I know the thing I want to do with it. And yeah, okay, let’s use Newton, soft JSON, right? It exposes 1000s of API’s. But if I’m just serializing, and deserializing, some object, I’m going to do what I know and that they’re going to move on to something else, right. But yeah, I’ve never, I’ve never found an actual bug in in a nougat package. Okay,

Geoff

so it does happen, right? Bugs are in software. So you let’s choose Newton JSON, for example. And let’s add contrast to a different ecosystem. So say there is a bug in Newton soft JSON. And the serialization maybe to do with UTF encoding a huge possibility, right? How would you compile a custom version of JSON? .NET? Could you walk me through the steps on how you compile a custom version .NET. Currently, you have your customer project, and the Customer project references a new get package, you can’t use that new get package because it’s got a bug, can you step me through the steps that you would have to do to make a one line change, please.

Jamie

So I guess I’d see whether it has a Git repo, go over to the GitHub repo, or the Git lab repo or the DVCS solution of choice, right? I fork that repo, so then I can make, you know, make my own changes, clone it down to my machine, making the change, run .NET build, if it was a .NET thing, I hope that it works, change like the project ID or the version number. And then I would do a .NET pack, and hope that it would package that up to a nougat file for me. And then I would point my customer project my client project at that localized package, and rerun the thing and hope that it all works. That’s what I would do.

Geoff

That’s exactly the steps now what happens, you’re gonna have a mistake in your patching, and you need to do that again. Oh, you think that you fix that or fix that one line thing? And all sudden, we’re talking about a dev loop cycle? How do you get a dev loop cycle going. So that’s how the world exists in .NET. Currently, now if we look outside the .NET space and say in the Go Lang space, or let’s specifically look at the JavaScript space, there is a package called patch package on NPM. And GitHub. How that works is lovely. Because node is a source based programming language. Now, when people hear source base, they probably think slower. That’s just because the tooling has a main investor, there are source based programming languages, that can work just as fast as a compiled language. But that’s outside of this talk. There’s so much research that’s happened outside of the .NET space when it comes to build system tooling. Now, there’s some cool things in MS build as well. But that’s I’m getting off topic. Anyway. So patch package, what it does is if you want to get a dev loop going, so you’ve got a customer project. And with that customer project, you find a bug in the dependency or JSON, whatever. You can just edit that change in Iran, MPM space create patch, that will store the patch in your source control of your customer project. And then when you do NPM, restore, it applies the patch on top right, okay, that is the dev loop that the node ecosystem has for interfacing with open source software. This is the dev loop that go Lang, people do want to interface with open source software. In the .NET space, we’ve got this nightmare scenario of how it works. And as an open source maintainer, what we see is people going, can you please create a release to fix this bug fix because I met a billion dollar business and I can’t release this project and you’re pulling the rug out of me you’re being a jerk because you haven’t released this thing. And like, meanwhile, a person like I can be watching Netflix and you’re being a jerk to me. So now I’m going to watch Netflix instead, the state of our tooling that exists right now in the .NET space because It is owned by Visual Studio as a sellable thing. They go out and they do research of their big customers and they build the tool as big customers wants. Meanwhile, the tooling scenario I just discussed, does not get built. But the open source maintainer, ZZ have built this for their programming engineer ecosystem, because they know the pain. So they fixing their own problems. But the thing is, by fixing scenario like that, it makes it better for the entire ecosystem, even for those bigger companies. That is a an example of how products are developed a big company that’s doing WinForms is all talking about supply chain security and worrying, they’re going to get hacked. So all the all the product management effort, or the engineering effort is towards making sure that everything’s signed and secure. Meanwhile, that big company doesn’t even realize what they’re doing. And nagging open source maintainers is a bad thing. It’s putting these pressures on the people who create things. But in other ecosystem, this problem doesn’t even exist, because they build shared primitives for the programming language instead of optimizing for software licensing sales.

Jamie

So there’s a couple of things you mentioned there, I suppose I was one of them. In a closed source enterprise world, there is a situation where, presumably because the code is scansource, you using your own new get feed. And you never get into a situation where it’s 2am. And you’re getting emails from someone saying, Please do the release, because I can’t ship the software, because my business is going to be suffering, because I need you to ship the release with this fix for the bug. Because if it’s all internal, and it’s closed source, you’re pointing at the new get feed all day. And you’re going to get the latest version. And if you need a new belt, you go poke the person who sang probably three jars down, who then creates the new builds, right?

Geoff

Yeah, exactly. And in the .NET space, people look to say, No, this is the way it’s done. And this is the only way it’s done in other programming languages that are collectively owned an ecosystem that collectively own they’ll have lots of different ways. Yes, I’m aware that there’s things like FSX make and other things that exist in the world, I’m not ignorant of that. I’m saying you need to look at there’s there’s so much more that the .NET space is missing out on. I don’t do .NET day to day anymore, I used to it was one of the one of the first ways I cut my way into this space. Go look outside the ecosystem, because there are great ideas. But currently, those great ideas will only get built if they get prioritized. And through that. So people ask, well, if you’re going to do an open .NET, what does that even look like? The answer is I don’t know. If you feel similar to how I feel about these things, maybe a collective of people come together. And that will be quite lovely. We’re tracking these meta problems to help .NET mature to where it needs to be, which is an open platform. Or maybe people get together and they start wanting to create builds. And if you start having build side by side builds, like there’s .NET and open .NET. There also and we have this ability to play around. The community has the ability to play around they no longer blocked of Microsoft saying yes or no, we have ownership. And we start playing around with a that idea from rusts. Pretty cool. What happens if we were to create an experimental built in this experimental build is to fix that problem of like patch package. The goal isn’t to for the experimental branch to like, get the mass adoption and create some riffs and forks and acres. And that’s not the goal. The point is, let’s look at things differently. And the community right now because we don’t have collective ownership can’t look at things differently at all. Because they all have a blocking thing on Microsoft. So the community has the ability to create builds. Now we have sponsors from circle CI, and we’re looking at false hosts. So all the infrastructure is coming together to be able to create builds. What do you want to do now? That’s why we’ve created a special interest group in the official .NET discord channel. Right? Okay. So in the official .NET discord channel, there is now a cig called Open .NET people come together and we’re discussing like what could this be things need to be better?

Jamie

I’m conscious that people may take the things that we’ve talked about as huge negatives, and we’re being non constructive. But I think there’s something that you said there about, if we can get an open .NET build, we can hack around, we could play around, see if we can implement these features. And then presumably, if there was a requirement for it, you could maybe pull request that back to the main .NET source tree and say, Hey, Microsoft, folks, I know you don’t have time to look into this. But we’ve done some playing around. Check out what we’ve tried to do. What do you think? Exactly? We’ve created this ability To do this brand new wonderful thing that no one’s ever thought of doesn’t exist in any other language. We’ve spent some time investigating it, what do you think?

Geoff

Instead of looking at Microsoft, like, oh, you need to do this, that that that the community has power to go try their things if they want. So real, it’s up to people to go look at GitHub. Go join the discord and help shape like if this is interesting, come do it. That’s the reason that it exists. As a cig a deliberately when creating this, I wanted to create this as a cig in the existing community not to split the community. The second thing I want, is fix the foundational issues with the .NET foundation. There is some foundational issues with the incorporation documents are the .NET Foundation, which basically makes the .NET foundation Palace, the .NET Foundation, and their board can’t do anything unless it’s like Microsoft has this like Mark Zuckerberg super vote over. So the .NET foundation is meant to be truly independent of .NET. But how could it be truly independent of .NET? If there’s like a Zuckerberg super vote, that will ever any motion can pass or not. And I’d like the open .NET to join the .NET Foundation. Because if the open .NET thing and the community formed, and they start hacking away on things, and it’s part of the same foundation, and their foundation owns the same intellectual property as .NET, then it makes it very easy to intellectual property. Why take ideas from downstream from the community and put them back upstream?

Jamie

Yeah. So I was a little worried going into this conversation, like I said, like I said, not constructive. But I think everything you’re saying here is saying you’ve identified this, this issue. And you’ve actually come up with a way of maybe not the immediate solution. But hey, here’s how we could work together as a group to figure out the right solution. Yeah, I think you’re hitting all the right, the right points, in my opinion. Now, I’m not a Microsoft employee. You know, I don’t work on the .NET stuff. But it’s all making sense to me that, hey, if there is this special interest group that can say, hey, you know, why don’t we try this? Why don’t we try that? It all makes sense to me?

Geoff

Thank you. Because I just see a .NET community who’s continually looking at Microsoft and this, you’ve seen the last 10 years, even Microsoft’s gone through this massive transformation. Not enough the hot reload proves there’s still some people who need to retire from the org, who don’t get it. And the internal culture war between the engineering and the product management and the business decisions where emails have leaked to the verge prove that as well. The community itself hasn’t gone through an evolution, they’re still stuck in the sitting back and complaining and winching mode, even though all the source code is open. But that’s because no one has really said, hey, look, how do we build this thing? What are the problems that stopping us from being open platform? And from which point hopefully Microsoft can tap and say, look, hey, put up a shut up, like, we’re not gonna take your pull request, but go play with this motley crew, go play with them, and you can get something cool, then raise the design proposal or like backup stream, and then maybe we’ve got some sort of, like IP sharing going between the ecosystem? Or maybe people decide to take in a completely different way. But maybe it doesn’t join the .NET Foundation, maybe it joins the Apache Foundation, maybe something like AWS comes along and says not we’re going to do like like the same we do with Open JDK, we’re going to do a proper open .NET. Don’t know, turn up have a discussion. And let’s see what happens.

Jamie

That’s it. You see, this is a thing, right? What a lot of people don’t realize is that .NET as it is now. So .NET, six, I guess at the time of recording is an implementation of the .NET standard. And so it is perfectly within at least the words that Microsoft have used to describe .NET to then go implement your own or it should be I don’t know whether it is like you say how do we how do we build it, you should be able to fork it, build your

Geoff

own. There shouldn’t be a complete crisis, like folks are a natural part of open source. Now one thing that to be clear is there’s been a great deal of engineering effort to reunify the BCL I would consider any sort of fracture or the BCL as being a stupidly bad idea, you need to look at python two and python three, for example of the problems that causes in ecosystems. But that doesn’t mean you can’t take things like build tooling in a different way. If the MS build didn’t exist, what would it look like? Or what are the changes we need to make to make msbl to enable some of these scenarios, like patch package, etc. And also, people may not realize this, but this is an example of just how fractured .NET is at a shared primitive level. Do you know .NET debugger is proprietary. I didn’t know that. The door .NET debugger is proprietary. So Microsoft ships a programming language that cannot be debugged unless you pay for commercial tooling. And because of this projects such as Link pad, dn spy, Samsung JetBrains, the Mano project Unity project, I’ve all had to reinvent the wheel and write their own debugger. The heck, it’s 2022. Isn’t this meant to be about Azure? Why are all these really cool companies having to write their own debugger? The reason that they have to write their own debugger, they want to sell more Visual Studio for Windows licenses, isn’t meant to be about Azure.

Jamie

See, that’s the thing, it occurs to me now, that obviously, Code Spaces is the thing that isn’t officially offend project by technically by GitHub. But GitHub is owned by Microsoft. So you know, and you can spin up a code base to do your .NET development, let’s say, let’s say, right, let’s say you live entirely in a Linux or Unix world, so you’re on Macco issue on FreeBSD, or on Linux, one of the many Linux is, so you can’t get Visual Studio for Windows. That’s fair enough. Okay. So you live inside a Visual Studio code, and then you go, I want to build it on a server. That way I can use a throwaway machine. So you get yourself a GitHub spaces? Well, I haven’t done it. But I’m left wondering, because GitHub spaces for .NET is entirely Visual Studio code in a Docker container on the cloud. So like, the back of my mind, everything you’ve been saying, I’m then wondering, well, what’s the debugging experience like on that if these tools and library features are removed, or can be removed? And if the debugger is proprietary? How do I successfully debug in the cloud?

Geoff

So Exactly. Now, the reason that VS code and C# suck is because they want to sell Visual Studio for Windows licenses. Right? It’s painfully clear that that’s the product direction, like they remove things from the SDK. So they can sell Visual Studio for Windows features. It seems that the VS code for C# is chronically underfunded, right. And that means when people are going to use it on GitHub Code Spaces, the experience is not going to be great. Go Lang and rust work better on GitHub Code Spaces, then C# does. Like it’s actually shooting themselves in the foot.

Jamie

At the time of recording JetBrains have just announced they have a project that will do the same thing. It will be a similar thing to Code Spaces, but using JetBrains stuff. And I know that JetBrains like you said they have their own debugger, they have their own tool chain, they have their own all sorts of stuff. So I wonder whether this is one of the reasons why JetBrains are offering that now? I don’t know. Because it may be easier. Who can say right? Who can say

Geoff

it’s a good thing, though. We’re talking about a programming language. Now, if everything’s meant to be about Azure and selling computer hours, who cares? If there’s like 20 different tooling vendors, it doesn’t matter that success, that means more people are going to use it more choice. So if we’re back 13 years ago, I understand that logic of one to sell licenses which have Visual Studio for Windows is 2022. It’s about Azure, why are we hindering a programming language?

Jamie

I guess it’s like, if you were to buy a pair of Nike trainers, or Nike sneakers, and you could only use the Nike laces to do the sneakers, right? So then when the laces break, you’re gonna go back to the Nike store, presumably without any shoes on because you can’t put your shoes on, or buy the Nike laces to do a pure Nike trainers. I’ve said Nike way too many times. I don’t want people to think that we’re somehow sponsored by them. But it was an example, right?

Geoff

Yeah, I guess we we’ve been going for a while we should wrap. The final thing I’ll have to say is, on the same day, that the GitHub CEO stepped down, the person that looked after and did the hot reload thing to the community was promoted. And GitHub now report to that person. That’s all I got to say.

Jamie

Well, okay, let’s say folks are listening to this and they want to help out, they want to investigate some more, regardless of whether we’re saying the .NET is good or bad. They’re just like, hey, I want to learn some more. Here’s the GitHub repository the best place to go. Or if you’re in the discord server, find the special interest group. What’s the best way to find out? Yeah, the

Geoff

best thing is go to Open dash .NET which redirects to github.com/open-.NET or join the special interest group. This stage is really can we form a community of people who want to see have collective ownership of their tooling? That’s the first step. See who turns up is do people care about this as much as I care about this? And if they do then it’s like, okay, well, I started to think I’m going to give it to you, you know more than me, I’m going to hand this over to you. I’ve already started thinking about succession because like, this is really important in open source, you should plan from succession from day one. So if a whole bunch of AWS employees turn up and say, hell yeah, let’s do this, okay, go is the case you’re funded? You can do this much better than I can. I just started the thing. I’m just putting together a community. So if you like the idea of exploring what a collectively owned version of .NET looks like, then come join the community.

Jamie

Totally. Okay. That sounds like a great idea. We’ll make sure we put the links into the show notes. I’ll also link to the stories we’ve talked about so far today. What about getting in touch with you then? Is it Twitter? Is it lean out the window and yell? What’s the best way to find out more about you, Jeff?

Geoff

G hartley.com, you’ll find me there. I’m on Twitter, easy to find. I’m passionate about these topics, you can probably tell from the recording, come hang out and share ideas. But it’s a big surface area, even myself, like I’m still thinking about what the right approach this is? And the answer is, I don’t know enough. I don’t know. And hopefully there are people around will form who have a better idea. And hopefully, there’ll be Microsoft engineers who see what we’re doing here is a positive thing and not a hostile thing. And maybe they will start helping out like I’ve thought about like, what happens if we started ring back the old school channel nine videos, remember the old school ones that used to sit down on a couch and the camera used to fly fly around and used to learn so much, but your brain would melt right away and get some of that going? Maybe it’s like, hey, we need to build .NET we have no idea how to build not that. Can you come on our YouTube and like sit down and teach the community how to build .NET? Like, get some mentoring and open community and collective ownership going? That would be wild? And amazing.

Jamie

Yeah, that’d be really cool, like watching a YouTube series on. Okay, so let’s pull the .NET source code, let’s run it through .NET build, because presumably .NET is written in C# against the .NET tooling. So I should be able to just push f5 and build it. Whether that’s the case or not, I don’t know I’ve not tried it. Maybe that should be an exercise for us now. Go ahead and pull the .NET CLR source code and see if you can build it.

Geoff

Yeah, there’s an issue on GitHub that will give you some more tips. There was a lot of effort invested by the engineering team to do reproducible builds from source. Because if you’re shipping something like from Fedora, or Debian, they have rules that everything must compile from source. So if you want to head down this path, you look at how Debian Fedora build .NET and use that as your starting point. Because otherwise, you have to worry about syndication of different release schedules between different teams here. And it’s it’s a complicated topic. But maybe we create documentation together, maybe we start education together. And maybe this seems easier. And if something bad was happened in the .NET community again, this time around, it’s like, Yep, we’re ready to go. We’ve got a fork, we can we can do whatever we got collective ownership, tip

Jamie

from our conversation. That’s what I’m taking. It is not a case of let’s be really hostile and create an open source version. I try and push Microsoft out of the way. It’s like, Hey, how can we help by making the whole thing open source? And seeing if we can investigate how to solve some of these problems, though the programming languages and frameworks have solved?

Geoff

Yeah, and it’s also insurance in case a .NET. A hot reload was to happen again.

Jamie

Sure. Well, I tell you what, Jeff, I’ve taken up a lot of your time this morning for you this evening for me, because time zones are fun, right? So what I’ll say is, thank you ever so much for being on the show, Jeff, I really, really appreciate it. I think that this is an important conversation to have. And maybe it will help the listeners to maybe sort of sit back and have a critical thinking moment of Hmm, what if .NET went away? Or what if there’s one feature in the .NET tooling that I use goes away? Because that’s the whole point of open source? Right? It would if it goes away?

Geoff

What happens if we could just do it without having to beg Microsoft to do it? Like currently the contribution model is, I have an idea beg Microsoft to add it and I go, nope. Or they say yes, they say yes, quite a lot. But they say no. And then what the community, just lots of individual people who have said no to like what happens if all those people have said no to we’re all working together towards something that wouldn’t be wild. And hopefully that starts happening. And it’s an open platform, open community, an open language with good shared primitives that aren’t ripped out to sell commercial software licenses.

Jamie

You Yep, that’s it. I would encourage all the listeners to go check out Open .NET because I think it’s an important project regardless of whether the licensing or the commercial side of it, I think it’s it’s from my point of view would be a good idea to try and experiment with some stuff and try and push it back upstream. That’s but that’s what I’m taking. I know that there’s a lot of other things going on. But that’s, I tried to see the positive. Yeah, but yeah, so what I’ll say Jeff, is thank you so much for for spending your time and talking about this because it is a is a hot topic, but it’s a topic that is important to discuss. And it’s important to get excited about I think, but excited in a good way not around let’s go and girl with the pitchforks and the flames on the end of our torches and stuff. But let’s just have a civil discussion about it. So I thank you very much, Jeff, for having that discussion with me. No problem.

Geoff

This started from an emotional standpoint for a lot of people in the community and it’d be lovely to get towards rational and start planning what this could look like. But first step is people come, let’s chat

Jamie

Sure excellent. Thank you ever so much.

Geoff

No problem.

The above is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Wrapping Up

That was my interview with Geoffrey Huntley about Open .NET. Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at dotnetcore.show, and there will be a link directly to them in your podcatcher.

And don’t forget to spread the word, leave a rating or review on your podcatcher of choice - head over to dotnetcore.show/subscribe for ways to do that - reach out via our contact page, and to come back next time for more .NET goodness.

I will see you again real soon. See you later folks.

Follow the show

You can find the show on any of these places