An Alternate Path

It’s funny how a tiny bit of feedback can change the nature of a post. I had originally planned to write about modding in the gaming community and the impressive accomplishments independent developers and enthusiasts have had in expanding and extending the experience of games, sometimes vastly, beyond the intent of the original creators (e.g. Breath of the Wild: Second Wind). In some cases, games have come to be defined by their modding culture (e.g. Skyrim) and in others mods have taken on a life of their own to become products that arguably overshadow their base games (e.g. Counter-Strike) or even spawn new genres (e.g. Dota). I had some anecdotes about the first software I ever “modded” (Mavis Beacon Teaches Typing) or twiddling with QBasic games’ source code as a young teen.

That said, I got a bit of feedback after my last post that something maybe a little broader (yet also more direct and specific) would probably be better received so I’m going to try to fumble through distilling at least some of two years of thought and research and—yes, planning—into an elevator pitch. Well, maybe not that short, but still a challenge of brevity.

For starters, let me set a few expectations. Firstly, what I’m proposing is without a doubt going to be a pain in the ass, at first at least. It’s a lot of work. When I say a community-driven­­ path forward, I don’t mean a community-accentuated path forward. I don’t mean community-supplemented or community-enhanced. We need to shift our entire paradigm from being a Microsoft-centric developer experience to one where almost (*) everything we enjoy comes from us. That means features, tools, designers, docs, samples, templates, and even the respect that I mentioned in my last post. These are all things we’re used to getting from Microsoft and lamenting when we don’t get them from Microsoft and complaining to Microsoft about it. That entire inclination has to die and we have to rebuild a community that holds itself primarily accountable for its own capabilities.

This is not going to happen overnight and it’s not going to start just because I say “go”. I’ve seriously thought through the process, and I can’t see it taking less than a year or two to build out an experience with the kind of polish that can sustainably grow our community. But virtually all the technical pieces we need to build… well, anything, are available somewhere. The extensibility points are there; we just have to do the work both functionally (in code) and culturally (in ourselves). If you were looking for “ThatVBGuy” to post on his blog with some tablets in hand explaining how with a few reg key fixes I can make this all go away, sorry, this ain’t that post. We’re talking 3 steps back, 5 steps forward.

Though technically we’re not sliding backward, we’re just not moving forward right now, so I guess it’s just 5 steps forward while the world is moving forward like 2-3 steps maybe but we’re going to accelerate so that by the end of it we’re far ahead of where we are and even ahead of where we would have been if we just floated along with the current. Yes, we’re in a boat now even though when I started this parenthetical I was thinking about a land-vehicle like a car or a train.

I also want to be clear that not everybody is going to make it to the other side (we’re back on land now, the metaphor is some kind of chasm, I think). It’s completely foreseeable that a lot of us are going to take a faster, easier path and move to a developer experience that’s already propped up elsewhere. There are always going to be those who need a Microsoft-sanctioned/supported solution and either can’t or won’t give up the Microsoft-centric mindset. And that’s okay! I just can’t be one of those people and I’ll explain more about my personal investment in this (other than quitting my job to focus on kickstarting this effort for the next few months) in my next post.

Now, I know I’m not the first to say this is what needs to happen. Everything I’ve said so far will need to be said again, and expanded upon, and most importantly discussed and debated amongst ourselves—we few. So I have to imagine when people say, “Well, what’s the alternate community-driven path?” they already get that the path is to be community-driven. What they really are asking is “How?”, or “Where do we start?”, or “What can I do?”. Maybe they want a roadmap to give them assurances or confidence that this can really be done or how likely it is to be done in a way and timeframe that is applicable to their projects and needs.

For starters, what can you do as a VB.NET developer who wants to help?

Get comfortable with discomfort. We can build some great experiences but first we’re going to build some pretty raw ones. If the minority of the larger VB community that cares to push it forward can’t suspend our discomfort with doing things in a way that may seem initially hacky, we’re not going to get to the place where the majority can follow. Remember that most other languages outside the Microsoft ecosystem are built up like this. VB has enjoyed a long period of being the exception. Now we must rise to meet the rule.

Understand the systems that exist today. You’ve used Visual Studio and .NET but do you understand the extensibility points? Have you ever built a VS editor extension? How well do you understand the dotnet command driver? How’s your NuGet package authoring skill? Do you truly understand how new UI platforms work under the hood? Have you ever written a .NET Analyzer? A source generator? This is the time to pick an area of interest and study up. We’re all going to have our areas of strength and no one person can know or do it all.

Be ready to engage. It’s easy to be attracted to the allure of being the one who comes up with or builds exciting stuff. But what gets projects done and done right is feedback. I’m going to post a lot on my blog as things progress. Be ready to share your opinions and discuss with others. Be ready to test things that are built by others. Roslyn is arguably the largest VB project ever built and it crossed the finish line not just because of smart devs churning through features but equally smart testers constantly testing the bits. Giving feedback on the design. Filing bugs. Fixing bugs. Building projects with what was ready. I hesitate to quantify it but an amazing tester filing bugs is worth maybe 5+ good devs checking in features.

What’s Anthony doing?

First up, I’m building a mod as a proof of concept. This is a different animal than the prototypes and stuff I’ve built so far (think more Resharper than io.js). I’m targeting this month (June) so I plan to have something more concrete to talk about in the next two weeks. Aside from the at-times agonizing process of authoring these posts, this is now my full-time (unpaid) job. And as I learn more, I hope to educate others about how to do the same and begin to coalesce our identity and efforts into everything I can see in my mind’s eye that the VB experience is capable of being.

Need more info?

Sound off in the comments below!

-ADG

10 thoughts on “An Alternate Path

  1. I think you are being too cryptic; I have done many of the things you have said, like added features to VB through Roslyn, written Analyzers, source generators and Code Fixes, Fixed VB Bugs, written and modified Unit Tests, contributed to WinForms… some things were accepted (_ ‘ Comment, and partially making VB source to not have 1,000’s of code style violations for example), some out right rejected (Unchecked Math) others just plain ignored (too many to list). As things stand without someone at Microsoft to champion my contribution they go nowhere and if my bug fixes for VB touches common code with C# it is virtually a no go (as happened with fixing formatter when someone changes the case of a variable inside a loop). The other issue is Roslyn’s lack of written documentation, we rely on someone on the current team to provide direction and they are all consumed with adding another feature to C# which in many cases makes life more difficult for VB (like Ref Return to name just 1). Are you proposing taking over LDM for VB?

    Liked by 1 person

    • I advice you to focus on perfecting your grate C# to VB converter. It can be a very powerful tool in creating the tools Anthony mentioned, as many existing tools are written in C#, and we may need to convert some of them to VB.

      Like

    • Hey Paul, I hear your frustration. My proof of concept is a workaround to avoid much of it. We have to focus on extensibility points we can ship on like analyzers, fixes, templates, samples, and source generators for now. When I uncover more details on extending other scenarios I’ll post here. This is all I’m working on for the next two weeks!

      Liked by 1 person

  2. I’d help with some of ui things, specifically the debugger uis which are terrible. Got 20+ year’s in .net, a lot in c# & vb.net, winforms expert and also user drawn controls. Some published nuget packages too.

    Liked by 2 people

    • I tried to take your feedback on the last post to heart. I wish I had even more to share but I’m literally working on them.

      Like

  3. on August 03, 2021 on the VB Blog I made the comment that I copied below.

    In the future VB needs to detach itself from Microsoft and also Roslyn as for them anything VB related is suggested to use C#

    ==================================================================================https://devblogs.microsoft.com/vbteam/visual-basic-support-planned-for-net-5-0/

    Well, we have to move on!

    Thankfully we can always go on with VB if we so wish.

    In my opinion, this is perhaps the best moment ever for VB.NET to move forward and show that it should and deserves to always be among the top 5 programming languages in the world! I’m gonna explain.

    VB.NET is open source, right?

    This is already just fantastic, we honestly have to be grateful to Microsoft for bringing VB here!

    But now what’s missing?

    • Greater interaction, integration and willingness from the VB.NET community is lacking, I believe that Microsoft most of the time should feel frustrated with the lack of participation and activity of VB developers in their press releases and articles.

    As a VB.NET developer, do you have the following habits?

    1) Do you answer other people’s questions using VB.NET? Or do you prefer to be popular and respond in another, more popular programming language that is in vogue?
    2) Do you speak that your hobby and professional language is VB?
    3) Do you actively participate in a community?
    4) Do you contribute ideas?
    5) Do you share your developments and discoveries?
    6) Do you help or participate in library creation?
    7) Do you prefer to try to solve your problems with VB or would you prefer to change immediately and use something that is already ready in any other programming language?
    8) Do you continue to study VB?

    That’s exactly what’s missing, the VB developer doesn’t have these habits, so we’re waiting for someone to do it for us, that’s what’s completely different in many other programming languages, they always prefer and try to solve everything first with their language of choice.

    Many complaints look like this:

    We can’t use Blazor…
    What does the Community (we) create as an alternative?

    We are no longer RAD…
    What have we done to change this?

    There is no documentation for VB.NET…
    Have you ever tried to assemble some and share?

    There is not enough example for VB.NET….
    Have you tried using your knowledge and translating some examples into VB?

    We don’t have a tool like Django…
    So why don’t we create one for ourselves?

    Other developers say that VB is not a language for professionals…
    Do you believe that too?

    If the community wants we can create anything, compilers, IDE, VB_Script, that is, anything.

    If this mentality starts today we will be born giants! Microsoft has already left a huge universe ready for developers, companies, governments all ready, we just need to continue.

    Do you visit these sites at least once a week?

    “https://”

    devblogs.microsoft.com/vbteam/
    github.com/dotnet/vblang
    gitter.im/VB-NET/community?source=orgpage (>>Cyrus Najmabadi this one)
    github.com/dotnet/docs/tree/main/samples/snippets/visualbasic
    docs.microsoft.com/en-us/answers/topics/dotnet-visual-basic.html

    “www”

    vbforums.com/
    tutlane.com/tutorial/visual-basic

    “http://”

    vbcity.com/

    VB.NET also arrived here with super powers

    Where would be the main site to bring together all VB developers in one place?

    Answer – (“https://”)gitter.im/VB-NET/community?source=orgpage (>>How about we start here.

    Oops! Before closing your browser is there no one you can share this information with? How about starting now with change!

    Thank you very much and Gratitude 🙂

    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s