« Dan's Bike: Dead| Main | Is Microsoft ATLAS for me? »

Atlas At Last

| | Comments (2)

Yesterday I got my first peek at Microsoft's new ATLAS framework. I'm going to tear it apart, but first a couple of warnings.

This is a technical article. So mom -- if you're reading -- this would be a good article to sit out. I'd also like to point out that I have no problems with the implementation of ATLAS. It's one of the best jobs of computer engineering I've seen in a while. The design and coding are absolutely top-notch. It's the strategy that is awful. Now on with the thrashing.

ATLAS is supposed to be Microsoft's answer to AJAX. Although I'm not sure AJAX is a question, and if it is a question, I'm not sure Microsoft needed an answer. It's all part of Web 2.0, which once you strip the marketing hype away is just a new way of thinking about web applications. The key part of that last sentence is "new way". Users don't want to sit around while the server reloads the page, thank you very much. So AJAX moves updates into the background and makes the web page act more like a regular application.

Here are my initial impressions:

It's too big - This hoss weighs in at over 360K of downloaded Javascript to my browser. Before it's all over I'm betting on 500K to 1MB of code. That's a freaking lot of stuff sitting on my browser. Stuff that Microsoft owns and I'm not to touch. Reading the license agreement, I'm prevented even from fixing problems and overcoming bugs in Microsoft's code. I had to read this one a couple of times before I believed it. So Microsoft is taking a big honking bandwidth chunk of my application and I'm powerless to control what goes inside the black box? If everything else in the world were perfect, I'd have no problem with this. But I've been around the block too many times to think that Microsoft's code is going to be the do-all, end-all that it's promised. So that means somebody is going to have to fix it. Which I take is now illegal.

It's Overblown - Okay. Okay. So it looks like somebody smart at MS has decided to eventually push the entire freaking CLR down to the client in Javascript. No doubt this is part of the unified strategy of making MS and the browser one happy union of peace and utility. But heck, guys, I just wanted asynchronous operations here. I've got code that is the atomic missile of architecture, and my problem is that I want a gnat killed. Now Microsoft may have bigger needs: they have market share and browser wars and all sorts of issues. But me? Joe Coder? Keep it simple, stupid.

Declarative Programming Is the Wrong Model - I love those little ASP tags, really I do. But there is a time and place for everything. If I wanted a grid to do AJAX, maybe, JUST MAYBE, I would encapsulate that AJAX behavior in the freaking grid, not make up some all new assortment of tags and behaviors. This is the same issue as before -- my need is a grid that updates. Not some .NET client engine in Javascript. That's Microsoft's need. The scary part of this is that they are having programmers on the server declare programming constructs on the client. Very complicated constructs. When you add a couple of tags on your page, you're doing all sorts of new and wondrous things.

What's the problem with that, you may ask? The problem is that the client environment is a separate environment with different rules and expectations than the server environment. Everybody has to play together, which means Microsoft isn't the only player in town. If I want to add a few other gizmos into my client, now I have to make sure they all play nice. Once, yet again, we have Microsoft demonstrating something that looks great on the video, but the minute you use it in real life you're hosed. Dig out the books, hire the consultants, there's a new technology in town.

I'm also concerned that Microsoft seems to be doing almost everything in their power to keep developers from using client Javascript. Why? You can make up your own reasons. But the examples in MSDN have always been sparse (but getting better), and the company actively seems to promote server programming as the de-facto method to write web applications. Not only is this a little self-centered, it's also probably not the way the technology is heading. It's also a great disservice to the poor schmucks out there working for a living.

Span of Control is Out of Control - It's just too much. For those of you out there who understand the whole ASP pipeline paradigm, the custom control model, HTML, XML, DHTML, Javascript, CSS .... The list goes on and on. Technology is supposed to simplify things, but instead we keep making things more complicated. Look, if you want the CLR on the client, make it part of the ECMA standard. (But I guess that wouldn't work politically, huh?) This is not just MS, it's everywhere. But MS needs to be aware of it. ATLAS can't be everything to everybody, even though it's making a valiant attempt. And it's not that great an idea to leverage onto the client. There are programmers right now who are dreading ATLAS, I can tell you. In their minds they see dropping a couple of things on to the page and then nothing working. The easy life is over as quickly as it began. These programmers won't admit it (probably), but I'm willing to bet they are tired of the "simple demo" sucking them into implementation hell. Yet again. Part of this is the tendency for software providers to solve the technical details of a solution instead of focusing on the human details of a solution, which is exactly backwards. So we get great technology that works on the simple path but involves detailed domain knowledge for anything that strays from that path.

Lack of an Independent Client Architecture - So here's what the community needs: an independent, extensible, client architecture. Here's what we are getting: vendors trying to elbow and code their way into owning our browsers. People want to mix and match, they want choices. MS and others are actively trying to take away these choices. Yes, I understand that soon MS will probably introduce a tool wizard for atlas and encourage third-party vendors. But that's just window-dressing. Locking down the framework at this early stage in the paradigm change does not help the larger community. My opinion only folks.

Now that I've trashed ATLAS, some good news: I'm not all that opposed to using it. In a closed shop, with dedicated IE on the floor, it probably makes a lot of sense. I worry that the marketing hype versus trade-off will be disappointing to many implementers. I also think that for a lot of pages a couple hundreds lines of custom-written Javascript might be better than tens of thousands of lines of pre-canned work.

All-in-all it is exactly what you would expect: another complete architecture, tools, and technology to hit a Microsoft need squarely on the head.

2 Comments

Thanks for the warning:)

I also was surprised with the size of the javascript file, but I noticed that I was missing config sections in web.config. After I copyed the config sections from the Atlas sample website the size of the javascript resource went down to about 60K.

Leave a comment

About this Entry

This page contains a single entry by DanielBMarkham published on March 21, 2006 1:22 PM.

Dan's Bike: Dead was the previous entry in this blog.

Is Microsoft ATLAS for me? is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Social Widgets





Share Bookmark this on Delicious

Recent Comments

  • Fil: I also was surprised with the size of the javascript read more
  • Melissa: Thanks for the warning:) read more

Information you might find handy
(other sites I have worked on)





Recently I created a list of books that hackers recommend to each other -- what are the books super hackers use to help guide them form their own startups and make millions? hn-books might be a site you'd like to check out.
On the low-end of the spectrum, I realized that a lot of people have problems logging into Facebook, of all things. So I created a micro-site to help folks learn how to log-in correctly, and to share various funny pictures and such that folks might like to share with their friends. It's called (appropriately enough) facebook login help