Last weekend I attended the Alt.NET conference. It was the first named gathering of a group of people I've been watching on the blogosphere for quite a long time. A group of long-time users of Microsoft technologies who feel that their development philosophy has been getting out of sync with the perceived orthodoxy from Redmond. While some have considered moving away this group is keen to stay and try to influence the Microsoft world.
The term alt.net was coined by David Laribee in his blog. The conference was organized using OpenSpace, a style that I thought was particularly apropos to the nature of this community. I'm not claiming to speak for this community, or define it; these words are my interpretations from what I saw and heard.
One question that came up was the name alternative. This made a few people uncomfortable as it suggested to them that this was a group in opposition to Microsoft. A different view of "alternative" is that it's something that embraces choice. Many communities believe that having many alternatives makes them stronger (the Unix community leaps to mind). In software development it's rare that one solution is the right one for all possible circumstances. Having alternatives does mean you have to think about which solution is the right one for your situation, but I prefer that to trying to use a hammer to turn a nut. And yes, this does mean that personal experience and preference leads to different choices. We may be programmers but we are still human, not embodied algorithms.
The alt.net mind-set is one that is very familiar to me. It has that mix of agile + object-orientation + patterns + TDD + DDD which is very much the school of software development that I favor. (Lacking a proper name for it, I'm inclined to call it the OOPSLA school of software development.) There is certainly a belief that there is a mainstream Microsoft orthodoxy at the moment, one that doesn't fit the OOSPLA school. And there's some frustration with that. But the point here is that it's not that the alt.net community thinks that the perceived mainstream Microsoft route should be erased, but that the Microsoft world is big enough for different approaches.
As well as discussion about whether "alternative" is a good name, there's also discussion about whether you need a name at all. As a compulsive maker of Neologisms you shouldn't be surprised to find out that I think a name is useful. There's clearly a common style of software development that's formed here and giving it a name makes it easier to talk about. Inevitability some people will be annoyed by coining terms, but I think the usefulness outweighs that objection.
An important feature of alt.net is that it's a participative community. Traditionally when user conferences get together, the vendor is in charge of the agenda. Most sessions are about the vendor showing the community how to use the tools it provides. Good vendors listen to their customer community, reacting by developing new products that respond to their community's wishes.
A participative community is different, they don't just want the vendor to listen and provide suitable products - they want to participate in the development of new products. It's just such a participative community that's taken the initiative in the Java world. JUnit, IBatis, Spring, Hibernate et al didn't come out of the vendors, but were developed by "customers". One of the things about the nature of the software industry is that many customers are every bit as capable of producing vital products as vendor companies, especially when combined with the community and ethos of open source.
The great question ahead for Microsoft is how to engage with a participative and opinionated community like this. Treating such a group as an opponent will result in the loss of valuable products, and more importantly the capable people connected with them. Engaging with a community like this brings great opportunity. I would argue that the participative community around enterprise Java has saved the enterprise Java platform. A big challenge for Microsoft in all this is that this means finding a way to accommodate with open source development. Recent signs, particularly around Iron Ruby, suggest that at least some bits of Microsoft are heading in the right direction.
More signs of the right direction was Scott Guthrie's demonstration of the ASP.NET MVC framework (also see Scott Hanselmans's video). This was very interesting to me, not so much because of the product itself, which didn't seem to have anything particularly innovative (and that's not a complaint), but the philosophical signs around it.
First off there's the fact that Scott Guthrie made the commitment to come to a small, conference like this to reveal this product. Next was the clear design goal around testability. Add a rich sauce of clear understanding and learning from other work in this space. Add a garnish of plugability that allows the framework to work with non-Microsoft tools and encourages extension. Many people present said they hadn't been so excited by a product announcement since .NET.
It's also a fine example of "alternative". The MVC framework isn't intended to replace webforms, programmers can choose whether to use webforms or MVC.
One other issue in a community like this is that it's a community that doesn't equate criticism with animosity. Many vendors suffer from the belief that anyone who criticizes them is their enemy. In truth often your friends are at their most valuable when they are critical. Like any large corporation, Microsoft can exhibit contradictory reactions. There are certainly parts of the organization that do think that friends should never criticize. Part of working with a participative community is to learn to value friendly criticism. Equally people in the community need to learn how to criticize without being nasty - a particularly rare quality in our profession.
There's been some debate (particularly in the blogosphere) about whether the alt.net community is an exclusive community (in a bad way). I find a useful way to think about it is a question that did come up a couple of times during the conference. Should people form separate alt.net user groups or should they try to influence and change the current user groups? My answer to this is "both". A focused alt.net user group sets an expectation about the material being discussed and the kind of values and principles that ground the group. People who are doing this style of development need to talk to others doing it so they can learn from them. I've been engaged in this style for over a decade but I still have tons to learn about it. The advantage of a focused gathering is that I get to concentrate on this type of content.
A specialized alt.net user group is only exclusive if it tries to exclude others. The alt.net conference was not exclusive because, at least until the conference filled up, anyone could turn up. As long as an alt.net user group is open to accepting anyone, it's a good thing.
At the same time it's important for alt.net people to engage the wider .NET community. I encourage this style of developing software because I genuinely think it's effective. Therefore I think it's important for me to try and communicate how and why to do it to as big an audience as I can. This way other people can be exposed to the ideas and get the opportunity to understand the techniques so they can choose whether they want to try them. I expect to see many alt.neters looking to talk about these techniques and their experiences with them at a wide range of Microsoft-oriented conferences.
I have high hopes for the alt.net community. I believe this kind of community is important to the viable future of the Microsoft ecosystem, and I want a healthy Microsoft world. My hope is that Microsoft participates in this community, so that many leading Microsofties can happily state they are alt.neters. I hope that alt.neters can strike the tricky balance between sustaining themselves and being open to people coming into the community. I hope I can play a role in making this happen. There was an excellent spirit at this first conference, one that provides lots of good fuel for the future.