-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open Letter on the Visual Basic Strategy 2023 #620
Comments
Agreed |
Thank you. For now I just want to let you know that we do see this and appreciate the thought put into it. Will respond more fully later. |
Since this is 'fresh', perhaps I can offer a related perspective. Like the authors of this open letter, I don't see much value in many of the recent changes to C#. But the changes to the C# language don't bother me. I don't want VB to be C# with words. It's the changes to the framework that have broken VB that bother me. And that's certainly the vibe I get from most VB commentators. .NET is supposed to provide a language-neutral ecosystem that enables the peaceful co-existence of many languages. Microsoft long professed a commitment to maintaining VB as a "first-class" language within that ecosystem. Except some recent changes to .NET have been breaking changes with respect to VB.NET. There are examples on this forum, and elsewhere, that highlight examples of this. This letter highlights some affected areas. As long as both languages are targeting the same .NET version, a class written in (for example) C#, should be consumable without ceremony or 'hacks' in VB (or any other "first-class" language). And without having to write C# "proxy" shims. If .NET (the framework) is going to add new features such as those identified in the letter, then these features should be available for use by any "first-class" language. Otherwise, that language is no longer a "first-class" language. |
You are completely right with your letter. @skurth so you are absolutely right with your statemant and we agree fully to you. |
There is already a pre-release of the next VB.NET generation, called ModVB. It is forked from Roslyn by @AnthonyDGreen, the former PM of VB.NET before he left MS e years ago. ModVB willl go beyond all yopur expectations, not only at the syntax level like supporting JSON literals and patterns, but also it will provide support for AASP.NET core, Blazor, MAUI, so, VB.NET can get out the win desktop cage. |
Looks very exciting and thank you for the information. I was already familiar with ModVB, but I have only followed it peripherally. I would like to mention a few points to perhaps make our perspective a bit clearer: a) I think it's absolutely fantastic that VB is receiving so much love from the community, and that such cool projects are emerging from it. For us (as a company), it's especially important that we can continue to develop existing software (for us, WinForms and services). Therefore, it's more important for us to have advancements in the language itself, rather than necessarily having to come up with new workloads (Blazor, MAUI, etc.) with VB. Even if we would love VB support in those workloads ;-) b) This is again from the perspective of the company: I'm not sure if we can justify relying on features developed by individual persons or small teams, especially when they involve fundamental things like the compiler. We rely on the basics being stable and maintained, so that we can use these features. c) As you mentioned, ModVB is based on a fork of Roslyn. What happens if there are changes/corrections to Roslyn itself? Are these changes incorporated into the fork? This ties into the same point as b). Therefore, from the perspective of the company, it's more important for us to use widely supported products to develop our software. That's why we would prefer official adaptations to VB. Please don't misunderstand me, I think these projects are great and I will definitely be looking into them, but I'm not sure to what extent they should be used in professional software. But perhaps someone can alleviate my "fear" a bit ;-) |
@skurth
|
I will note that while small, Microsoft did publish this yesterday, which at least was a nice indication they notice we exist: https://devblogs.microsoft.com/dotnet/update-to-winforms-vb-appframework/ |
Your suggestions for how Visual Basic could be continued in a reasonable framework are interesting. The idea of accepting pull requests from the community for Visual Basic would certainly be a democratic and community-driven approach to development. An annual survey among Visual Basic developers on which features from C# should be adopted in Visual Basic could also be a valuable way to gauge the community's preferences. Finally, Microsoft determining on its own which features make sense in Visual Basic would likely ensure that the language continues to evolve in a way that is consistent with its existing syntax and features. In summary, it's clear that you have a passion for Visual Basic and believe that it still has a valuable role to play in the software development world. While I can't speak to Microsoft's plans for the future of Visual Basic, I appreciate your suggestions and hope that they will be taken into consideration. |
@VBAndCs In our company, there are dozens of computers that build the programs (developers, manual testing, automatic testing, build servers, etc.). It won't be easy to replace the compiler for all of them ;) I'm also not sure if it's worth it for our WinForms application. However, if it's for other types of projects, it may be different. @ocdtrekkie I don't think the last two comments are from Microsoft... Looks more like GPT-bots :( @KathleenDollard |
@skurth |
@skurth Ugh, looks like you are right. Ew. |
Our company has developed a large number of enterprise information management platforms using VB. NET, and we hope that Microsoft can continue to support VB. Net to keep up with the pace of modern languages. |
1 similar comment
Our company has developed a large number of enterprise information management platforms using VB. NET, and we hope that Microsoft can continue to support VB. Net to keep up with the pace of modern languages. |
Any news on this? @KathleenDollard From your updated strategy blog post:
Please do that, some important keywords are missing and would make it easier for so many VB devs. Once again, please re-think of your VB strategy. Thank you very much. |
@skurth Points I fully agree with: Points I don't agree with: I'm keeping my fingers crossed that Anthony D. Green succeeds with ModVB, and that this project can be sustained by contributions from companies, professional programmers, and enthusiasts. My wish is that Anthony D. Green can have an income that allows him to work full-time on the development and improvement of ModVB. With the constant emergence of new languages, tools, frameworks, etc., maintaining a project like ModVB will be much cheaper for companies and professional programmers than constant courses, training, or rewriting a project in a new language every day. The market and the fad of programming languages are keeping us in a loop of redoing what is already working for tiny improvements. What I think for VB.NET: I personally believe that following the example of B4X is better for VB than following the path of C#. I am still a VB.net student, but the main reason that made me fall in love with this language is precisely the syntax stability, easy understanding of long-standing code, and ease of learning. Being part of the future of VB is a great honor for me. The possibility of helping in its evolution will change my status from just a technology consumer to a contributor. New developers did not have the opportunity to know the great benefits and wonders of VB.NET, and taking advantage of this text, I want to congratulate a great master: Mohammad Hamdy Ghanem, for developing Small Visual Basic. It will undoubtedly be of great help in the promotion and learning of VB.net in the future. |
@cristianlt23 Thank you for your response. I'd like to clarify or mention a few points: Here is a point I don't agree with, specifically with Microsoft continuing to lead the evolution of VB. In my view, the most successful languages do not depend solely on a maintaining company but on a passionate and interested COMMUNITY. This is the case with Python, JavaScript, and to some extent, C#. What VB really needs is an ACTIVE COMMUNITY, not just pragmatic programmers. This culture needs to be initiated among VB developers. I think VB would have an active community, but because Microsoft does not accept language changes (better: additions) to VB, it's irrelevant anyway. If it were like C#, it would be great or at least better than it is now, which is essentially dead. As a company that relies on VB professionally, we are dependent on the fact that any (unsupported by Microsoft) further development is widely supported. From a company's perspective, we cannot commit to something that is only supported by a very small team. Therefore, it must be open-source and have an active community (as you mentioned), otherwise, switching would be too risky. I am still a VB.net student, but the main reason that made me fall in love with this language is precisely the syntax stability, easy understanding of long-standing code, and ease of learning. For me, VB is too great an artwork to be limited to just WinForms. For now, I am very satisfied with Asp.net MVC 5, but we will have to evolve soon. We use VB with .NET 7 as a Web API, so that's not a problem in principle, except that there's no template for it in Visual Studio. |
I know that Visual Studio is a closed source product, but I wonder how much we could do if Microsoft committed to making a community process for adding to and iterating on those templates. |
@ocdtrekkie |
@cristianlt23 @VBAndCs Thanks for the shout outs! @skurth I totally understand where you and your company are coming from. I agree that we need a stronger organization to shepherd VB, not one or very few individuals in the spare time. That said, you (and anyone else reading) should consider visiting the VB discord set up by @DualBrain to discuss your challenges and how you're overcoming them: https://discord.gg/DbSnQh9k @ocdtrekkie our challenges are really more political at this point than technical. This isn't 1998 or even 2008, so much is extensible and open source now we just need time/money/people/community. I try not to chime in too much here because this is still an MS space and it seems a little weird to talk about stuff that's outside of their "vision" for VB in their backyard. |
They're not using this yard, and I like to think that some "chiming in" from their former product manager should give them a kick up the rear to get their act together. |
I tried it twice that they add it: No luck :( |
As @AnthonyDGreen pointed out, yes, please join us on https://discord.gg/Y8EH5fF6WG and let's organize our community to make things happen. @skurth I have to confess my total confusion to the responses you got in those issues; I'm assuming that those were requests for MS to do the effort, but still. I'm also thinking that I've seen, somewhere, that someone talking about creating templates but I don't recall where (or know whether or not they ever did). |
That invite link is expired. |
This one (https://discord.gg/Y8EH5fF6WG) should be good to go, please let me know if it isn't. |
B4x is an active inheritor of the VB language. I am using it. B4X suite supports more platforms than any other tool |
What I want to say is that I hope VB is just one language, provided by the community for compilation on various platforms. |
Hello Everyone (including Microsoft), I have been a professional programmer for decades. In addition to VB and other non-C languages, I have programmed in C, C++, C#, Typescript, & Javascript. I know my way around the C syntax. But for the last 3 years, I have been building apps with VB.NET on VS 2022 targeting .NET 6/8 that run on AWS Lambda, Raspberry Pi, and, of course, Windows. Some of these apps are quite sophisticated, including involving Kestrel running both on Windows and Linux. I use Avalonia for UI on Raspberry Pi. For my SQL ORM I use Dapper exclusively on top of both SQL Express and MySQL. I chose VB.NET because I needed easy to read code that would be maintainable, stable, and rapidly developable. I would be very happy to share code examples on how I did all this, just connect with me via LinkedIn. https://www.linkedin.com/in/russ-johnson-96104846 (I do not have a Discord account.) As an example of how Microsoft is treating it’s so called “first-class citizen”, it has this statement in the System.Text.Json documentation: “Utf8JsonReader can't be used directly from Visual Basic code.” This is a direct insult to me personally. The Microsoft decision makers are either incompetent, ignorant or both. Perhaps Microsoft is too busy cleaning up the outage of the week to really support VB, but my experience tells me that the English-centric nature of VB is what is at the heart of the issue. Can someone explain to me why is “||” better than “Or” other than certain large economic markets don’t have English as their primary language? As a spin on an old quip, “I didn’t leave Microsoft, Microsoft left me.” Russ Johnson P.S. I also use B4x for Android, but that isn’t .NET. |
@SailAwayWine I believe the issue with JSON Reader at this point is the documentation which should be fixed. If not, it's not a VB issue its the .Net JSON library missing an API and a bug should be opened there. I use System.Text.Json extensively with VB and just use the available API's. VB is not considered a high-performance language so some optimizations available to C# are not available, do I like it no, does it affect no usage no.
|
@SailAwayWine Microsoft have clearly stated their intent to do the minimum necessary to keep VB functioning with newer versions of .NET. You will not get anything more than corporate weasel words out of them w.r.t. VB. There is substantial work underway to improve VB, but it's not happening at Microsoft. If you'd like to see VB developed, to contribute to the VB community, or to showcase your work to VB enthusiasts that would be interested in it, then the best place for it is probably the Discord channel mentioned above. Discord wouldn't have been my first choice, but it works really well, and is a lot more interactive than this forum. And a lot less "noisy" than LinkedIn. I don't know about other people, but LinkedIn is not somewhere I would go looking for programming language support - because I expect everyone there is out to make a buck. |
@paul1956 It won't compile due to an error: So the documentation is correct. This error is caused because VB does not support Span(of T). The use of Span(of T) is growing in the .NET framework. MS, referred to Span(of T) as a ".NET Mainstay" all the way back in 2018, further claiming "System.Span is a new value type at the heart of .NET. " So this issue isn't going away and perhaps will just keep compounding in every subsequent .NET version. To my knowledge, this is the only materially new value type in .NET that cannot be consumed by VB and that creates the only meaningful performance restriction . It would take one programmer at MS about 6 months to fully life-cycle the implementation Span(of T) in VB. I'm not sure if ModVB can or will address this when fully released, but if so, perhaps there is hope. |
@pricerc I agree LinkedIn is a hurdle, but I'm not sure how else to exchange contact info with someone genuinely interested in my code. |
Thanks, I don't actually use that function in my code. You would have a lot more luck adding a wrapper to VB, Microsoft will only add the feature to the language if a major paying company using VB for a Line If Business app needs it to upgrade. |
I just noticed that the existing discussions section on CommunityVB were kind of "hidden" (in the Main repo); I've corrected this. @SailAwayWine you could consider starting some conversations there. https://github.com/CommunityVB |
Dear Microsoft,
I have been a professional developer since 2006 and have been working for the same company since then. Starting with C/C++ (MFC), the main application was later extended with .NET applications, which are still maintained today and have thousands of users. These .NET parts are mostly written in Visual Basic and are based on WinForms (together with third-party tools from DevExpress, probably the most stable duo ever created). In the meantime, various web services (WCF and ASP.NET) have also been developed.
In 2017, there was a small shock with the release from Microsoft that Visual Basic will not receive the same updates as C#. With various other releases (including support for Visual Basic and .NET 5+), the shock was eventually overcome. In the meantime, we have even written a .NET 5/6/7 web service in Visual Basic (although there is still no template available in Visual Studio for this purpose). The project has several libraries and hundreds of classes in them. The only thing missing were the opportunities with Entity Framework, which is why there is a project for this in C#.
Are extensions also changes?
First of all: We are happy that Visual Basic does not have all the same changes as C#. With certain extensions in C#, we wonder who needs this? Or what is it for when you can write something abbreviated and save 1 second of typing effort, but then need several minutes to understand the code again half a year later. In our opinion, this has little to do with professional programming, considering how often you have to take over, read, understand, and expand other programmers' code.
Back to the question: Are extensions also changes? We believe that extensions are not the same as changes. We don't want breaking changes to Visual Basic. We also don't need new spellings for existing features, such as a new Select statement. We don't need primary constructors either. No file access modifier. No abbreviations for string manipulations. No minimal APIs. The list could almost go on indefinitely, and many new C# features would be included in it.
What we miss are simple features or keywords that are not covered in the current version of Visual Basic. To be specific, these are the following points:
As you can see, it is a very manageable list. Other Visual Basic developers will have some additional points, but we believe we all agree on what Visual Basic stands for. In our opinion, this does not change the syntax, it simply extends it. And in a tolerable way for all Visual Basic programmers (from beginner to professional). Nobody is forced to use these things. It also does not make the language itself more complicated; it simply simplifies the lives of professional Visual Basic developers.
Our suggestions
We have different ideas on how Visual Basic could be continued in a reasonable framework.
Microsoft also employs newer developers for whom such implementations would be excellent. They don't have to reinvent the wheel, but they have a certain template with C#. In addition, with "LangVersion" in the .vbproj file, everything is prepared to move forward with Visual Basic securely into the future.
A few words about Visual Studio
The specified strategy for Visual Basic in 2023 states:
We will continue to improve the Visual Studio experience for Visual Basic developers, such as providing analyzers, code fixes, and IDE productivity features.
That's great to hear, but in our opinion, it doesn't quite correspond to reality. For example, we miss IntelliCode (whole line completions). Also, and often opened as an issue (and closed every time), we miss a template for ASP.NET Core Webservice for Visual Basic. What has improved a lot lately (thanks!) are issues that concern refactoring or working in the IDE. There was a time when almost all issues regarding Visual Basic were directly closed, even if it didn't require any language change.
Summary
We hope it's clear from this text that Visual Basic shouldn't become a clone of C#. We also understand that Visual Basic is not supported in certain project types (Xamarin/MAUI, Blazor, ...), even if we would love it. Microsoft and Visual Basic should focus on project types where Visual Basic is strong (WinForms, web services, Windows services, ...). Nevertheless, we believe that certain features would make Visual Basic even stronger, without introducing the unnecessary complexity of C# in recent years from our perspective. We would like to thank Microsoft, especially the WinForms team, for supporting and maintaining Visual Basic for such a long time. Each of us can also program in C#, but we often choose Visual Basic because it is easier, clearer, and more understandable. It is the old, experienced, and smaller brother of C#, which does not tolerate every quirk, but in our opinion, still deserves to be maintained even in old age.
Best regards,
some professional Visual Basic programmers
Notes:
The text was updated successfully, but these errors were encountered: