August 1, 2020 - .NET Foundation: Friend or Foe?

Stack Overflow releases its performance metrics; Hacker News Cries. The .NET foundation released its "State of the Foundation" report, and I go deep into what the .NET foundation is, who it's for, and I ask the question: Are they the interest group we need them to be?

VB.NET "Not along for the ride" in .NET Core and .NET 5. Eject Mailman, eject.
For those of you that were hoping for VB.NET to get some love in .NET 5, it doesn't look like it's going to happen. This is of course causing some consternation; but overall I get it. Visual Basic was written for a time when we really thought we could make a language look like english and not be laughed out of the room. Now we know better. VB.NET has done good things; and I know a few products even today that are still written in VB.NET; but look, it's time.

Just look at the flowers, VB.NET.

Visual Studio 2019 version 16.7 Preview 6 is now available
Most of us are probably on the Visual Studio stable channel, but if you like to get the previews (they're free), you can install them. Interesting to me is that this version adds support for XCode 11.6? I don't even know what this means but here we are and that sounds cool as $#&@.

Microsoft .NET team is hiring
You can apply to become a Program Manager II on the .NET team. I thought about applying, but realized "allowing everyone to be their authentic selves" probably doesn't mean "Making fun of Microsoft on a daily basis". Seriously though, if you can move to Redmond, you should think about applying. .NET is entering its best years; and Microsoft is one of the better companies to work for.

Microsoft's Roslyn team (the compiler for .NET) released a blogpost detailing productivity improvements:
The Roslyn team released a new blog post detailing tooling fixes that are in Visual Studio 2019 16.6 that you may have missed.

My favorites are the DateTime formatting changes. You no longer have to Google which combination of MMDDYYYY gets you what you want; they now provide that information in the intellisense when you use DateTime.ToString(). This is a long overdue feature and I'm glad they added it. Their code refactorings are getting better, though I still prefer Jetbrains Resharper.

.NET Foundation "State of the Foundation"
The .NET Foundation released its State of the Foundation report for 2020. They have 800 members, which is a growth of 100% from last year, and 5 corporate sponsors, as well as its plan for the coming year. I'm glad to see this sort of transparency; and while I have some reservations about the .NET Foundation; this is a step in the right direction.

They also released their budget; and this will get better, but they spent a grand total of $558 dollars on sponsorships this year. You'd hope to see that get much better, and that's the metric I'll be using to judge whether or not they're having the right impact on the .NET community.

Stack Overflow infographic:
Stack Overflow (the company) released its performance metrics for its collection of Q&A sites on stackexchange.com (What the company used to be named, but then realized that was a terrible name and changed to the same namesake as its flagship Q&A site). So anyway, if you want to know how 300+ Stack Exchanges perform, you'll want to see this.

The sheer speed of the Stack Exchange network got the Hacker News folks all in a tizzy. Any day we can tout how well .NET performs and piss off hacker news is a good day.

.NET Conf - "Focus on Microservices"
.NET Conf held an all day conference to talk microservices; and I live tweeted it. I've got some pretty nasty scars (And a few fond memories) of working with Microservices; and if that sort of thing interests you, check my live thread on it. If your architect is practicing Resume driven development or you work with really large software teams, you should watch the videos with interest; for the rest of us, the conference probably isn't worth your time unless you really want to learn about some frameworks that can help you build Microservices in .NET.

Pretty Fricking Cool Library of the Week (PFCLotW)

This week's cool library is Bogus, which allows you to generate fake data for your application. It's a pretty neat library; and you should check it out. I've used it on quite a few occasions, and it's worth your time.

In today's podcast episode; I'm diving deeper into what the .NET Foundation is, and whether it's "good for us" as a community in its current form. The episode should drop by Noon EDT (-4 UTC) today; so give it a listen if that's a subject that interests you.

Transcript (Powered by otter.ai)

George Stocker  0:00  
Hi, I'm George Stocker, and welcome to last weekend dotnet. Vb dotnet is not along for the ride in dotnet core and dotnet five. Now for those of you who are hoping to get VB dotnet in dotnet, five, it doesn't look like it's going to happen. So of course, it's going to cause some consternation among VB dotnet developers, and I get it. Visual Basic was written for a time where we thought we could really make a language look like English and not be left out of the room. Now we know better. dB dotnet has done good things. And I know a few products today, they're still written in VB dotnet. But look, it's time Visual Studio 2019 version 16.7. Preview six is now available. Now this is pretty cool. You can actually get advanced versions of Visual Studio whatever the next minor version is, you can get advanced versions of it for free without a license, their preview and so they might have bugs in them, but you want to check out what's coming up in Visual Studio. It's always an interesting install. Now this one is interesting to me because it adds support for Xcode 11.6 I really don't know what this means. But I want to find out because this is really cool. Microsoft dotnet team is hiring, you can actually apply to become a program manager for the dotnet team at Microsoft, I thought about applying, but then realize that allowing everyone to be their authentic selves probably doesn't mean making fun of Microsoft on daily basis. Seriously, though, if you can move to Redmond, you should think about applying dotnet is is entering into its best years. And Microsoft really is one of the better large companies to work for Microsoft's rozlyn team. That's the team that produces the compiler for dotnet. They released a blog post about productivity improvements and their latest push for Roslyn. Now, this was in 16.6. So you may have missed it. It's been out for a few weeks. But what I just noticed is that they've added changes that allow you to see how your date time is going to be formatted when you say date, time to string You have all those options, they now give you IntelliSense for those options, and they tell you what they mean, that's wonderful. It's way long overdue. There are other code refactorings. For this, I still prefer JetBrains resharper. But again, something you should take a look at the dotnet foundation released its state of the foundation blog post for 2020. Now, they this year, they have 800 members, which is 100% growth from last year. And they now have five corporate sponsors. This state of the foundation also includes their upcoming plan. I'm pretty glad to see the sort of transparency, I do have some reservations about the dotnet foundation. I do believe that publishing this is a step in the right direction. They also release their budget, and this will get better but they spent a grand total of $558. In sponsorships this year. you'd hope to see that get much higher if it actually means what I think it means which is sponsoring open source projects. And that's a metric I'm going to be using to judge whether or not they're having the right impact on the dotnet community but you have to start somewhere, and they started at $558 worth of somewhere. StackOverflow released its performance metrics for its Stack Exchange sites on Stack Exchange calm now the company's called Stack Overflow used to be called Stack Exchange. The network is still called Stack Exchange. But the company changed its name back to its flagship site, which is Stack Overflow. Anyway, if you want to know how well the site's perform, you can check out the link at Stack Exchange comm slash performance and the sheer speed of the Stack Exchange network being hosted on dotnet. They got the Hacker News folks all upset and any day we can see how well dotnet performs and piss off Hacker News. That's a good day. dotnet con held their focus on microservices Virtual Conference on July 30. And I have a thread live tweeting it. Now I've got some pretty nasty scars and some fun memories from working with microservices and that sort of thing. interest you, you can check out my life thread on it. Now if your architect is practicing resume driven development, or you work with really large software teams, you should check out the videos from the conference. But for the rest of us, probably not worth your time, unless you want to learn about some of the frameworks that help you build microservices and dotnet. Now, this week's cool library is bogus. Now, it's a library that allows you to generate fake data for your application. It's pretty cool. And you should check it out if you need to generate fake data. One of the common usages that I use it for is if we need to mock data as if it were coming from production. For instance, we need a million rows of data, but we can't use production data. Use bogus, generate it that way. Job done. Alright, as part of today's episode, we're going to talk about the dotnet foundation. And that may seem a little boring, but I promise you it's not it's actually really important for you, for me and for everybody who is part of the dotnet community, the dotnet foundation was formed to advance the interests of the dotnet programming community, including enterprises partners, individual developers and open source communities by fostering open development and collaboration of open source technologies for dotnet programming and related technologies, and by serving as a forum for commercial and community developers to strengthen the future of the dotnet ecosystem, and wider developer community by promoting openness, community participation and rapid innovation. Now if that sounded, we'll can that's because it was that comes directly from the dotnet foundations bylaws, Article One, section three. Now the reason why we're talking about the dotnet foundation is that how its governed and how we interact with it determine how successful dotnet open source is, Will dotnet open source be successful because of the foundation or in spite of the foundation, and if you've been developing in dotnet for a long time, you understand that Microsoft is Really a late comer to the open source movement. Now the foundation was formed in 2014. And it was formed much the same way that the Apache foundation or the eclipse foundation were formed, they're around technology stack, in this case dotnet and to advance the interests of the dotnet community. Now when we say advanced the interest dotnet community got to put an Asterix there. I mean, Microsoft created the dotnet ecosystem. Microsoft's developer division has tons of tooling around dotnet they've put millions and millions of dollars into developing dotnet into what it is, and you can't expect them just to let that go and just to be governed by a foundation. And of course, it's it's not they, they're a founding member, and as such, they get certain rights in the foundation that no one else gets. For instance, in an article two, Section four under founding member, Microsoft Corporation is the founding member, the founding member, and 10s have the right to manage the affairs Foundation, be vested exclusively in the board as described in these bylaws to the maximum extent permitted by applicable law, the founding member and eligible members will elect the board as described in Section 3.3. That's article three, section three. Now the board will consist of one director appointed by the founding member and up to six directors elected by the membership. Now that's important, no matter what Microsoft gets one spot on the board, okay, the membership elects the other six, in fact, not the other six up to six. Now the other rights the founding member gets Microsoft in this case, the director who is appointed by them is going to serve until that person is replaced by Microsoft or otherwise vacates the position. The founding member Microsoft may replace its appointed director anytime as in its sole discretion. Elected directors will serve for the term established in the director election policy found Remember, they get to change their person out whenever they want. Now that's something we need to be aware of. Now the current executive director of the dotnet foundation is Claire Novotny. Claire is the dotnet foundation executive director. And she works at Microsoft as a program manager on the dotnet team. And this is very important. If the dotnet if the foundation is independent, then clearly any any actions taken by Microsoft would be seen as well. It's not an independent foundation. And so right now clear is the executive director. And as of yet, there's not been a non Microsoft executive director that I know of. Now Microsoft has other rights. For instance, under article three section nine meetings, subsection II limited special right for director appointed by my founding member. This is Microsoft remember, in connection with any vote to materially change the foundations of membership policy director election policy, project governance policy, or any intellectual property related agreements or policies, a no vote by the director appointed by the founding member will result in the disapproval of the proposed action, regardless of the number of votes for approval, and such director must be present as part of any quorum, ie if that directors not present, the board will not have a quorum for the matter, regardless of the number of other directors present. So this is important. Microsoft effectively controls how the dotnet foundation is set up and how it's run. You can't change policy if Microsoft doesn't agree to it. That's a very interesting way to set it up if you want it to be independent foundation. Now under Article nine amendments,

any amendment of the articles of incorporation or the bylaws must be approved by vote of two thirds of the directors then in office, any such amendment that materially alters risk? or eliminates the rights responsibilities and privileges of the founding member must be agreed to in writing by an authorized representative of the founding member who is not serving as the director of the foundation. Now, this is interesting. You've got this special person that the founding member appoints. And they can't even vote to make changes. Someone else from the founding member has to approve these changes like amendments. Now, why does all this matter? Like why is this political intrigue, even important? Now all of this is important because the dotnet Foundation was set up to help dotnet open source thrive. Now it only thrives if we do what's best for community. We do things that aren't best for the community, it's not going to do as well. dotnet foundation supposed to do that. It's supposed to take into account how the community feels and conduct itself in a way that helps the community thrive. For instance, they have a vision statement. vision statement proposed vision statement is that a diverse, healthy and active open source community, open source software community or project maintainers are well supported and contributors feel welcome, an ecosystem where dotnet open source software is adopted in the enterprise, education and personal projects, and ecosystem are the foundation its members in the world wide dotnet open source software ecosystem work together to identify challenges to the mission, and then collaborate on solutions. A community where those that benefit the most from dotnet open source software contribute back whether it be through resources, time or money in this community is easy for anyone who wishes to contribute to do so in whatever way they can. should be easy for companies to contribute financially to open source software, and easy for project maintainers to receive that support. That's the vision statement they're proposing to change right now. That's the proposed instead of the vision statement. Now the mission statement is the dotnet foundation is an independent A nonprofit organization whose mission is to support an innovative, diverse, commercial friendly, international open source ecosystem for the.net platform. That is their mission statement. Now with everything we've gone through so far, we've gone through their bylaws, we've gone through how they're set up, they have six, up to six directors plus someone appointed by Microsoft. But they also have one other part, which is an advisory council. This Advisory Council consists of six people that work at Microsoft and one that does not also people that run the foundation. They have a treasurer who works at Microsoft, Christopher house, who works at Microsoft, but doesn't have his stated title. And they have Claire, who is the executive director of the dotnet foundation. They have that they then have their board of directors of which it looks like none of their board of directors, except for one except for Beth Massi is a member of Microsoft. So extensively right It's pretty independent, except for the fact that Microsoft appoints the Microsoft appointed director, they will always be able to appoint a director, they can replace that director anytime at their discretion. And that director cannot make decisions that will materially hurt Microsoft. And Microsoft has effectively veto power over anything that changes how the dotnet foundation is run. And then they have an advisory council. It's made up largely of people from Microsoft. So even if someone wants to make a change, you're going to the Advisory Council is going to be there. And you know, this doesn't look so good for Microsoft, please don't do it. But the reason all of this came up is that I believe in the dotnet Foundation, I believe in the idea of making open source software work. I think that right now, open source software won't work. It can't work. It's not financially viable for maintainers. It leads to burn out. It leads to abandoned projects, and generally creates more churn in a system and when you create churn, especially in software, companies don't want to use that software. And I think that you know, creating a foundation whose job it is to help keep that churn down. I think that's, that's a good thing to do. However, open source software has to have the needs of its community at heart. And a foundation that represents open source software has to have the needs of its community at heart. Now recently in in, it was reported back in May, that Microsoft copied its new wind get window Pam, its new wind get package manager, architecturally from apt get, which was a dotnet, open source software package manager. They copied how it worked. They copied its ideas. And if that weren't bad enough,

it turns out they'd called Kevin and said, Hey, Kevin, can you come out interview with us? We like what you're doing with aapka they interviewed him, they ghosted him and then the night before build They call him up to say, hey, oh, by the way, we're not going with your app get project, we're going to go our own way. And yet it's being announced tomorrow and build. The next day they announced wind get. Now by itself, this behavior is bad. But this is Microsoft. Aren't they are big supporters of dotnet. Open Source, didn't they establish a foundation just for this? Well, I asked him that question to the foundation to its directors. And the response I received was not our deal. No one asked us for help. We're staying out of it. Is that behavior keeping your, your community's needs in mind? I don't think so. And so I dug some more digging, I was like, well, this, this can't This doesn't make sense. Like why would anyone stay silent. You've you've literally got a dotnet project that's popular, that is filling on a hole that Windows hasn't provided a system level package manager That's pretty dang well. And why is it nobody at the dotnet foundation is speaking out about this. There's some reports from some people, the dotnet Foundation, when I really pressed them that said, you know, hey, if they were a member, we might have stepped in. But since their project isn't on our list of projects, we don't, we don't deal with them. That's not a good enough answer. If your foundation is there, to improve dotnet open source software adoption, you're not just improving it for the projects that are part of your portfolio. You need to improve it for all of them. You're the interest group for dotnet open source software, that's what you do. So again, I was a little heated. And so I started doing more research into the dotnet foundation. That's when I found all the stuff I'm telling you about. I have also been telling people to Hey, you should become a member, you should join the foundation, and you should vote and i believe i believe all those things. And one of the questions I asked is that you know, what does commercially friendly commercial friendliness me back from the mission statement? And the answer I got was telling. And it's actually what led me to speak on this podcast about it today. And the answer I got is the intent is that businesses are able to use dotnet based open source software libraries without friction. Clean IP and licensing is is a key part of that, which is why the foundation has project signup contribution agreement, and a seal a bot for for future contributions that ensures that no one's going to come out of the woodwork, the copyright claim on the code. It also means the use of permissive license licenses, which is one reason that foundation does not support libraries with copyleft licenses. It currently does not say anything about a project's commercial viral viability, nor for sponsors that the foundation of which Microsoft is just one. And that was from clear. The Executive Director, Ben Adams, who is a paid director on the foundation said it's both if a project is not sustainable, then it's not commercial friendly and the dotnet foundation should help enable business to give back to projects they use in a commercial friendly way. As business purchasing can be a complicated internal system and a common barrier for all projects that the dotnet foundation should endeavor to ease. Also, the dotnet foundation does not support non permissive libraries for its license, excuse me, non permissive licenses for its libraries, as they are hard to build on are using a commercial friendly way. Now, this is important, basically dotnet Foundation, if you're producing open source library, dotnet foundation wants Greece's kids good businesses to use it. So if you produce, let's say, a library that does image compression, if you want to be a part of the dotnet Foundation, you can't use a copyleft license like GPL. If you want to be part of the foundation for them to care about you, you got to use permissive license like the Apache License or MIT license. Now if you're an application dotnet open source application, you're allowed, although I haven't seen verbiage to that you're allowed to use a non permissive license. Now, why is all this important? Well, if you're an open source project, and you're a library, I don't see how the foundation is going to make what you do commercially viable for you. We're gonna make it commercially viable for businesses by saying no, you may not use GPL or a GPL. But you may use MIT license and the Apache License, but for applications, they'll help you. They'll be okay with a non permissive license, at least as I understand what they've said here. It's a hell of a way to slice it. Alright, since the bylaws don't cover everything, we have jumped into

the project's policy. The project's policy allows you to determine what projects can be members of the dotnet Foundation, and do they meet the health criteria is important. So let's start with eligibility. Now they're eligible if they fit within the moral and ethical standards for the dotnet Foundation, it's good if the project is aligned with the philosophy and guidelines for collaborative development also good. And it's built on the dotnet platform, or it creates value within the dotnet ecosystem. It's eligible if it produces so source code for distribution to the public at no charge. That's interesting. The license is operated under a is offered under an open source license, which has been approved by the dotnet foundation. And libraries that are mandatory dependencies of the project are also under offered under a standard permissive open source library, which has been approved by the dotnet foundation. Now all of these are and there's more criteria, but those are the most interesting ones. If you decide you want to put your project under the dotnet Foundation, you have two choices. You can either a assign your project, to the dotnet foundation that's transferring the copyright of your project to the dotnet Foundation, or B. You can use the contribution model which is you retain, or the project retains ownership of the copyright, but they grant the dotnet foundation abroad license the project's code and enter in other IP. Now, why is all this important? Why do we need to care about such esoteric documents? And it's because if you ever want to know what a business cares about, look at what they write down. They put a lot of effort into these governing documents. Microsoft put a lot of effort in being sure they couldn't be kicked down. They also put a lot of effort into ensuring that they, their rights were always protected with effectively veto power over any decision that changes how dotnet foundation runs. The foundation itself is set up to ensure that companies can easily use open source projects, they can easily rely on them, but you're missing a leg. And we see that with what happened with Kevin and aapka. What about the project mean? Tanner's, where do they come in? Sure they get a seal a bot, that makes it easier for people to contribute changes their projects. Okay? That's a solved problem. And they get pixel space on the dotnet Foundation website, but only if they're members. Something like AppGet, something that was materially important to the dotnet community because it showed that you could use dotnet to create something as foundational system package manager, have it be popular, and they get nothing, because they weren't a member. And even if they were a member, it's not like Microsoft say, Oh, yeah, you're right. Gosh, we shouldn't have competed with open source project are bad. They didn't do that. Microsoft, you know, after an outcry finally gave keivan credit, but if they used his architectural work, his design work that's worth 7500 k from consulting, just by developer time alone, your developer team, you have them spend Two months figuring out the architecture of the system, what his design will be how its API's work, that's easily worth 75 or 100. k. What did Kevin get? Well, he got a footnote read me Two months later. And that's the sort of thing that I thought the dotnet Foundation was supposed to protect against. But as I find out, they're not, you know, they're there to grease the skids for companies, protecting projects is a distant second to that. Now, that, of course, may not be the desire that may not be what they're trying to do. But it's the impact. And it sure seems like the dotnet foundation is set up in such a way that it's there to enrich Microsoft, even if it hurts the community. And so let's look at their budget what they do this year. Now currently, they released their state of the foundation this week. They have five corporate sponsors. They have 800 members and their budget. They brought in 237,000 sent out expenses of 157,004 2020 ending July, or excuse me, ending June 2020. In their budget, they had sponsorships of $558. And outreach of $81,517 goal of outreach is to encourage new developers to build dotnet empower underrepresented segments of the coder community, become leaders and contributors and assist event organizers with evangelism and grow.

So for their budget, they spent 81,000 on outreach, only $558 on sponsorships. Now it's unclear how much of their money went to open source projects. I can't tell that just by looking at their balance sheet. There's no line, hey, this we're outlays that we actually contributed to projects with but remember, you know what people write down they care about where is the goals for give Many open source projects, I don't see it. And this means that they don't care about open source or that, you know, the dotnet foundation just exists to enrich Microsoft. But it does raise some interesting questions at this point. What we need for open source in the dotnet community is we need open source to not be plagued by burnout to not be plagued by companies stealing the work. You know, I don't even say that we have, we do have a list of problems and done and open source. And you know, how easy it is to get companies to adopt open source. It's even on my top five. You know, it's hard to get people to maintain projects, you know, authors, like even get their work stolen for no money, no credit. It took the community outcry to even get a footnote on the readme file. Microsoft continually competes with the community and maintainers don't have the backing up an interest group that can help us that's what the dotnet Foundation's there for There'd be the backing for the maintainers there to be the special interest group for people that make open source software with dotnet. Yes, they should grease, grease the skids for businesses to use open source software. Absolutely. But they should do it in such a way that enriches the community, not a project sponsor, not their founding member, the community. So here we are. We're at the start of a new fiscal year for the dotnet foundation. We're having new directors Come on. And I want to challenge the directors that join the foundation to figure out who are they therefore, are they there to enrich the founding member to make it easier for them? Or are they there to enrich the community? And if you aren't there to enrich the community? Then we got to start focusing on making dotnet open source software sustainable, and yes, that means putting money in the pocket of maintainers Open source software is a labor of love. You have to love what you're doing. But love doesn't pay the bills. Love doesn't put a roof over your head. These companies have plenty of capital. We need an interest group, like the dotnet foundation to put that capital to work for us. Now, how can we do it? One issue is that we should have dual licensing. And the dotnet foundation should look at dual licensing. If you're an open source project, you get one license, if you're commercial, you got to pay and you should pay. You're making money or you're using the software to make money in your business or to save you money. You should pay for that right if you're a business dinette foundation can help by putting together an invoicing system by saying, look, we have lawyers, you pay dues, those dues go to lawyers to figure out do licensing your dotnet project, they will figure out the license and you don't have to the next thing we'll do. So we'll set up an invoicing system to make it as easy as possible for open source projects under the dotnet foundation to have to generate invoice for business so the business can business's purchasing department can pay them. The next thing we will do as dotnet foundation is that we will fight tooth and nail for dotnet open source, there should be no one that questions whether dotnet foundation exists to enrich the community and seeks to defend the community from companies that would try to take and give back. And that means at some point, members of the dotnet Foundation and the directors of the dotnet foundation have to stand up to factions within Microsoft do just that. This is not the first time that I Microsoft team has taken something from open source. It's only the latest time and it's gonna happen again. That's almost a certainty. I want dotnet open source software to succeed I believe it needs to succeed. We're not in a closed source world anymore. But for it to succeed. It's got to be financially viable. For the maintainers, the people that put their hearts and their souls into creating these libraries and these frameworks that we use. And the only way that's going to happen is if the interest group we have the dotnet foundation puts all of its effort towards making that the goal. Now this incredibly depressing podcast, of course, is brought to you by myself, George Stocker. And I help teams double their productivity

through test driven development. You can reach out to me at www.doubleyourproductivity.io.

Transcribed by https://otter.ai

© 2020 Double Your Productivity