How long before ALT.NET becomes NOT.NET?

by javery on July 27, 2007

If you read through my moster of a previous post you will notice that I am a big fan of technologies that are lumped into the phrase "ALT.NET". Stuff like MonoRail, nHibernate, MbUnit, Rhino.Mocks, etc.

While reading some of the posts about ALT.NET the thought that kept crossing my mind is how long will people stick with .NET when they start to understand some of the possible solutions out there. Many of the .NET solutions above are accomplishing goals in .NET that are very hard. ORM is hard. Mocking in a statically typed language is hard. But when you really start to look outside of the area of .NET you might find Ruby on Rails. Where all of this stuff is just plain easy.

677819 Train Track

In the link above the first bullet point of being ALT.NET is:

"You’re the type of developer who uses what works while keeping an eye out for a better way."

What if Ruby on Rails is the better way? How long before the people driving the ALT.NET movement figure out that the best way to do stuff is NOT.NET and perhaps RoR? I know that I feel myself getting closer and closer to that realization. What would make an ALT.NET developer stay in the .NET realm?

1) Your job. Ok, this is a pretty good one. You work for a company that uses .NET and they aren’t going to switch. This will keep a number of people who love their jobs, but most people thinking about ALT.NET won’t usually let a paycheck get in their way if they see greener pastures elsewhere. This might delay the move, the next contract I took is .NET because I can bill much more doing .NET work, but in the long run it won’t stop me from pursuing RoR in my off-time and at some point making the switch.

2) Your comfort. Using Ruby and RoR is weird. I will be the first to admit it hasn’t been easy adapting to how different it is. I don’t think I have ever been more comfortable in a language then I am in C# and .NET. Similiar to #1 though, the people looking at ALT.NET aren’t all about comfort. They are willing to try something different and get uncomfortable.

3) Microsoft. Microsoft puts an incredible amount of money and effort into .NET. One of the things I noticed at the Ruby Brigade here that was missing was the endless Microsoft swag that usually shows up at most .NET user groups. Microsoft has the MVP program, they send people to conferences for free, etc. But again, if someone is looking at ALT.NET technologies they are already somewhat detaching themselves from Microsoft. I can’t see this holding too many people back.

I haven’t made the switch yet. My next contract, which should last at least a year, is .NET. ChiroEase, my side-project, is .NET. But I am working on a little project using RoR. Testing the waters, we shall see where it goes.

Do you consider yourself in the ALT.NET camp? Are you looking at RoR? Why or Why not?

-James

{ 18 comments }

Alex July 28, 2007 at 11:25 am

James, this post highly resonates with me because I considered myself to be in the ALT.NET camp and still haven’t completely broken out of it.

I made a switch and still have no major regrets. I was looking at RoR, but ultimately sticked to Python and Django-style development (though I am not specifically using Django, I pretty much adhere to its style of webdev), because there are quite a few things which I strongly dislike both in RoR and Ruby itself. Python, also being language with quite controversial design, however sits a little better with me than Ruby.

Deciding factor for me was extreme shoddiness of C# as a language and .NET as a framework. I despise ASP.NET, I hate RAD style of development, I hate C# and .NET framework for its innate inelegance and verbosity. I was using .NET professionally for 3 years and almost never actually used Visual Studio, so much I hated it ( with Resharper its a little more tolerable, but not so much more).

If not for “ALT.NET” I’d switch much earlier instead of losing my time with this stillborn framework and fondling myself with false hopes.

.NET framework has also numerous problems with performance (actually it is quite easy for slow ass environments as Ruby and Python to be much faster at some tasks than .NET), highly questionable design and quality of some libraries and components such as WinForms, System.Drawing, and a heap load of bugs. In fact some sub-frameworks are so shitty and buggy that Microsoft hesitates to ever use them (e.g. System.Reflection.Emit).

However I’m still not completely over .NET and still may consider using it for some future project, especially after .NET 3.5/4.0 will be released. I’m also an “adept” of Nemerle (see nemerle.org) programming language and had some a minor participation in its development. It is pretty much the best thing which happened to me in programming. However it is not beginner friendly and there are some other aspects about it which hinder its wider adoption.

James Avery July 28, 2007 at 1:14 pm

Great comment. So why would you think about coming back with .NET 3.5/4.0?

-James

Ben Scheirman July 28, 2007 at 5:32 pm

I totally agree with you that these things make us question whether we are in the right camp or not.

I stand firmly with the ALT.NET crowd and try to advocate it outside the camp as much as possible.

But then there’s also the fact that the large majority of RoR developers *already embrace this line of thinking.*

I could jump ship and try out new waters, but there are some factors that keep me tied to .NET (as you say, mainly my paycheck).

But then there are the inspirational stories like Mike Gunderloy’s… where he actually *does it*. So far he’s succeeding, and it should serve as an example to us all.

Anyway, I really hear what you’re saying, and I’ve been saying the same thing to myself for a while now. Good to know that we’re not alone… :)

Ayende Rahien July 28, 2007 at 6:00 pm

Alex,
What you speak of is something that I have not seen. Can you give more details about what you speak of?
SRE is something that I use, and it certainly has ANNOYING limitations, but I wouldn’t call it “shitty and buggy”.
The performance part is also intriguing, I would love to see some more details about that as well

Scott Bellware July 28, 2007 at 7:34 pm

I think most people in the ALT.NET crowd have some kind of RoR side project. IronRuby might make it possible to have the best of both worlds.

Alex July 29, 2007 at 1:30 am

Ayende,

I don’t know how you use SRE, but just ask the folks who actually use it for something less trivial, like Nemerle or Boo developers. Or just check SRE related bug reports filled to Microsoft (I don’t feel like digging that stuff out and giving a link to it).

As for the poor performance part, accounts are so numerous that it’s funny you haven’t seen anything like it. By the way, your blog features ‘performance’ keyword on 3440 of 3660 pages. This fact suggests that you’re pretty much obsessed about performance.

I myself do not blog, but trust me – this is something I would not write about at all as I pretty much do not care about performance. I was performance freak only when I programmed exclusively in C++, it became less important when I gradually switched to C#, still there were a few cases where I was less than amused by performance deficiencies in .NET framework.

I actually proceed to writing lengthy account on the “details” , then decided it would be better for me not to get into discussions on .NET, since it sure brings back some painful memories. :)

So I would just name a few things which are used extremely commonly and in my opinion universally grant every piece of code where they are used less than decent performance – interop, reflection, emit. The reason I think is quite simple – these are things for which CLR was least optimized.

Tim Haines July 29, 2007 at 4:14 am

@Alex I had to smile when I saw you suggesting a use of SRE less trivial. At first I thought you were meaning less trivial than Ayende’s uses (who build frameworks on top of Boo). Re-reading I realise you mean less trivial generally though..

Luke Melia July 29, 2007 at 4:51 am

I’d consider myself ALT.NET, and I spend most of my side project time writing Rails apps. If not for bring part of a fantastic team and and organization, I’d switch to Rails as a full-time gig. Instead, I’m leading my team in adopting RoR when appropriate for our projects. IronRuby looks like it will be the bridge I need to make that strategy substantially more efficient.

James Avery July 29, 2007 at 3:31 pm

Luke,
That is one angle I missed, what about the people who will embrace RoR and then try and move their organization toward it? That could be a very real possibility for some people.

-James

Tobias July 29, 2007 at 9:11 pm

Well, I am just now changing jobs and moving to a place where I will be using Ruby and Rails more, even thou my primary function will be as a .NET developer… for now. RoR is quickly taking up a larger part in this company, and while it is still just a bit experimental, a lot of people are seeking jobs here to be able to work with it.
I still somewhat enjoy working with C# and .NET, but Microsofts apparent inability to embrace the ALT.NET community and the awkward programming model that is WebForms is a part of what is driving me towards the fun of programming in Ruby.

Jeffrey Palermo July 30, 2007 at 2:46 am

Hey James,
>”But again, if someone is looking at ALT.NET technologies they are already somewhat detaching themselves from Microsoft”

How do you figure? I use Rhino Mocks. I use NHibernate. These are built on . . . the .Net platform. If anything else, I’m investing myself MORE heavily in .Net by learning frameworks that increase my dependence on the platform. .Net OSS projects are . . . .Net. I don’t understand how using 3rd party .Net libraries and tools pull you away from Microsoft.

I, for one, am always looking for better ways to do things, but I have no interest in Rails at this point. It really sucks for back-end and smart client development. I mean, REALLY sucks! <tongue in cheek/>

Dave Laribee July 30, 2007 at 1:38 pm

Excellent observation. Someone else (can’t remember who or find it now) made the comment ALT.NET should really be ALT.DEV. I think your insight is in that direction of thought.

A lot of the issues we’re talking about aren’t necessarily exclusive to the .NET community it’s just where I happen to be most of the time. I strongly believe we need to identify ourselves as a Community of Developer instead of Microsoft Fanboys, Agilists, Rubyists, Brand Loyalists, Whigs, Tories, etc.

I hope you’re able to make it to the ALT.NET Conference to help us work through some of these issues!

Frans Bouma July 30, 2007 at 2:10 pm

Every time I see ‘alt’ for ‘Alternative’ I wonder: “alternative to what?”. I have the same feeling with ALT.NET: it’s to me unclear what it stands for. Does it stand for FOSS all the way, does it stand for using TDD/BDD/DDD style development? Does it stand for not-microsoft, or something else?

A (lame) analogy can be ‘Alternative rock’: it’s still rock, so for what is it the alternative? Unclear.

Will ALT.NET become NOT.NET ? No of course not. If it would have been, people would have moved to Java years ago, as the stuff people are using on .NET are available on Java for years already and are in much more mature state than on .NET. Ruby? As a language: sure. RoR, I’m not convinced.

Another aspect is that something which is ‘Alternative’ is the ‘mainstream’ for the people IN that alternative stream. So in a while it will become common for these people, and something ‘new’ will look like something potentially ‘better’, as when you’re using something for some time you will learn the downsides and quirks of it.

And the process repeats itself.

I’ve programmed software in at least 15 different computer languages in the last 20 years on at least 10 different platforms. There’s one thing I’ve learned which will save your day: use the platform / language which you know like the back of your hand. Because that will offer you the ability to finish your project. If you keep on switching platforms, you will start over from scratch: you might know how to apply a new EBNF syntaxis of the new language and some classes / functions in the libraries available look familiar, but you will have to start over and learn everything again.

That’s why I don’t believe people will switch soon to Ruby on its own interpreter: they have to start over again and drop the knowledge they’ve learned on .NET in the last couple of years.

Don’t kid yourself with a sticker that you’re so alternative. You’re not. You just decided to pick a different subset of tools than some other group. Well, congratulations :) , but it’s not an achievement at all nor a lifestyle or a movement.

Nick Hodges July 30, 2007 at 6:07 pm

We here at CodeGear think of ourselves as ALT.NET folks in a big way — we have an alternative to VS.NET in Delphi and our RAD Studio product.

It’s ALT.NETish in three ways —

1. It’s an alternative IDE to VS.NET.
2. An alternative desktop development framework in our VCL.NET framework
3. We provide a native RAD development studio for Windows in Delphi and C++Builder.

I suppose that we qualify with #1 alone — an alternative IDE to develop .Net applications. Delphi and CodeGear RAD Studio (To be released soon for .Net 2.0) offers an alternate way to develop for .Net

With #2, we provide a powerful alternative to WInforms, and a migration path from native to .Net and back.

With #3, providing RAD native development is the ultimate “ALT” to .Net itself — using native code instead of managed code.

And by the way, you get all three of those “ALTs” in one package with RAD Studio.

Check us out at http://www.codegear.com

James Avery July 31, 2007 at 2:57 am

Frans,
I don’t understand your logic at all. If we always used what we knew the best we would all still be using our first development language or environment. I would never have left ASP 3.0 for ASP.NET because I knew VBScript and ASP 3 like the back of my hand.

-James

Nate Kohari August 1, 2007 at 3:23 am

I definitely agree that ALT.NET has less to do with .NET than it does to do with good software development. I think it would benefit everyone to move outside their comfort zone and into other development communities. In particular, I think the .NET community would be well served by cross-pollination with the Java community (since the concepts and languages are similar). Sadly, it seems that some developers can’t see past Microsoft vs. Sun and think of .NET vs. Java as some sort of holy war. In general, I think moving outside of the comfort zone and trying to absorb ideas from other languages is a great benefit. (And not just Java, I mean all sorts of stuff… Ruby, Python, Lisp, Haskell, etc.)

Speaking of religion, Rubyists would be well-served to ease up a little bit on the fanboyism. Is it just me, or are .NET fanboys (and girls!) few and far between? Sure, I like .NET, but it’s a tool to me, and not a following. I’m interested in learning Ruby and RoR, but I hesitate because it seems a little too trendy. We still don’t know the long-term implications of maintaining and scaling large Ruby applications, and as such I can’t see adopting it for my “day job” work. I think that’s what will keep me with .NET for awhile: it’s a known value. I’m definitely interested in learning new things, but at the same time, just because they’re new, doesn’t make them *better*. Rather than *switching* technologies, I think of it as learning and absorbing ideas, and applying them to the tools I already have.

But yeah, WebForms is bad. Really, really, really bad. :)

And Alex, I’m calling FUD on your comment that there are “sub-frameworks” that are “shitty and buggy”. I also think that overall, the design of the BCL is very good, certainly better than its equivalent in Java, and miles past the hodgepodge that I used to use in C++. In particular, I’ve done some significant work with SRE and, like Ayende said, it has annoying limitations, but it works as it should. Also, Microsoft uses it. Go look at the dependency injection container that drives CodePlex (in ObjectBuilder’s repository). They’ve got significant AOP functionality that’s written using SRE. The bottom line is that dynamic IL emitting is only useful in edge cases, and so there’s no reason to train support staff to help with it.

I for one am excited about .NET… C# 3.0 looks great, and Microsoft seems to be making moves to start embracing open source, at least in the development community. Things could get really interesting, really fast.

JonR August 1, 2007 at 8:24 am

i used to be a .NET fanboy, or an MSDN pod-person, or whatever you want to call it. in fact most young .NET developers are generally fanboys by default, (unless they’re apathetic Morts). thankfully it’s something you grow out of, when you realise that languages and platforms aren’t an either/or proposition and that there’s not really a One True *anything*.

IMHO the first step on the road to enlightenment is to stop using Enterprise Library, a 7 project Visual Studio solution and a Fowleresque storage-agnostic domain model for your 10-page ASP.NET website, and get some actual work done instead.

BillC November 9, 2007 at 9:56 pm

JonR I laughed at your comment

“…a 7 project Visual Studio solution and a Fowleresque storage-agnostic domain model for your 10-page ASP.NET website, and get some actual work done instead.”

That is one of the things that has made me look at ROR, I actually got to help implement a Rails project at work and I have to say there have been less problems and I have been able to get changes and fixes done much faster than I have been in C#.

I think .NET is great for some stuff but their web applications leave me feeling like I am need to beat my head against a wall while hopping on one foot to do a simple web application.

I definitely am starting to look much harder at alternatives to MS , mainly cause I am fed up with the way they do web applications. For a code library, or a windows app I think .NET is pretty good, but for a web application…not so much.

Comments on this entry are closed.

Previous post: ChiroEase

Next post: And now for something completely different