vblang icon indicating copy to clipboard operation
vblang copied to clipboard

How to overcome VB death?

Open DzonnyDZ opened this issue 4 years ago • 48 comments

So, according to this post https://devblogs.microsoft.com/vbteam/visual-basic-support-planned-for-net-5-0/ on Microsoft's Devblog, VB.NET will be added to .NET 5 in a limited scope, but that's that. There's gonna be no further development of the language. VB has never had so much noise around itself as C# had, yet features have been added and language kept evolving. So relative silence about new VB feature maybe was not a warning sign for many. But the truth is that we didn't get parity of some cool features of C# which can mage language interoperability a problem (e.g. method implementation in interfaces).

I'm starting this thread to figure out what can be done to keep the best (.NET) language from dying.

a) Is there anything that can be done to reverse MSs decision, at at lest keep Microsoft formally in change of evolving VB.NET language, although majority of the work can be done by community. This would be good to avoid fragmentation.

b) If we as community are not happy about MSs attitude to the language, is there anything that would legally (copyrights, licenses etc.) keep us from further evolving the language? By that I mean forking all the relevant repositories, and starting do develop the language further, under a new name, such as many times proposed B# and ship it as a VS extension, bunch of NuGet packages etc. Are all the bits even Open Source (compiler, VS templates, VS integration, VB runtime - what did I miss)?

DzonnyDZ avatar Jul 22 '20 11:07 DzonnyDZ

Seems like B# is taken https://www.bsharplanguage.org/, so what about V#?

DzonnyDZ avatar Jul 22 '20 11:07 DzonnyDZ

Is there anything that can be done to reverse MS's decision...

Probably not. General-purpose programming languages aren't the big money maker they used to be (and haven't been for nearly two decades). Services and "big data" are where it's at for profitability. Hence, the only programming language development which matters to them are the ones which are immediately aligned with such. C# is central to .NET development, and .NET is central to how services get utilized. Atop that, Microsoft is actively pursuing business in the web/mobile market, which has long been (and still is) dominated by Linux, Java, PHP, and Python, users (with a smattering of C/C++ and Go).

... is there anything that would legally (copyrights, licenses etc.) keep us from further evolving the language?

There is leeway here. Patents expire in under 20 years, so the VB syntax might be (or soon will be) unencumbered. APIs are another story, being under copyrights, which may last roughly up to 100 years. However, since Microsoft has an interest in the ubiquity of .NET, getting permission or otherwise navigating fair-use probably won't be hard.

At minimum, since the Roslyn-based compiler is under MIT license (https://github.com/dotnet/roslyn/blob/master/License.txt), one can establish a new fork of it, code new features, and sell or share such newer versions. Anyone who is properly licensed to make use of VB version 16 can also legally make use of such forked versions.

The key to making something like that work: Somehow most VB.NET developers need to rally around one particular fork, and it would have to be a consortium of business owners to get such a thing started. They would have a shared immediate (commercial) interest in furthering the language, and so would naturally put in the regular level of effort needed to make progress.

...what about V#?

I like VB#, for the following reasons: (1) It's a proper nod to legacy (VB) and present (# for .NET); and (2) the file extensions, .vb and .vbproj have "vb" in them - so no need to change the stationery!

If you have any further thoughts on this, see if you can gin up some more conversation at https://gitter.im/VB-NET.

rskar-git avatar Jul 22 '20 13:07 rskar-git

Without Visual Studio WinForms forks of VB will go nowhere. Also many of the features of the IDE are common with C# VB benefits. VB bugs are being fixed, it is getting WinForms support. If anyone wants to write code-fixes (even VB specific ones) they are being accepted. What is not being accepted is new language features and that is a rock that needs to be addressed in conjunction with Visual Studio. One of my pain points was lack of UnChecked math, before the "No New Features" message I wrote support for VB for this, the PR was not accepted. In doing this I found the majority of the work was not the language change it is all the other stuff associated with Visual Studio some of which requires knowledge I don't have and is not easy to find. We should concentrate on getting 1 dedicated VB reviewer with "check-in" privilege's and not forking the Repo and a way to plug in the new compiler into Visual Studio without cloning the source and running an experimental version.

paul1956 avatar Jul 23 '20 10:07 paul1956

It is one thing to want to kill a language, it is another thing for the language to refuse to die and still grow.

See the month of July 2020

Jul 2020 | Jul 2019 | change | Programming language | Reviews | change

1 | 2 |   | C ------------------| 16,45% | + 2,24% 2 | 1 |   | Java----------------| 15,10% | + 0,04% 3 | 3 |   | Pitão---------------| 9,09% | -0,17% 4 | 4 |   | C ++ --------------| 6,21% | -0,49% 5 | 5 |   | C # --------------- | 5,25% | + 0,88% 6 | 6 |   | Visual básico------ | 5,23% | + 1,03% 7 | 7 |   | Javascript---------- | 2,48% | + 0,18

FONTE: https://www.tiobe.com/tiobe-index/

cristianlt23 avatar Jul 24 '20 03:07 cristianlt23

Unless MS changes their attitude at least a bit, forking will be necessary. The good thing is that we have where to start - so much is written in Roslyn, and VS uses Roslyn. My idea was to fork the Roslyn compiler, delete all stuff C# and common, for the common stuff depend on MS's package. With at leats some involvement from MS we may have issue making complete plug-in replacement (because of assembly identities if nothing else). So maybe it would be worth changing the namespaces in the new packages - essentially removing the "Microsoft" word, replacing it with VBSharp (if we agree on that name), also replacing all VisualBasic with VBSharp, and than replacing all VBSharb.VBSharp. And than finally take a look on all the features we want to include in the language! If MS does some fixes, with some amount of GIT magic it still should be possible to merge them from tier repo to our repo. Also, maybe for any serious work I'd wait until the .NET5 version is out, so we don't have to be thinking of merging the last huge bunch of changes.

DzonnyDZ avatar Jul 24 '20 14:07 DzonnyDZ

@paul1956

We should concentrate on getting 1 dedicated VB reviewer with "check-in" privilege's and not forking the Repo...

Yep, that would be nice. Of course, that would take some effort in locating and somehow engaging with relevant points of contact. I have a feeling though that whomever (or whomevers?) wishes to pursue that, they would need to be seen as a serious player and not some hobbyist or small-time developer. And, in any case, tracking down such points of contact and meeting with them and negotiating agreeable terms, etc., is certain to be a full-time job.

I've already prattled about how VB needs a business-owners led consortium etc. etc. so I'll stop here.

rskar-git avatar Jul 24 '20 15:07 rskar-git

Outsystems seems to have their own visual coding scheme which gets compiled (actually transpiled) utilizing C# and SQL (plus whatever else). I've never used their platform. They do allow you to utilize your own code into your Outsystems-based application, although it does seem to be C# only (https://success.outsystems.com/Documentation/11/Extensibility_and_Integration/Extend_Logic_with_Your_Own_Code/Extensions). Even so, since they are using .NET, it should be possible to use VB.NET or F# as well as C#; although I wonder if C# glue-code is needed.

I'm not sure how they would see VB.NET as being anything essential to their business model. The core technology they're selling is a "code-less" programming tool that could do at least 80% of the job, and (presumably) can be utilized by savvy non-programmers. Yet, if a customer needed a little more than such a tool could offer, that's where Visual Studio can already fill such gaps, involving actual programmers.

rskar-git avatar Jul 25 '20 12:07 rskar-git

rskar-git

All right?

The suggestion of Vb.net to be part of the dialects of compilation of external systems like Outsystems, would be just to try to increase the interest of the beginner in programming by the VB.net dialect and taking advantage of the platform's marketing to also increase its visibility, it would only be for marketing same. 😊

In fact, VB.net does not need more popularity, it is always among the 10 most used languages ​​in the world, what VB.net really needs is an active and committed community, but I venture to say why it doesn't.

VB.net does not have a large community because it is:

  1. VB.net is highly stable;
  2. VB.net until today in 2020 is super competitive;
  3. VB.net is easy to learn;
  4. VB.net really solves 98% of the challenges for which it was designed.

“Maybe being very efficient, practical, easy and productive was his biggest failure”

So who is currently decreeing his own death is VB.net himself for being very good and simple, he does not generate major difficulties for the developer, VB.net is just fantastic.

Sometimes I believe that all this is a strategy of Microsoft itself, with time VB.net will really be at a disadvantage and at that moment a multitude of users around the world will be able to stand up and act, at that moment maybe a completely active and professional with several significant contributions to improve the dialect.

I believe that for MS to keep 3 dialects always competitive is really costly, in that sense, leaving your best dialect provably stable and modern being managed by a community would be interesting, because while MS focuses on C # the VB community focuses on VB.net

"We don't see the community worrying too much about the dialect, that is because it is very good."

I think that the path of VB.net is no longer in the hands of MS, but in the hands of lovers of the dialect and who knows in the near future we will also be an IDE?

Python has returned to being a cutting-edge language thanks to its community, remembering that Python was more than 10 years in oblivion.

Honestly, I don't know why in 2020 I started studying VB.net even though I knew all these decisions from MS, in my case it would be natural to choose C #, but for reasons unknown on my part I ended up choosing VB

The fad requires constant change to generate revenue and VB.net is very perfect, a ready product, a superior product and MS knows that because it is very good it will not generate much revenue.

The constant changes in the world of development is really very stressful, I think to myself that it would be much better to always evolve what we have in hand, I have a feeling that VB.net is not dying but being born with incredible strength since its community really desires.

cristianlt23 avatar Jul 25 '20 14:07 cristianlt23

I, on my part, will continue to study and invest in VB.net and who knows in a few years I may be contributing to the evolution of the dialect? it's a possibility.

MS may abandon this beautiful product for business reasons, but developers do not need to behave the same way.

I really hope for the emergence of a VB.net community

texto original em Português Brasil - tradução realizada automaticamente por aplicativo

Eu de minha parte vou continuar estudando e investindo no VB.net e quem sabe daqui uns anos posso estar contribuindo para a evolução do dialeto? é uma possibilidade.

A MS pode abandonar esse lindo produto por questões de negócios, mas os desenvolvedores não precisam ter o mesmo comportamento de pula pula.

Torço muito por um surgimento de uma comunidade VB.net

cristianlt23 avatar Jul 25 '20 15:07 cristianlt23

@cristianlt23

Python has returned to being a cutting-edge language thanks to its community...

Yes, that's mostly true. However, Python was very deliberately transformed from a proprietary product into a public-service product (see history section of https://docs.python.org/3/license.html), sometime about 2001, with the establishment of the Python Software Foundation. The stated mission of that foundation is: "[A]n organization devoted to advancing open source technology related to the Python programming language".

From various readings, I got the impression that the developments of Linux and Python were symbiotic. Linux was an attractive way to repurpose otherwise obsolete IBM-PC compatible computers, especially as cheap no-frills servers and large-scale numeric processors. Python began as an interactive tool for numeric processing, with a syntax nicely aligned with the sort of math used for such work, and, of course, it is otherwise a very competent general-purpose scripting language. The rise of Python is largely due to its relationship with Linux, at first for academic reasons, and eventually, with so many people learning Python and Linux at schools, for commercial reasons. Linux and Python were (and still are) free software (free as in "free beer"), and there was (and still is) a growing set of people who knew (and know) how to utilize Linux and Python available for hire; for those reasons, Linux and Python became very compelling technology choices for commercial purposes.

Python, created in the early 1990s, was made to serve the needs of its creator (Rossum at CWI). It is roughly about the same age as Visual Basic for Applications (VBA). VBA (and VB6) was made as a salable product for use by others; its creator had no other purpose for it. Python largely evolved, and continues to evolve, to better serve the needs of its creator and sponsors. VBA/VB6 evolution was in terms of return-on-investment (ROI) calculations of a salable product, so when ROI becomes less compelling versus other endeavors, the product either gets reduced efforts or discontinued.

VB.NET shares the same arrangement as VBA/VB6: A salable product for use by others. By February 2017, Microsoft telegraphed their ROI assessment of VB.NET (https://devblogs.microsoft.com/dotnet/the-net-language-strategy/, https://devblogs.microsoft.com/vbteam/digging-deeper-into-the-visual-basic-language-strategy/). It may take a while for avid VB.NET users to fully absorb and comprehend how that "salable product" history affects general perception and expectations about it. In any case, Microsoft is clearly winding down efforts spent on VB.NET (version 16 marks their end of new features); after .NET 5 compatibility is (sufficiently) reached, it'll be perfunctory from that point on (e.g. major bug and security fixes).

The one advantage that a VB.NET practitioner has over VBA/VB6 ones is that VB.NET is open-source, and so one can enhance and customize it. VB.NET can indeed live on and grow with such an organic start; just start doing interesting things with it, and share your VB.NET changes with others. Over time, such a community can grow and be influential. For anyone seriously interested in taking up the cause for continuing the evolution of VB.NET, the way forward is to establish a relationship with the .NET Foundation, probably starting with the Roslyn project (https://dotnetfoundation.org/projects/dotnet-compiler-platform).

rskar-git avatar Jul 26 '20 15:07 rskar-git

@rskar-git unless the maintainers of Roslyn allow feature additions to be merged it is an impossible task. I put in the last feature into VB16, comments after _. I have been successful with adding improved VB support to WinForms, CodeFixes and editorConfig because they didn't really add new language features. There are VB solutions to handle C# Ref Returns and Async For Each (though not well known) so they are not a showstopper anymore but I am worried if future libraries use features that make them inaccessible to VB. VB having uncheck math is something I started on before the Feature moratorium and the Unchecked function part works very well but Unchecked block requires more in-depth knowledge of Roslyn and a "Buddy" which doesn't exist and no one will even look at unchecked functions. I am open to how to use the .NET Foundation to address the issue.

paul1956 avatar Jul 27 '20 02:07 paul1956

@paul1956

I made a comment according to the link below. https://devblogs.microsoft.com/vbteam/visual-basic-support-planned-for-net-5-0/#comment-318

I think that after MS makes the last changes to Vb.net the community needs to be born strongly.

Viability depends on good projects to delight Roslyn.

The largest base of VB.net programmers are busy solving day-to-day problems and are not even in this forum discussing the future of VB.net, but through good publicity on social networks explaining what is really happening with VB. .net I'm sure many have joined the community.

But these programmers don't have the necessary knowledge to help with development, how can they help? in this case, a monthly contribution of 1 dollar would be more than enough for the community to have a team 3 times larger than the C # development team for example.

In return, the Community creates a good portal for news, information, tips, forum, being multilingual in English, Portuguese and Spanish (in fact the more languages ​​the better for popularity). I believe that this would really suffice to place VB.net always among the 3 biggest languages ​​used in the world.

cristianlt23 avatar Jul 27 '20 03:07 cristianlt23

I will post an article on how the programmers' salary behavior is here in Brazil. use the translator

Python has been taking over the space left by VB.net.

The important thing about this article is that it is still among the 10 most preferred and useds.

https://www.tecmundo.com.br/produto/152975-linguagem-programacao-oferece-melhor-salario.htm

Hiring Market

Java: 2.069 job vacancies https://www.catho.com.br/vagas/?pais_id=31&q=java

Javascript: 2.038 jobvacancies https://www.catho.com.br/vagas/javascript/?q=javascript

Python: 905 job vacancies https://www.catho.com.br/vagas/python/?q=python

C# 1.030 job vacancies https://www.catho.com.br/vagas/csharp/?q=c%23

VB.net :79 job vacancies https://www.catho.com.br/vagas/vbnet/?q=Vb.net

VBA: 167 job vacancies https://www.catho.com.br/vagas/vba/?q=vba

VB6: 111 job vacancies https://www.catho.com.br/vagas/vb/?q=vb

Taking into account that Catho is not the biggest recruiter, the biggest source in Brazil would be Linkedin

On Linkedin: job vacancies

Java; 4.000 vagas JavaScript: 5.000 vagas Python: 2.000 vagas C#: 1.000 vagas VB.net: 266 vagas Vba: 321 vagas

Python today took over the vacancies that were previously from the VB world.

cristianlt23 avatar Jul 27 '20 12:07 cristianlt23

I think VB.NET has no issue as a language, and can be used as it is for decades. The real problem is that it is kept away from other platforms and new techs like ASP.NET Core, Blazor, Xamarin. This is why the interest shifted to C#. The issue was not in the language, but what can you use if for. So, if we want to rescue VB, we must make it run everywhere C# can. This is why I experimented with Vazor and ZML as alternatives to Razor to write ASP.NET Core apps with VB.NET. We need to concentrate on the APIs not on the lang right now. If programmers can do all what they want with the lang, it will live, regardless its syntax. The ugly C++/C# syntax has already proven that!

VBAndCs avatar Jul 27 '20 12:07 VBAndCs

@VBAndCs : but Paul is right, either MS does the work of adding that kind of support, or the community does. And for the community to do so, it needs someone that can say "yes". Otherwise, even if it's just a nuget package that needs to be added, it's a nuget package from some random internet crazy, at best a mayfly that's gone in a month, at worse malicious. A business isn't going to want to base it's future on either.

jrmoreno1 avatar Jul 27 '20 20:07 jrmoreno1

@VBAndCs I agree in principle, but even if the development team was 10X the size of the C# team nothing happens without Merge ability into Roslyn and the gate to that is Microsoft.

paul1956 avatar Jul 27 '20 22:07 paul1956

@paul1956 , @VBAndCs

Could this gateway to Microsoft be facilitated by Anthony?

cristianlt23 avatar Jul 27 '20 22:07 cristianlt23

@cristianlt23 no idea, I have no way to get a response from him.

paul1956 avatar Jul 27 '20 22:07 paul1956

@cristianlt23 : I think if he thought he had the kind of pull necessary to get a someone to say yes, he wouldn't have written his open letter to MS (https://anthonydgreen.net/2020/03/19/part-v-an-open-letter-to-microsoft-ceo-satya-nadella-on-the-matter-of-his-words-and-the-company-he-leads/). I would expect a letter like that to result in either greatly more or greatly less influence than before...

jrmoreno1 avatar Jul 27 '20 22:07 jrmoreno1

@jrmoreno1

it is true :(

cristianlt23 avatar Jul 28 '20 00:07 cristianlt23

Anthony posted a promising post yesterday, but he didn't say much about his intentions: http://anthonydgreen.net/2020/07/27/resume-next/

VBAndCs avatar Jul 28 '20 01:07 VBAndCs

I think we need to take a look at this RoslynPad: A cross-platform C# editor based on Roslyn and AvalonEdit. This can be an open source alternative to VS.NET written in C# (VS code is written in TS). We can:

  1. Convert the source to VB if we want.
  2. Make the editor support VB.NET.
  3. It will be smarter to create a language server for VB.NET to support Intellisense in dozens of editors. so, we get step 2 out of the box.
  4. support all frameworks such as ASP.NET Core, Razor, Blazor, EF Core, Xamarin ... etc in RoslynPad. Having an os editor and a language server will make this easier than extending VS.NET.
  5. Evolve a new VB.NET compiler for our customized editor.

VBAndCs avatar Jul 28 '20 10:07 VBAndCs

There already is a way to get editors to understand multiple languages (sorry I forgot the of the one that GitHub uses but here is an example that supports VB https://prismjs.com/#supported-languages) they are open source projects and is how GitHub allows the code below. GitHub's hasn't been updated for VB in a very long time (years) but it seems to support all the VB language feature through VB16 and they are open to accepting additional syntax if needed. If you use WordPress for example you can include VB code and get if formatted without you doing any work using https://github.com/mkaz/code-syntax-block#:~:text=GitHub%20-%20mkaz%2Fcode-syntax-block%3A%20A%20WordPress%20plugin%20which%20extends,nothing%20happens%2C%20download%20GitHub%20Desktop%20and%20try%20again.

For i as integer = 0 to 10
  J = i - 1 _ ' Comment
         + 1
Next i

Let's not reinvent the wheel If you want a Language server for VB you can port the C# version https://microsoft.github.io/language-server-protocol/ and add VB. My translator does a reasonable just of porting the one above to VB. but it will require cleanup and understanding the VB Grammar. They will accept additional languages.

paul1956 avatar Jul 29 '20 02:07 paul1956

I walked around the VB.net communities in several countries and they are really static, no one mentions about the subject "VB support, net" ....

Aren't you worried? Doesn't that matter? is the dialect good as it is?

To say that there are not enough developers on VB.net is silly, or is the dialect really abandoned?

Right here in this discussion we are 6 people .... the vblang contributors haven't said anything yet.

what happened ???

cristianlt23 avatar Jul 29 '20 21:07 cristianlt23

@cristianlt23 What "vblang contributors" are you referring to?

paul1956 avatar Jul 30 '20 00:07 paul1956

@cristianlt23 We have discussed this issue months ago, and there is a new implementation alternative to and compatible with VB.NET named Mercury (see closed issues). You need to look back to previous issues. such as this: https://github.com/dotnet/vblang/issues/497

VBAndCs avatar Jul 30 '20 07:07 VBAndCs

@VBAndCs

"You need to look back to previous issues. such as this: #497"

thank you very much

cristianlt23 avatar Jul 30 '20 10:07 cristianlt23

@paul1956

"A que "contribuidores vblang" você está se referindo?"

I was referring to the forum moderators or administrators

cristianlt23 avatar Jul 30 '20 10:07 cristianlt23

VB.NET is already a very rich language. However perceptions matter and the perception of many companies right now is that Microsoft has killed VB.NET and the language has no future...it is something that Microsoft has been ruthlessly driving home in the false belief that VB.NET developers would ditch VB.NET and start using C# instead; so .net would become like JavaLand that has one language Java driving the entire ecosystem.

Returning to the main question: What can we do to make Microsoft change.its mind? Nothing. Microsoft will not change its.mind...unless a more VB-friendly or more balanced team evolves at Microsoft and.that will take time as people move out and new.ones get hired.

What can we do to avoid VB.NET Language death? VB.NET will never fully die completely...at least for now. But we need to

  1. We need to appoint a committee from the community of those who have knowledge.in this work and appoint a project manager from that committee to chart a direction and liaise with the official VB.NET PM at Microsoft when necessary.
  2. We need.to encourage formation of user groups and organize our own online conferences to discuss everything VB and raise awareness that VB is still here and can still do kool things.
  3. We need a fork of Roslyn...it cannot be avoided as long as the official MS team will accept no new feature suggestions and we do not expect that all existing features will be ported either.. The new fork.can remain open source but will aggressively implement new features and could be sold as VBx (x=extended) or VBnt (nt=New Technology) to differentiate from the official Microsoft version while still acknowledging it....it would be an community driven initiative and would.not draw heavily on 'Microsoft's scarce resources '

VB.NET will not die. Even as we speak, some.community members have know-how already are putting together a new commercial grade compiler and IDE for VB.NET that goes beyond what Miceosoft wants to give.

If we act now and place.the revised product property, we can be sure to leverage the millions of lines of VB Code out there and still have a vibrant following.

The onus is on us because mucrosoft will not change its.mind anytime soon and we should not lose more time.

salelele avatar Aug 03 '20 06:08 salelele

VB.NET will not die. Even as we speak, some.community members have know-how already are putting together a new commercial grade compiler and IDE for VB.NET that goes beyond what Miceosoft wants to give.

@salalele This is fantastic! My congratulations and thanks for this information!

The community must launch a very strong slogan to say that VB.net is the most productive and friendly language for the rapidly developing business world.

This should be our main door, companies will not mind contributing if VB.net continues to be an easy to learn and highly productive language.

Let's make VB.net the language of choice for VB6 and VBA programmers.

The business world prefers VB.net!

cristianlt23 avatar Aug 03 '20 15:08 cristianlt23