A Challenge to the VB.Net Community at Large on OSS

I had a 3-4 way Twitter conversation with Roy Osherove today that left me hot under the collar even several hours later.  The conversation basically played out like this:

  1. Roy:  Boo hoo, new .Net OSS projects are using advanced features in C# that might make those tools hard to use in VB.Net
  2. Me:  Maybe, but I’m optimizing the user experience of these tools for C#.  I’m not going to sacrifice user experience in favor of a little extra reach.  Besides, VB.Net devs are a very small percentage of OSS users.
  3. Roy:  Jeremy is an anti-VB bigot!  Who’s with me VB guys?  VB guys can’t use or participate in OSS because they’re actively turned away by guys like Jeremy!

and then Roy proceeded to present himself as the champion of all those poor dispossessed VB.Net developers with some cheap theatrics.


To you Mr. VB.Net Dev:

Stand up if you don’t like the way things are.  I have never once gotten any kind of specific suggestion about how to make StructureMap more palatable for VB.Net usage.  I’ve gotten complaints, and some questions (which I have answered), but not one single specific suggestion or patch that I recall.  Mr. VB.Net developer, if there’s something you want or lack in an OSS framework that would make it easier/better to use that tool with idiomatic VB.Net, you know who’s probably most qualified and able to write that patch?  You are!  I don’t write software in VB.Net, and haven’t used VB.Net in anger since .Net was in and early beta.  I’m not going to get VB.Net idioms, and I don’t have visibility into VB specific issues.

And you know what?  There isn’t a major OSS project on earth that doesn’t like getting patches.  I would love to get real, useful contribution from the VB.Net community in regards to an improved user experience with StructureMap — but I’m not going to pay attention to empty complaints, and I’m certainly not putting up with vilification.

I’ll go a step farther, give me a usable patch for StructureMap for better VB.Net usage, and I’ll have it released within 48 hours on Sourceforge.

Actually, now that I’m a bit calmer, take this to heart.  OSS projects are owned by the community — meaning that you can pick up the reins and do something about a tool that lacks something you need or want.  Don’t be passive.  Heck, you could even write your own.  You don’t think that OSS projects are a friendly place for VB’ers?  Start your own and make the .Net ecosystem even richer.  Hell, it’s not rocket science after all.

And p.s,. you really need to get the VB.Net team to give you multiline Lambda functions in the next version of VB.  Trust me, once you have them, you’ll never want to code in a language that lacks them ever again.



About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Ranting. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://ferventcoder.com Robz

    Actually I am both VB.NET and C#. At work we are constrained to use VB.NET and at home I had used it up until about a year ago.

    At work we are constrained to VB because most dev support around us is still based in VB language constructs (even though VB6 and VB.NET are completely different).

    At home I go for C# because I like how tightly I can express what I want to do. Usually C# has more features to it compared to VB as well. When they both do pretty much the same thing, you usually go for what gives you more features.

    I would say that most VB devs that want to grow naturally migrate towards C# where they can. I have seen it with myself and others. C# seems to get more love from Microsoft and the surrounding community although VB.NET still has more users (perhaps hobbyists in general?).

  • http://falkayn.blogspot.com Angus McDonald

    BTW, I just noticed on the VB Team blog a post that points out that in VB10/C#4.0 they are bringing the functionality back in line with each other:


    It doesn’t mention XML literals in C3, which is a shame as writing strongly-typed, intellisense XHTML in your code is a heck of a lot nicer than HTML strings (for the odd time when you really need to do that).

  • http://falkayn.blogspot.com Angus McDonald

    As one of the devs using VB.NET and tweeting about this I’d like to first of all thank Jeremy for his OSS and community contributions, especially the opinionated MVC talks/code he’s shared.

    As people have mentioned the problem that VB devs have is that MS only released multi-line lambdas to C# instead of to both it and VB.NET. They are too useful to ignore, and especially help TDD remain manageable.

    Unfortunately this has meant that many of the ALT.NET tools have largely been too hard for devs working with VB.NET codebases to use. This hasn’t stopped us getting the principles involved and I work at a MS Gold Partner that uses SVN, CC and mbUnit/Gallio as a result.

    Again, let me point out that this is not Jeremy’s fault. I believe that Roy’s original point was that if an OSS tool could be almost as useful without requiring the use of multi-line lambdas, then it would make it a much more attractive tool for devs working with VB.NET codebases.

    I have NO choice as to the language that our main app is written in, the decision was made 8 years ago to convert ASP to ASP.NET using VB.NET instead of C#. Trying to do a major re-write just to allow devs to use some pretty new tools is NOT going to happen. However this pain point is here because well intentioned OSS devs chose to use something only available in one .NET language. I’m cool with that, but please, allow the rest of us to have our whinge … we do code with C# when it suits, but we cannot convert legacy apps over “just because”, and funnily enough we get paid to work with the legacy code.


    P.S. Microsoft if you’re listening:
    1. Get VB patched prior to VBX to include multi-line lambdas (or at least hurry up VBX).
    2. Make Chad an MVP.


  • wookie

    I agree with your points about the VB.NET community being less active in the OSS space (the only large VB.NET OSS project I can recall from the top of my mind is DotNetNuke), but at the same time I’ve followed the exchange between you and Roy Osherove at Twitter and I think you are being a bit unfair with him here…it didn’t seem to me that he was trying to put the VB.NET community against you. But then again, he also blogs so I guess he will give you a proper answer there.

    Regarding VB.NET vs C#, I can’t imagine how someone interested on stuff like the tools advocated by the ALT.NET can stick to VB.NET, since there’s this huge predominance (nearly exclusivity) of C# samples, books etc. The only samples in VB.NET I see are the ones Stephen Walther do for ASP.NET MVC and even for those he is always justifying his choice to his guests, and always keeping it pretty simple; whenever he got to do something more advanced he switches to C#.

    The whole promise of “use whatever language you want” that MS spread in 2000 is failing because the CLR is obviously developed with C# in mind, and then the other languages find ways to implement those features.

    By the way, the fact the googling “VB.NET TDD” brings this very post to the top hit says a lot…. O_O

  • o.s.

    Dag gummit the url got garbled my bad:

  • o.s.

    @Bram, Chuck you both make excellent points. Unfortunately there is a lot of bigotry in development circles towards any developer that uses Visual Basic of any kind. I prefer Visual Basic mainly because of
    the evils of case sensitivity .
    I really want to point out that Jeremy isn’t pushing this ideology but a bunch of other dev circles certainly are. Everyone making blind assumptions about ALL VB.NET coders should remember that you can write Fortran in any language.

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller


    This isn’t about putting VB.Net devs down. Read it for exactly what it said. If you think the OSS code isn’t VB friendly, why don’t YOU do something about it.

  • Chuck

    I think this entire conversation is stupid and insulting.

    I am a VB.Net dev because I want to be, not because it is the only language I know. I PREFER coding in VB. I can code in C#, C, C++, Java, SmallTalk, PERL, COBOL and even VB Script. But you know what? If I have a choice in the matter, I always choose VB. I like VB. I’ve liked VB since it first came out. I liked BASIC before that. I also liked Ashton-Tates dBase and Clipper, but that’s another matter.

    If a new technology comes out that excludes VB just because a bunch of snot-nosed young punks think C# is the holy grail of languages and that VB is for dorks, then I’ll find another technology that will get the job done just as well, thank you.

    What a bunch of bigots. Sheesh.

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller


    This wasn’t about quality of VB devs at all, it’s specifically about the contribution, or lack thereof, to OSS projects from VB devs. Unfortunately, you guys got screwed out of decent Lambda support. Several OSS projects, all in C#, are using the Nested Closure pattern to great effect — but that renders it useless for VB.net users.

  • Jeff Certain

    Choice of language != quality of developer.

    In fact, a developer who can intelligently choose a language to use based on the requirements may well have an advantage.

    Besides, I’m sure there’s just as much bad C# code out there as bad VB.NET, assuming a correction for the length of time each has existed. Perception to the contrary may be influenced by a large number of VB6/VBA developers who happen to use the Visual Studio IDE.

  • http://www.monstersgotmy.net Khalid Abuhakmeh

    I was wondering about that as well. There aren’t a lot of VB.NET projects out there. When I think of the .NET community as a large, I always think C#. I’ve yet to see any big names say that VB.NET is better. Although Scott Hanselman always mentions it.

    It’s sad to see someone attack you over something you work on, and then he feel that you owe it to him to make his life easier.

    I completely agree with your challenge, and it’s time VB.NET developers put up or shut up.

  • Bram

    Ouch. I saw the bait, so I’ll bite.

    The use of MS DragDrop/WYSIWYG RAD etc tools can be a conscious decision to use someone elses development and testing time (similar to using opensource or third party tools/frameworks) instead of developing it inhouse. (ie suffering Not-Invented-Here syndrome).

    Admittedly, sometimes its just a poor decision too; As my mother used to say, use the right tools for the job.

    Would it be a gross generalization to say that C# devs can have a tendency to get under the hood and waste massive amounts of time by over-architecting, while VB devs can waste time by doing the opposite of this?

  • http://blog.troyd.net Troy DeMonbreun

    I think it would be interesting if we knew a break-down of developers that primarily use C# vs. those that primarily use VB.Net that even visit your website.

    Does CodeBetter have a simple poll plug-in?


  • http://colinjack.lostechies.com Colin Jack

    @Jeremy D. Miller
    I was specifically baiting you with a joke example :)

  • http://http:blogs.lessthandot.com Christiaan Baes

    I can distinctly remember posting a comment on this before but I don’t see it. Perhaps I did something wrong.

    But being a VB.Net developer and user of Rhino mocks and the AAA syntax and Structuremap I don’t see a problem. I just use C# for those projects.

    I don’t see a problem in using the right tool for the job.

  • Sean Gough

    I develop in both C# and VB and I have experienced the “works in C# but not in VB” pain several times. I’ve also experienced it the other way too. As a result, I tend to use what suits the project, client, task etc.

    Since I’m taking advantage of more OSS projects these days I admit that more often than not this means I end up using C#, as most work better (easier, only?) with C#. It doesn’t really frustrate me though, I look at it as a chance to increase my C# skills (I started as a VB’er) and it’s [usually] fun.

    Do you get a lot of complaints from VB.Net devs? Obviously I might be misinterpreting here as I’m not privy to all those requests (or complaints) but it sounds like you’re taking the anger generated from Roy’s [unfounded/unfair] comments and redirecting them at the VB.Net community at large.

    In the end I think StructureMap will be better for it, if only because of wider exposure/use, so I applaud the call to arms.

  • http://www.bizcoder.com Darrel Miller

    As someone who has spent the last 10 years writing VB6 code and the last 4 doing C#, can we please stop trying to treat both C# and VB.Net as peers. It is a major waste of effort. I have said since .net first showed up that VB.Net should be specialized for learning, prototyping and quick throwaway apps. C# should be optimized for long term production apps.
    Nobody listened to me, the VB MVP’s whined and Microsoft caved.

  • http://www.mohundro.com/blog/ David Mohundro

    Agree with you completely Jeremy.

    If you do a google search on “vb.net multiline lambda”, my blog is at the time of this comment the top response. It has frustrated me to no end in my day job.

    VB will get multiline lambdas in 2010 (finally), but I’d really rather code in C#.

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller

    @Colin Jack,

    That’s not a great example in a way. CSLA is effectively Rocky’s schtick and livelihood. Besides, even he’s said that he will no longer maintain two versions.

  • http://blog.fohjin.com Mark Nijhof

    Drop ‘n Drag && Wizards are not about speed, they are about not having to understand, it is incredible how many devs use it but don’t know what is going on in the background. So when a problem arrives they can not fix it. Same reason why I don’t use Drop ‘n Drag or Wizards when I can.

  • http://colinjack.lostechies.com Colin Jack

    Rocky does release his framework in VB/C#, be more like Rocky.

    Anyway I agree with you but re-reading twitter can’t see the exchange as angry, it sounds like you just have different views.

  • http://jagregory.com James Gregory

    Here, here!

    It’s quite insulting to be labelled as an anti-VBer or language bigot just because you run a project that’s C# focussed.

  • http://http:blogs.lessthandot.com Christiaan Baes

    I am a VB.Net developer and I use Rhino mocks and the new AAA syntax and I use Structuremap. But… I use C# in my testprojects so I can use the AAA syntax better. I am not saying that it isn’t possible to use in VB.Net it is just eassier and better looking in C#. And there are ways around the multiline lambda things which I have discussed on my blog before. It’s not fun but it happens. It just means switching to the bette tool for the job. For View things I don’t see a big difference between the two so I keep those in VB.Net for most other simpler tasks I also still use VB.Net. The switch (if needed) is easy. So if a VB.Net developer doesn’t feel comftorable with the library he is using or thinks that his code becomes messy because of it than just switch it’s easy.

    And it is not because of the language that a developer is worse thats called over generalizing.

    And yes the lack of multiline lambdas was the biggest misstake so far (in a long line of misstakes) but life isn’t perfect so I live with it, I won’t die because of it nor will I make less money.

    And for all those C# developers that look down on VB.Net developers just remember that C++ guys look down on you.

    And I would like to say, like I said before, that I am very gratefull to Jeremy for what he has done.

  • http://codebetter.com/blogs/rodpaddock/default.aspx Rod Paddock

    Funny you should ask/say this. During your xmas break I did try to use Structure map in VB and ran into some issues (probably knowledge based issues)

    I went outa town right as you got back and didnt have time to chat you up yet.

    When I get back lets spend some time on this and we’ll get some workable samples ready for VB coders.

    I think VB.NET developers would definitely benefit from using Structure map for DI.

    One thing that would greatly help. Can you create and post a simple C# version of an app that uses structure map. This needs to be a simple app and be fully functional. I.e fully configured and implmented. Think small and simple. 80/20 all the way…

    To the community at large.. Jeremy did ask me to help put together a VB.NET sample before left. We just didnt get r dun yet.

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller


    I did try to create a UI for editing the StructureMap Xml configuration one time. It was a complete disaster. The Registry DSL is faster than the UI would have been anyway.

  • Matt Gilbert

    VB.NET developers aren’t the ones using OSS. In my experience they are often former Access / VB6 / ASP developers who wouldn’t dare stray from Microsoft because they’re already overwhelmed by Microsoft’s offerings.

    The language itself just doesn’t seem to be geared toward those with a passion for development, and those who want to use every ounce of power a language offers. It’s geared toward the “get it done” crowd. Lack of multi-line lambdas, line continuations, excess verbosity in everything, and on an on. It’s like the language doesn’t want you to think outside its tiny little box. Jeremy/StructureMap isn’t turning away VB.NET developers, the language itself is.

    Hell, from what I’ve seen the “tiny little box” is still too big. I routinely demonstrate “new features” of the language to fellow developers all the time. The number of developers using a subset of VB.NET that matches Access or VB6 is disturbing.

    I agree with your sentiment that VB.NET developers should step up. But it simply isn’t going to happen because there’s no demand for VB.NET-friendly OSS. If you get a patch, great, otherwise, I wouldn’t bother wasting time on it.

  • http://devlicio.us/blogs/sergio_pereira/default.aspx sergiopereira

    VB 10 is finally bringing multi-line lambdas and anonymous methods. http://code.msdn.microsoft.com/vbfuture
    Some line continuations ( _ ) will become optional.
    Not a minute too soon. Still not wanting to touch VB again.

  • http://www.iamnotmyself.com NotMyself

    SM doesn’t come with a drag & drop rad editor, 99% of VB.net developers would not even consider using it.

    And yes, that was intended as a joke. Put your pitchforks away.

  • http://chrismissal.lostechies.com Chris Missal

    After reading the first few lines, I really was looking forward to disagreeing with your comments Jeremy, but I cannot. I completely agree.

  • Steve Py

    Well, as you put it, there’s a simple answer the next time someone takes a poke at you for lack of CLR support.

    “There’s nothing stopping you or others from adding to the project or extending it to be more CLR-friendly. Just don’t expect me to do it for you.”

  • http://ryansvihla.blogspot.com Ryan Svihla

    This is a common issue with OSS projects in pretty much any community. You’re in pretty good company.

    As a leader of a notable OSS project how you respond will determine how far your reach is.

    So question is, do you want to jump start VB.net uptake or not? I’m sure it falls under “nice to have” but hardly anywhere on your “must haves” well behind improving codebase and keeping that fluent interface top notch. This is ok in the morality of OSS projects, but not everyone seems to dig this perspective, so be it, again you’re in good company.

    Final note the “get me a patch” approach seems to suffer from chicken and egg, until you get more vb.net users, you’ll likely not get many vb.net patches, etc, etc, etc.