Roy Osherove’s post on "True Community”™ has been making the rounds on the twitterz in the last 24 hours (or as some people have called it “Yet Another Leaving .NET Post”).  I feel like I should respond with some thoughts.

First up, let me say I applaud Roy for making his views clear and talking about the differences in the communities and the speed at which the Ruby/Rails community is driving forward.  I thinks it great that someone showed enough courage to switch from one technology to another and begin the learning process all over again.  What I have a problem with is the deriding of the technology/community you leave.  It’s a pretty simple reason too.

The Ruby/Rails community and the .NET community are different communities!  There’s no such thing as “True Community”, just community.  Calling your community anything else is simply hyperbole, elitism and idealism.

Of course the two communities won’t be the same! They’re made up of different people. Neither will one community be inherently better than another.  They are just made up of different people.  An apple is not inherently better than an orange or a banana, just because it’s a different fruit.  And just because you’ve decided that you like your new community because it’s more akin to your personal tastes, doesn’t mean that those in the other community are ignoramuses, fools, ill-treated and misguided or troglodytes.  These sort of attitudes won’t and don’t help anyone.

We’re all developers and we all want to make the best software we can using whatever our chosen technology is.  If you don’t like the way your technology or community is progressing or you like the look of other groups more and you leave, that’s fine.  Go for it. Be awesome no matter where you go.  However if you do leave, don’t then berate those who stay or point out only the negatives as you see them.  Constructive criticism is welcome.  Criticism that exists just to validate your decision to move is not.

The Ruby/Rails community is still quite small and young and thus is able to change rapidly and innovate quickly.  It won’t last forever, it never does, but there’s a lot to like about a community like that, and a lot that everyone can learn from it. I get that. Truly I do.  I wish there was more of that going on in the .NET space.  Look at the Java and .NET communities on the other hand. They’re much larger and more prone to innovation impedance, making it harder to change things and for .NET in particular when management places more focus on what Microsoft produces to the exclusion of better solutions there can be some real problems.

On the flip side, while Roy makes some strong points about Microsoft not valuing the community, I think they only apply to certain parts of the business.  It’s not like that everywhere, and it’s changing.  I was on an open source panel on the weekend at the DDD Sydney conference and stated that we’re seeing a gradual change of Microsoft’s attitude towards their open source developers and the developer community in general.  The move from closed source to grudging acceptance of open source to a willing approval and active contribution to open source in the community at large has been a slow transition, but it is happening.  Why? Because of the very community that Roy complains about is driving change! Groups like Alt.NET that are looking for ways to push things forward regardless of what Redmond says do have an influence.  We see the change because of outspoken and community focused people like Roy himself, and others like Ayende Rahien, Sebastian Lambla, Jeremy Miller, the Herding Code guys, the Microsoft MVC team (who have strong community roots) and many, many more.

People that realise that community is what you make it!

So, you don’t like something in a community you’re in? Then what are you doing to improve it.  If the answer is “nothing”, then either stop complaining or get off your butt and get active.  It’s pretty simple really.  Change your community or change your community.

On a side note, the keen eyed amongst you will notice that Roy’s post didn’t mention the JavaScript community? Why? There’s just as much innovation and excitement happening in that space, if not more.  What makes them different? Why don’t we see “I’m leaving .NET for JavaScript” posts? Is it because their community is inclusive by nature and the Rails community is elitist? Is it because the technology is server side agnostic? Is it something else?  You know what.  Who cares! It’s just another community.  One from which everyone can learn.

Nothing says you need to be exclusive.  You like .NET, Visual Studio & IntelliSense?  Wonderful.  Go contribute to your local .NET community.  You like Ruby and the Rails framework and enjoy the innovation in that space? Fantastic. Go contribute to your local Rails community.  You like Java and think there’s still a lot of improving that can be done there? Brilliant. Go contribute to your local Java community.  You like JavaScript and think modern browsers have the power you finally need to make some kick ass software? Excellent. Go contribute to your local JavaScript community.

You get the point.  The community is made of you so go influence your community.