dotnet / vblang

The home for design of the Visual Basic .NET programming language and runtime library.
286 stars 63 forks source link

Independent VB development team? #492

Open WolvenRA opened 4 years ago

WolvenRA commented 4 years ago

I'm beginning to wonder if maybe the VB community needs to create an independent VB development team. The team would need to consist of sub teams that work on the various components of the entire development tool chain. If I'm not mistaken, (although I could be), it seems like pretty much the entire tool chain for .Net and .Net Core is supposedly Open Source... but I don't know about the Visual Studio IDE. VS Code is open source but it doesn't contain a number of the components needed to create the entire solution\package.

In any case, why couldn't we make a Fork of the entire development tool chain and control our own destiny? Including incorporating VB into the new .Net Core web development pieces (MVC, Web API, Razor, WebForms, etc.) as well as other portions of .Net Core. In short, Actually Fulfilling the promise Microsoft gave us at the beginning of .Net to keep VB essentially equal to C# through their "Co-Evolution" strategy.

The reason I think we might need to do this is because Microsoft is clearly bailing out of their commitment to VB. While I think this is complete cowardice and blatant treachery on Microsoft's part, we have to face the facts. Just as they shafted the original VB developers, they are now heading down the same path with the VB.Net developers. And just as it cost them thousands of loyal VB developers, I have no doubt it's going to cost them thousands more loyal VB.Net developers. But apparently Microsoft doesn't need the VB.Net developers or the millions of business clients using applications written in VB.Net... (Python anyone?)

I think one of the reasons we don't see as much participation in this Github VBLang community is because most VB.Net developers are business application developers... not system developers. i.e. we don't write Compilers, OS's, Runtimes, Drivers, etc... Consequently most of us (myself included) don't have the background or experience to be able to actively participate in the development of Roslyn, the Framework, the CIL, the Runtime, the VB Compiler etc.. Nor the time. We counted on Microsoft for that. Hard to imagine why we feel stabbed in the back...

Apparently we will have to step up and do it ourselves. While I'm sure I could learn how to help write all these development chain tools, I quite frankly don't have the time or desire. BUT! Since I'm sick and tired of being dependent on an unreliable Microsoft, I would be willing to pay a reasonable annual fee to an INDEPENDENT, DEDICATED, COMPETENT, VB Development team to do it for me.

So, How many others would be willing to support such a team?

Question for Kathleen or one of the other top MS people... How many developers does MS actually have working on the various .Net components specifically for VB?

WolvenRA commented 4 years ago

P.S. I want to make clear that I'm not trying to disrespect, discourage or blame the current Microsoft developers working on VB.Net. I don't think Microsoft's quietly shoving VB.Net to the side is their fault. I'm sure it's a decision being made higher up the corporate ladder.

paul1956 commented 4 years ago

My biggest concern was the closing of VB Prototype "Checked expressions"

41104 by Jared Parsons with the comment. Who is the "We" in the statement below?

We do not accept unexpected language feature pull requests. Please follow the documented policy for adding features to the language.

I don't want to see a fragmented VB language and comments like that and this topic will lead to that.

WolvenRA commented 4 years ago

I don't want to see a fragmented VB language either... But if Microsoft is not going to keep it current with new technologies, then what choice do we have? As I see it, the only other options are to A: learn another language, or B: accept being relegated to merely supporting what will become "legacy" applications. I don't find either of those acceptable when we have a third option... the one I outlined above.

Ideally MS would wake up and realize they can't afford to keep losing developers and all of the businesses those developers provide software for. Unfortunately, big profits cloud their thinking...

Padanian commented 4 years ago

I actually don't mind see VB being fractured to pieces. It already happened elsewhere in the past: from ashes of a project, new and more fruitful ones blossom.

RevensofT commented 4 years ago

Why not modular model ? when we import (maybe call it plugin) dll, it add new language feature from community.

Plugin Recursion.dll

Function Factorial(Input As Int32) As Int32
      Dim Output = 2
      Recur Until Input < 3
            Output *= Input
            Input -= 1
      End Recur
      Return Output
End Function

Harmony project maybe a good example to do this. https://github.com/pardeike/Harmony/wiki

tverweij commented 4 years ago

I think one of the reasons we don't see as much participation in this Github VBLang community is because most VB.Net developers are business application developers... not system developers. i.e. we don't write Compilers, OS's, Runtimes, Drivers, etc... Consequently most of us (myself included) don't have the background or experience to be able to actively participate in the development of Roslyn, the Framework, the CIL, the Runtime, the VB Compiler etc.. Nor the time. We counted on Microsoft for that.

I agree 100% - that is why I contacted others that can do it; with already 5 other langugaes with a shared compiler, the only work they have is to add the language syntax and the specific VB things. Instead of starting blank, my idea was to start with professionals that know what they are doing. No for free, but at this moment I am paying Microsoft too (and for what?).

tverweij commented 4 years ago

I don't want to see a fragmented VB language

Is there another choice? No request is accepted, Core does not work proper (yet?), mobile development is impossible, web development has been taken away. If I look at our PM's twitter, I see C# instead of VB. (look at our previous PM's twitter; it is all about VB as you would expect from our PM).

So my hopes are gone. Microsoft won't help us.

TeddyAlbina commented 4 years ago

I don't want to see a fragmented VB language

Is there another choice? No request is accepted, Core does not work proper (yet?), mobile development is impossible, web development has been taken away. If I look at our PM's twitter, I see C# instead of VB. (look at our previous PM's twitter; it is all about VB as you would expect from our PM).

So my hopes are gone. Microsoft won't help us.

No one want to do mobile apps with VB.net

Padanian commented 4 years ago

I do, why not?

tverweij commented 4 years ago

No one want to do mobile apps with VB.net

As I see your profile, you are doing only C#, so it's just YOU don't want to do mobile (or whatever) with VB.

StefanDirnberger commented 4 years ago

We develop mobile apps with VB.Net, too. But a much better support with Xamarin and VB.Net would be very helpful

Hamenopi commented 4 years ago

My company develops mobile and desktop apps in vb.net

On Wed, Feb 5, 2020 at 9:29 AM StefanDirnberger notifications@github.com wrote:

We develop mobile apps with VB.Net, too.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/dotnet/vblang/issues/492?email_source=notifications&email_token=ACDXH6KL5PSU6NUE7V6ATM3RBLLMBA5CNFSM4KQDGGU2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEK32ZMQ#issuecomment-582462642, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACDXH6MJUR5XUPPQMX4HGFLRBLLMBANCNFSM4KQDGGUQ .

AdamSpeight2008 commented 4 years ago

From my experience the Roslyn developers can be downright hostile, to potential contributors, who have little experience with the codebase. Documentation is lacking, especially "internal" tools, for example the "syntax.xml" and "BoundNodes.xml" has little explanation. Often having to use trial-error to make any changes or progress. The tools that is to build the syntax and bound nodes for the languages, doesn't produces, contextually meaning diagnostic error messages. Instead it produces errors when you compile the resultant outputs. An historical record of design decision, would help to understand the rationale behind them, at the time.

I have and do, implement prototypes of feature, would use and like. Yet don't yet have the skill or knowledge to convert them into a viable feature, That could be added to a "official" version of the language. Tried to follow their procedure of submit proposals, and it feels like shouting into a dark empty office. The computer power lights are on, but nobodies in. It is not an environment the cultivates the small number of programmers interested in compilers. Encouraging them and helping them to learn. Eventually it becomes "whatever", disinteresting and murders to passion that they had for both languages VB.net and C#.

WolvenRA commented 4 years ago

Isn't it interesting that a number of the more popular "new" languages have a VB style syntax? Specifically, NO CURLY BRACES! Python, Nim, Julia, and others. Isn't it also interesting that Microsoft is spending a LOT of effort to support and promote Python which is very similar to VB.Net, while at the same time trying to sideline VB.Net which is far superior to Python... Why? If they would support and promote VB.Net with .Net Core which will enable VB.net to be used cross platform, I believe VB.Net would become more popular than Python.

tverweij commented 4 years ago

I am afraid they just did the math. Beginners go to VB - and a lot of people just stayed there because VB could do almost anything. source: https://devblogs.microsoft.com/dotnet/the-net-language-strategy it states that:

An interesting trend we see in Visual Studio is that VB has twice the share of new developers as it does of all developers. This suggests that VB continues to play a role as a good, approachable entry language for people new to the platform and even to development.

and:

However, outside of VB’s core scenarios many undoubtedly switch to C#

So the less VB can do, the more users will switch to C#.

Tiobe index this month: VB: 5.8% C#: 5.9% Together: 11.7%

This will make C# the third language instead of the fifth. And the less VB can do, the less they have to support, so they can put the resources on C#.

tverweij commented 4 years ago

And if you read this: https://devblogs.microsoft.com/vbteam/digging-deeper-into-the-visual-basic-language-strategy/ Yes, from Anthony, not Kathleen, you read that everything outside Windows development is off limits for VB. They DID communicate it. We did not (want to) see it.

VB is Winforms and WPF. And that's it. For everything else, you need C#.

WolvenRA commented 4 years ago

Why should anyone switch from VB to C#? Up until recently there wasn't anything you could accomplish in C# that you couldn't do in VB. Yes, I realize you could play with toy pointers (not REAL pointers like C or C++), but you don't need pointers to accomplish the task... which is why they're not in VB in the first place.

Not only could you do anything you needed in VB, but once compiled there wasn't any difference anyway. Why use ugly syntax if you don't have to?

tverweij commented 4 years ago

Those are the words of Mad (nice name in this context btw), not mine. Microsoft thinks VB is just an entry level language, and when you want more you switch to C#. Again, not my words.

paul1956 commented 4 years ago

VB has always been more than a compiler. Microsoft is going a good job making sure the IDE (codefixes) continues to have parity between VB and C#. A lot of work is going on getting WinForms to work for VB which is a lot more complex then C# because the IDE and WinForms and VB are all tangled together. I don't need many new features in VB except to make sure it can consume all Core libraries. I would like to see unchecked math built in and a few other things but I'm OK with the language being behind C#, VB should not be a "pioneer" here.

paul1956 commented 4 years ago

BTW it look 18 months from the time I proposed adding "Comments after Line Continuation" until it was in VB 16. Microsoft added another feature at the same time (one I have no idea why it was added and I have seen no document about). I am working with someone to improve VB formatting which I started mid-2019 and some day it will get integrated. Because there is little documentation on the formatter I can't make progress myself and that will be the problem just splitting the language. If you want a feature following the painful process does work.

WolvenRA commented 4 years ago

Personally, I want the option of developing cross platform and mobile apps in VB.Net. I find it interesting that at the same time that VB.Net has been climbing in popularity over the past few years we began hearing more howling and hating from the C# crowd. Did someone see the writing on the wall and realize that if they didn't do something VB.Net would become the #1 preferred .Net language?

vbcodec commented 4 years ago

MS pushed VB into 'discourage phase'. Reason for this is not language itself, but tools. Making VB tools for each platform (Xamarin, ASP NET, Azure, Blazor, etc) require heavy investment, new teams and more complex structure of these tools, to handle two different languages. Keeping in mind that tools for C# now require all possible resources, and these tools are far from mature / polished, it is highly unlikely that MS will split these resources for two languages. Current policy for VB is to enable it in platforms only where tooling requirement is minimal.

if some Independent VB development team will take risk and create (paid) VS extensions with tools, then MS could eventually transfer some newest features from C# to VB, IMO.

WolvenRA commented 4 years ago

MS had 39.2 Billion in Net Income last year (2019). They certainly have the money to add VB.Net to the new platforms. If they need to add new developers for those tools, they certainly have the resources to hire them. It's not a matter of lack of "resources". It's simply a matter of will, and honoring your commitments.

Hamenopi commented 4 years ago

In my experience, I can't find a vb dev anywhere near me in Texas but there's a ton of applicants from India. We ended up opening an office in Gift city and now I'm making videos on how to use LINQ and lambdas and such.

On Wed, Feb 5, 2020, 8:01 PM WolvenRA notifications@github.com wrote:

MS had 39.2 Billion in Net Income last year (2019). They certainly have the money to add VB.Net to the new platforms. If they need to add new developers for those tools, they certainly have the resources to hire them. It's not a matter of lack of "resources". It's simply a matter of will, and honoring your commitments.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/dotnet/vblang/issues/492?email_source=notifications&email_token=ACDXH6KAVMHTZNMURPYX6HTRBNVRHA5CNFSM4KQDGGU2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEK5U6BQ#issuecomment-582700806, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACDXH6LGVDPMHMQNT3YQAULRBNVRHANCNFSM4KQDGGUQ .

paul1956 commented 4 years ago

@Hamenopi Interesting, I have posted resumes looking for VB.Net jobs and all I get are C# sometimes when I look at other .Net jobs they want VB experience. The .Net confuses the search engines.

WolvenRA commented 4 years ago

@Hamenopi What kind of application are you building?

zspitz commented 4 years ago

VS Code is open source but it doesn't contain a number of the components needed to create the entire solution\package.

What pieces are missing? I think having a cross-platform, .NET Core-based toolchain leveraging open parts like VS Code would be a great first step, much like OmniSharp pushed forward the development of .NET Core.

WolvenRA commented 4 years ago

I'm not sure what all of the pieces missing from VS Code are... I'd have to find the article that I read explaining which pieces were missing. Basically it said you could Edit, Run and Debug your code but things like creating an install file and a number of others weren't there. I did read another article saying that pieces are being added and it's getting closer all the time. Although I don't think the added pieces were for VB.Net in particular.

I do agree with Paul1956, it would be MUCH nicer if MS would just add the functionality we're looking for. They can hire the developers and play nicer with the open source developers to do the work.

Padanian commented 4 years ago

Yes, from Anthony, not Kathleen, you read that everything outside Windows development is off limits for VB. They DID communicate it. We did not (want to) see it.

You mean the same article where I read: "bridge existing applications into mobile and [...]new services optimized for the cloud from the ground up [...] align very strongly with F#[...]"

And yes, they communicated it, but they publicly denied allegations (or minimised to avoid concern) while privately regretting that choice.

vbcodec commented 4 years ago

MS had 39.2 Billion in Net Income last year (2019). They certainly have the money to add VB.Net to the new platforms.

Business do not work this way. Every department have his budget, goals, agendas, and their primary task (management level) is make profits, maintain / expand marketshare and fully exploit every opportunity that currently exist or will exist in foreseable future. Seems that current model (expanding C# with tools / maintain VB with current tools) is best from organisational / financial POV.

Making perfect world is not target for business

rrvenki commented 4 years ago

Personally, I want the option of developing cross platform and mobile apps in VB.Net. I find it interesting that at the same time that VB.Net has been climbing in popularity over the past few years we began hearing more howling and hating from the C# crowd. Did someone see the writing on the wall and realize that if they didn't do something VB.Net would become the #1 preferred .Net language?

We do Xamarin (C#) for cross platform all these days. But now we are able to develop UWP/WPF/WinForm using .NET Core 3.1 and distribute to all platforms via Windows Container (Windows Nano Server). Once we get Windows support/Docker in Android it will be a spot on.

paul1956 commented 4 years ago

I did a Xamarin Hybrid VB app a last year, the GUI was in C# translated from a WinForms app so it does work. The majority of the code was a VB class library with a very small front end to provide the GUI.

Everything in WinForms run-time is open source, the designer is another issue. If the community wants to port WinForm to Cross platform that would be an interesting contribution, it would be a direct competitor to Xamarin so not sure how much support you would get but without the designer and IDE I don't imaging there would be much interest in VB. When MsgBox was not available for Core 3.x I ported it as a NuGet, I also borrowed "My" out of the repo when I could not wait for Core 5.0 so it is possible get almost "full" VB run-time functionality today. I think we need to figure out the process to get VB compiler PR's through a process completely controlled by Microsoft to enhance VB and not split the baby.

Happypig375 commented 4 years ago

@paul1956

If the community wants to port WinForm to Cross platform that would be an interesting contribution, it would be a direct competitor to Xamarin

That will not happen. Evidenced by Mono's implementation of Windows Forms on Linux and Mac since the creation of .NET, everyone can recognize the out-of-place "Windows design". As a result, nobody wants to use Windows Forms outside of Windows. Bringing WPF will be a better choice. Even then, Xamarin.Forms is already filling that gap.

ocdtrekkie commented 4 years ago

I would be very interested in Xamarin if Xamarin supported desktop platforms. (And I'm still confused why anyone bothers considering it a cross-platform anything as long as it doesn't.)

paul1956 commented 4 years ago

@Happypig375 I lump WinForms and WPF in one bucket but generally I agree. Getting Xamanin to support VB "better" would be a better choice. Getting Xamarin on Windows is another opportunity. @ocdtrekkie The one Xamarin product I worked on used Xamarin on Apple and Android and WPF on Windows but the UI was trivial the majority of the code was a backend in VB that did the work, I wish I would have been able to use Xamarin for everything, it was an internal utility that look a little input and presented a simple list of results to the user. The Windows desktop version had more features that I never got around to porting.

VBAndCs commented 4 years ago

@WolvenRA I said all what you're saying here and more, but in vane. But there is a hope: I suggested to use VB literals instead of Razor syntax to create ASP.NET Core apps with VB.NET and Called it Vazor: https://github.com/VBAndCs/Vazor-DotNetCore2 I also build ZML (an XML-Taged language instead of Razor): https://github.com/VBAndCs/ZML Unfortunately, I can't add editor support for Vazor and ZML, so using them in real projects will be difficult. This why I asked for a Generic script with embedded language support: https://github.com/dotnet/roslyn/issues/34821 Anthony generalized the XML literals idea to imbed wpf, Xamarin and ASP.Net pages in VB: Pattern-Based XML Literals #483 which is a good place to contribute to build the necessary libraries. I advice to put all your effort in this, where VB regular developers can participate.

So, If the Pattern-Based XML and Generic script with embedded language are both done, VB.NET will work with any new technology with zero cost, because it will need no more tools! I think we can boldly take VB.NET where no developer has ever gone before!

zspitz commented 4 years ago

Why should anyone switch from VB to C#?

My current answer to this is that C# currently has 1) pattern matching, and 2) the notion of nullability / non-nullability for all types (AKA nullable reference types). I think each of these features is as broadly transformative as LINQ.

TeddyAlbina commented 4 years ago

No one want to do mobile apps with VB.net

As I see your profile, you are doing only C#, so it's just YOU don't want to do mobile (or whatever) with VB.

I haved worked with VB.net 3 years

tverweij commented 4 years ago

I haved worked with VB.net 3 years

And I 25 years. And I want to keep doing that for another 25 years. I did LOB applications with VB. I did Mobile with VB (windows CE - industrial and phone solutions). I did websites with VB. I short - I did everything with VB.

So yes I want to keep doing everything with VB, including mobile.

WolvenRA commented 4 years ago

@zspitz Just out of curiosity, what exactly does "notion of nullability / non-nullability for all types (AKA nullable reference types)" get you?

Happypig375 commented 4 years ago

@WolvenRA The ability to not write null checks everywhere?

WolvenRA commented 4 years ago

@Happypig375 Ahh... that was my first guess but I wasn't sure there wasn't some other point. Wouldn't it be nice if things would just auto-initialize to the non-null defaults, unless we specified otherwise? :)

paul1956 commented 4 years ago

@WolvenRA hopefully more reliable code, with errors that get caught during (compilation) development. Right now if you install preview 2 or later you will see new issues warning that input parameters might be Null and you need to check for Null and handle, and a nice code fix is provided. But that adds a lot of code to every Public function. When you do a Roslyn walker for example its impossible to get to the visitor with a Null parameter but without Null-ability notation you still get told to put in the fix. That said one right-click fixes the issue but you do end up with a lot of extra lines of code that don't do anything useful.

zspitz commented 4 years ago

@Happypig375

The ability to not write null checks everywhere?

Not entirely. If the compiler detects a certain identifier / expression as possibly containing null, it'll warn you if you're trying to use it in a way that might cause a NullReferenceException; and to resolve the warning you might put in a null check.

But if the compiler detects the expression as not containing null, you won't be warned and you won't need the null check, as you said.

zspitz commented 4 years ago

@WolvenRA

Wouldn't it be nice if things would just auto-initialize to the non-null defaults, unless we specified otherwise?

What's the non-nullable default for System.Random? Or SqlConnection? We can get close enough for government work by saying "This variable must be initialized right away, and assigning Nothing -- or something that might be Nothing -- to it is not allowed".

tverweij commented 4 years ago

@WolvenRA Wouldn't it be nice if things would just auto-initialize to the non-null defaults, unless we specified otherwise?

Just use a property instead of a field that sets the default?

zspitz commented 4 years ago

@tverweij You mean the property should set the default?

Class Foo
    Dim bar As Random

    Property Bar As Random
        Get
            If bar Is Nothing Then bar = New Random
            Return bar
        End Get
    End Property
End Class

That's all well and good until some other member within the class calls the field directly instead of the property. And I don't think there's any way to prevent that kind of access. Having nullable reference type handling would allow a compiler warning.

Happypig375 commented 4 years ago

That's all well and good until some other member within the class calls the field directly instead of the property. And I don't think there's any way to prevent that kind of access.

Semi Auto Properties?

tverweij commented 4 years ago

Local properties and Non Nullable References are implemented right now. But not In Microsoft VB.

zspitz commented 4 years ago

@Happypig375 Semi Auto Properties?

@tverweij Local properties?