I’ve created a new openvbnet organization on GitHub. At the moment it is a place for starting some very important conversations within our community–conversations that are bigger than a personal blog and its comments section. I can present options to the rest of the community but I cannot unilaterally speak for us all, whatever our number. Simply follow the discussions to be alerted as I kick off those many conversations as I am able, and add your own.
Action: At this time the most valuable work we can do is to identify ourselves. We need a focal point that welcomes self-selection without asking any further contribution. We need a headcount.
Open VB.NET is NOT a fundraising organization. And it is distinct from the ModVB Project, which I consider to be a personal creative endeavor shaped by decades of experience with VB in my life and countless interactions with VB developers during my 8 years at Microsoft, which I will at some point submit as a candidate to the rest of the community for adoption. But it is critical to me that the manifestation of the VB community and its future not be conflated with, or hindered in any way by the perception, feasibility, or execution of ModVB, nor the wellness or worthiness of me personally, or any willingness or ability to contribute to any project, financially or otherwise.
I think I’ve been putting the cart before the horse. I’m not interested in (or even capable of) being a consistent “content creator”. And I can’t use my own efforts to support my community to bootstrap that community. So I’m going to flip my approach on its head and parallelize. We will build a community together and then look at how that community is supported separately
Avengers, Assemble!
-ADG
Feel free to skip this section to get my current thinking. What follows is a recap of how I got here if you really just like reading behind-the-scenes anecdotes.
VB Homepage & Community Blog
Way back before the the Roslyn project went open-source there was discussion on the PM team on whether the individual .NET languages should have their own homepages as a place to really focus on each language individually. Some of us felt that most popular languages out at the time had their own pages and that folks tend to think about their stack and ultimately identifier in a language-first way (“I want to learn Python”, “I am a Python developer”) and that our languages would benefit from having an entry point from that angle.
Naturally, other folks internally preferred to think about (and advertise) our offerings in a platform-first way (“I want to adopt .NET”, “I am a .NET developer”). Unsurprisingly folks who came from the platform side of .NET thought about the platform and those of us who came up through the languages side thought about the languages as the best foot (feet?) to put forward. Ultimately it was decided to lead with platform.
Aside: Marketing Brand Consolidation
Incidentally, you may have noticed a consolidation of top-level Microsoft brands over the last few decades. Microsoft makes hundreds of products and I guess that’s unwieldy from a marketing side. Further, successfully winning mind share with one product won’t necessarily contribute to a better impression of another when they aren’t clearly linked.
When I was a kid “Microsoft Word” was a brand put forth on its own. On shelves. On box-art. That was the name of a product. But eventually that became the Office suite and nomenclature moved to “Microsoft Office” as the top-level brand with the individual programs being subordinate (Microsoft Office Word, Microsoft Office PowerPoint). A quick Google returns a Microsoft page which reads “The Microsoft Office app is now Microsoft 365 Copilot” so you can see this process has continued.
At some point in time the big top-level brands were I can remember were Microsoft .NET, Visual Studio, Microsoft Office, Microsoft Dynamics, Xbox (remember Xbox Music?), Surface, etc. There’s a sense to it in the modern marketplace. The more commonly a term appears … everywhere the easier it is to amplify it on social and track it.
Likewise, “back in the day” there was Visual Basic (and Visual C++, and Visual FoxPro), a product. And you could buy Visual Basic .NET 2003 as a stand-alone package when I started with .NET. But no more.
End Aside
Even under the existing Microsoft sites it was a struggle to maintain dedicated spots. We used to have separate Dev Centers for each language, and Insider lists, and blogs too but that all slipped away and I noticed that the more the VB community was mixed into the crowd the quieter we became–the more we disappeared. At one point I tried to bring the VB Team blog back and we even tried to pilot the idea of opening the VB Team blog up to external contributors such as MVPs to give those VB community members who were occasionally blogging more visibility, but we got lost in the swamp of drafting legalese policies for who was allowed to post what and why and the effort died.
Fast-forward to 2019. I had just finished fasting from my habits as VB PM at Microsoft for an entire year and concluded that I still wanted to engage as an outsider. I thought it would be good to make a community-driven site like I had imagined while at Microsoft. I spent a couple of weeks playing around with different names before I found one that I really liked: learnvb.net. It would be the place for everyone from novices to experts to learn anything related to VB.NET. Learn about the language, learn about community projects, learn about what individual developers and companies were building all over the world with it, learn about the latest in security best practices. I wanted to really normalize the notion that we can and should all be lifelong learners in our craft and that “learning” wasn’t just a dirty word used to marginalize perpetual “beginners”.
Lofty vision, but nowhere near enough content to justify launching such a site. It wouldn’t really help to send people to a sparsely populated page under construction so I dialed back my initial release plan a lot and decided to start with just a simple personal blog. If I ever got enough general articles/content together I could rebrand. I agonized on a cool name for my own blog until I realized Eric Lippert’s blog URL was just his name and decided to copy a master and that’s how anthonydgreen.net came to be.
As some of you may remember, my very first post was a massive 56-pager going over all kinds of non-trivial differences between VB and C#. It was very successful in getting views for a first post on a new blog. I’d hoped to save the second part of that exhausting list for a future date when I had more content to benefit from all those eyeballs but I never really got that together.
Ok, so now I’m publishing posts with prototype language features. Uploading videos to my personal YouTube channel and eventually I decide to make ModVB–a modified version of the open-source VB/Roslyn compiler and Visual Studio tooling with a bunch of old and new dream features–and also now a new “brand” that was implicitly homed under my name.
But what if I wanted to make content about vanilla VB or just general programming stuff that wasn’t ModVB specific? I was dreaming of being a “content creator” and you wouldn’t want a generic tutorial on VB debugger visualizers to just be under my YouTube channel or conflated with an ambitious but unofficial project like ModVB. So, I would still need the learnvb.net brand eventually. I could put non-ModVB tutorials or samples under that name and pre-release mod related content under my own name and/or ModVB.
But, sometimes either myself or the community might make tools or libraries–assets–which aren’t tutorials or samples but are in a sense “community owned” (like analyzers, source generators, and project templates). For example, the grammar which is used to colorize VB code on GitHub, or the code converter, or a VSCode compatible LSP for VB aren’t really “learn”-related per se and it didn’t feel right to put them under that heading (think of the namespaces!).
There’s actually another brand I picked up along the way (I own far too many domain names) but it’s not really important now, if ever, so I’ll skip to the more recent (and immediately relevant) thinking of the past year or so.
Current thinking
I’ve been researching and watching various developments in tech, and thinking a lot about power and collective ownership of the technologies we depend on as institutions and how over time different stakeholders gain interests in the future of a technology that goes well beyond the strategic pivots of any single company, or the financial (or other) interest of a single individual or select few who steward or even create those technologies. Those interests are often not explicitly represented.
Cultural shifts around FOSS in the past 3 decades have been massively influential to creating the modern industry but I feel that further innovation is needed in models of governance and sustainability. Maintainers of massively successful libraries struggle to make ends meet, or successful communities have the rug pulled out from under them by a few with personal motives or caprice. No longer is the acceptance of open source code or platforms by businesses and governments the challenge. Rather, maintainer burnout, license changes, IPOs, and backroom deals are just some of the modern threats we must find ways to overcome.
We have models of exercising collective power in employee-ownership of businesses and profit sharing, profit and non-profit healthcare co-ops, trade unions, and craft guilds that more equitably balance the interests of the many who are all too often suddenly impacted by the relative few. Now is the time to rethink past practices and explore novel approaches to distribution of power, costs, and benefits of the tech we are building our modern way of life on top of. We must insist upon seats at the table. And if we cannot get them we must build our own better ones.