Browser/Scripting Wish List

My own wish list for what I'd love to see in the browser/scripting/Ajax space...

The ajaxians enumerated their wish list for top browser enhancements during the opening keynote at the Ajax Experience conference:

  • 2D drawing and support for canvas
  • JIT for Javascript
  • Better memory management for Javascript
  • Offline storage API

I thought it would be an interesting exercise to come up with mine. I thought my list would be pretty simple, but the more I thought, the broader each item grew in scope. So I have just three items in my wish list, ranging from relatively short term to longer term:

  • Improve scripting state of art. This is not just about getting natural OOP constructs (I do like what I see with Javascript 2), but it is about getting some of the CLR goodness we take for granted (GC, JITing etc.), as well as alternative packaging models designed for dependency tracking, versioning, and distribution without having to give away source code.
  • Get the DOM fundamentals right. I see a whole lot of debate around standard vs. non-standard DOM implementation. I’d like the discussion to go beyond that and instead focus on providing the much more needed building blocks. For example, how do I define, encapsulate and compose custom nodes (ala behaviors, XBL bindings)? How do I perform custom rendering where canvas/SVG are simply instances of a more generic capability? How do I create interesting custom layouts via primitives enabling measurement and arrangement of elements instead of being constrained by a limited set via some hacky CSS mechanisms? How do I define name scopes in the DOM tree to enable templating scenarios?
  • Instilling true support for applications in the browser. In other words, the browser needs to evolve into an application explorer, rather than a document explorer. The back/forward buttons often come up here, and so does local storage which would indeed be hot. Accessibility is getting a lot of buzz as well. However, I think there are less mentioned or forgotten integration scenarios around stop/refresh, search, help and a variety of other aspects that would enable the hosted application to feel like a natural extension rather than an island in the middle of some browser chrome.

I guess, the essence of my wish list would be enable the framework and component developer to do a great job, thereby leading to great applications by virtue of composition. While there is a lot of work required in reaching a state of "utopia", it is certainly be exciting to be involved and working in this space.

Thoughts? Does the list make sense? What makes your list? What would excite you?


[ Tags: | | ]
Posted on Tuesday, 5/16/2006 @ 7:56 PM | #ASP.NET


Comments

16 comments have been posted.

Steve

Posted on 5/16/2006 @ 9:15 PM
I'd like to be able to write C# for both my server-side and client-side needs :) Scripting is getting 'overdone'. I think scripting has a purpose, it is something you can piece together to satisfy a small task, etc... But, we are forced to overdo this scripting and attempt to create entire applications with javascript. I think that goes beyond what scripting is about.

Rather than distinguish between client/server, it should be about what needs to obtain data from the datasources - callbacks allow this to be asynchronously executed, etc... but simple task like validation or handing the onchange of a dropdown box - these have no reason to be making trips to the server. I should be able to tag my C# dropdown code as 'client-side' (perhaps through attributes?) - write my C# code - and know that the code will run on the client and not make a 'postback'. The server-side model in asp.net is fantastic - event-driven development, intellisense, separation of UI from code-behind - I'm still happy with this model. But, when I need to jump out of this model, or make this model co-exist with javascript - it becomes quite painful. Clients wonder why I can produce these great database driven applications quickly in asp.net, but when it comes to simply validating a checkboxlist why it takes all day (sorry, validators don't work so well with checkboxlists - they say 'huh? what is so hard about validating 2 out of 5 were checked without causing a page reload....and then resorting to a page of .js code)

What Atlas has done with executing webservices from javascript allows for some creative problem solving - and further more - it keeps the 'logic' where it belongs - javascript in my opinion can serve as a bridge, but not where you want to put a bunch of business logic. I'm concerned that Atlas will become this monolithic big javascript library - and I don't know if I think that is the right direction.

So, continue to solve this client vs. server issue - that is key to all of this. More and more my clients want this rich app running in their browser. They don't understand this statelessness, etc... they don't understand the way javascript works - they just want their application to react similiar to how they work in Word, Excel, etc...

I really enjoy developing on the web - innovations like callbacks, etc... push the envelope - I'm interested to see where XAML takes us.

genium

Posted on 5/16/2006 @ 10:05 PM
I dream about Semantic Web, to lead the Web to its full potential, the future of the Web where information would be structured and interpreted semantically and contextuellement by the machine as well as by "Homo Internetus", thanks to the fabulous contributions of XML...

I found these pictures:

http://photos1.blogger.com/blogger/2818/1046/1600/linternux-oschart.jpg

http://photos1.blogger.com/blogger/2818/1046/1600/linternux-mashupchart.jpg

And i guess there is a need to have a presentation layer truly common to the Web and the Windows world...

Daniel Puzey

Posted on 5/17/2006 @ 2:40 AM
Personally, I wish we'd take a step back. The fundamental problem we're facing is that we're trying to mould a document delivery system into an application delivery system. Our HTML document viewer is being asked to turn into some kind of arbitrary application host, and that just won't work easily.

How many (decent) applications do you know that are hosted in a Word document? Why are there so few? Why do we all think a HTML document should be different?

C# in the browser doesn't exist because the browser isn't an application host, it's a document viewer that's had a minimal scripting language crowbarred in to it. Instead of trying to crowbar something more complex in, we need to step back and /design/ something to deliver applications the way we want to.

From what I've seen so far, the WinFX browser-delivered apps have the right idea. Write pretty much a regular windows-forms style app in XAML, and make it available across the web. Develop in a code model and language you understand, because they're the same tools your regular non-hosted app was written in. The platform handles distribution, and you don't have to write reams of hideous javascript.

Don't get me wrong: ajax is impressive, and allows for some nice behaviour on small-scale web applications - order forms and the like. It's not the future of rich web applications, though, because ultimately it's a verbose hack to get around limitations of our platform. The future will be the platform that doesn't have these limitations...

All just my opinion, btw ;)

Fnustle

Posted on 5/17/2006 @ 9:51 AM
Good ideas, but unfortunately Microsoft will never add these components to the browser because it is tantamount to handing Google and Yahoo a gun and saying "shoot me please." Microsoft is banking that Avalon will be like handing everyone a gun, but keeping a bazooka for themselves. (because of their headstart on developer expertise)

Fnustle

Posted on 5/17/2006 @ 10:08 AM
Therefore the browser innovations need to be driven by Firefox/Google but unfortunately both are completely lacking in a vision for developer support, at least from what I've seen. I mean, Mozilla browsers still haven't been able to add "inline-block" layout even after years of designers begging for it to be added. This means either that Firefox code is a big bloated mess, or that the orginal developers who knew the deep stuff are no longer around (or both). And I have a sinking feeling that with each subsequent release Firefox is becoming uglier and more bloated. It is absolutely in the interest of the entire Internet minus Microsoft to improve FF development support, so it amazes me daily that there is no effort put toward it. They are either incredibly stupid, suicidal, or have already ceded the war.

Steve

Posted on 5/18/2006 @ 7:23 AM
Great response, I think you mention some very important things here.

"The fundamental problem we're facing is that we're trying to mould a document delivery system into an application delivery system."

I think we need both. I was under the impression the smart client and 'click once' technology was to address the 'application delivery system"

I look at how Macromedia has used Flash to create this model. Perhaps it's success in getting people to download and install the flash player is that they have made it a simple process.

Has Microsoft made getting the .NET framework a simple process?

Daniel Puzey

Posted on 5/22/2006 @ 5:19 AM
Well, the .NET framework is on windows update so, arguably, you've got about as good a process as you could have. In theory, once the WinFX runtime is on windows update aswell, the XBAP applications will have the same process. I've also been told that there are plans to make the browser framework cross-browser compatible so, in theory, and in time, you could run a windows browser-app using Firefox as host. I suspect that'll be a while off, though, since their own platform will obviously be priority.

You're absolutely right that we need both document and application delivery systems. The problem with what we're talking about, though, is that extreme uses of ATLAS are trying to turn one into the other.

I think SmartClient was /supposed/ to be the solution for application delivery, but it's never matured enough to be a widespread platform, from what I've seen.

Steve

Posted on 5/22/2006 @ 5:10 PM
I think your last post on Script# is the top of my wishlist...fantastic Nikhil!

That was my very first post at this thread. I love the C# language, and I like what I see you doing sir!

Mark

Posted on 5/23/2006 @ 1:06 PM
JS is pretty good but I would love to see a more powerful scripting language like Python being embedded into browsers.

Rick Strahl

Posted on 5/23/2006 @ 2:46 PM
Interesting discussion that mirros some thoughts I've thrown out on a few occasions.

I think the problem we're all facing moving forward is that we think of the client and server as separate entities when really in the context of Web applications they are part of the same platform that delivers the entire application. There's a huge disconnect between client and server and ATLAS is maybe the closest shot I've seen that is trying to bridge this gap. I'm not holding my breath... innovation is dead in this space.

What's needed is a richer client platform that includes better control support (this is often overlooked), support for direct data access (databinding), graphics primitives (SVG integrated with DOM support?). The real bottleneck for richer development seems to be the DOM. There needs to be some change here or a mainstream move to something else.

XAML looks real promising, but it's a non-starter coming from Microsoft. Nobody outside of the Microsoft sphere of influence is going to want to touch it. Pity, because it gets it right when it comes to the feature set and even implementation of the key concepts needed for a rich application platform.

It's nice to see others are starting to make some noise about this and hopefully more people will discuss the lack of innovation and over time we'll see some real forward movement in the platform.

Eric Ewing

Posted on 5/24/2006 @ 7:53 AM
It seems to me that since the Internet was originally designed to share information across distances that the browsers of today would not only display the documents, but do so in a standardized manner. Obviously, we have not been the recipients of such standards and developers will attest to the great lengths they go to make their websites look and feel the same no matter where they may be viewed from.

Over time the requirements for the Internet have changed. No longer just about information, but about interaction and power of a desktop. I believe that the approach that Microsoft is taking with Windows Vista, XAML, and smart clients will lead to some truly remarkable applications. Unfortunately, resistance to Microsoft will mean that browsers will stay around for years to come. Back to the beginning, the purpose of the Internet was to share information. We lack the ability to look at information in a way that makes the most sense to us.

With the promise of XML (and similar derivatives) and automated delivery we are still reading everything through the browser and often have little control over the look and feel of our information. Every website has similar features, a menu, a header, a footer, and some informational content. Yet, each website feels entirely different and a lot of effort is spent in getting the website to behave like the website next door. Browsers should become an application that allows you to see information and interact with the information in any manner you would like. I'm not talking about an aggregator, but an application that truly behaves like an application and allows you to have the power of the desktop.

I believe Nikhil's third point, "Instilling true support for applications in the browser," hits at what the Internet is trying to become, but cannot with the current platforms. When was the last time that there was real innovation for the browser? Even AJAX frameworks are really just easier methods for creating fancy JavaScript that is sent to the browser as text. It's nothing new, but just repackaged for the masses.

In the meantime, I think it would be beneficial for browser maker's to integrate tools that are already available to desktop users. For example, a data grid that handles not only the displaying of information, but also the sorting, grouping, and editing of information more commonly displayed in haphazard tables. Or, comboboxes that allow a user to checkmark a list. A tree control that takes an XML structure and displays it natively. On and on...

Interestingly, nearly every post has "hope" or "hopefully" inscribed in response. Hopefully, some innovation will take place and not be just another enhancement to feature we already have.

Steve

Posted on 5/28/2006 @ 4:50 PM
I'd like to know why IE chooses not follow the same DOM standards that Mozilla, etc... have held too.

ie. at this point in time, you'd think IE would be a DOM Level 1,2,3 browser.

So, a wishlist item for me would be for Microsoft to get IE to follow the same DOM standards and be DOM Level 3 browser.

Steve

Posted on 5/28/2006 @ 4:54 PM
Read here for a start:

http://erik.eae.net/archives/2006/02/01/12.10.34/

Nikhil - as someone at Microsoft, has your asp.net team ever questioned this within your company?

Fred Moses

Posted on 6/2/2006 @ 2:33 PM
First impessions: I really like the idea of having a well worked-out and tight language for scripting. As a C# programmer, I particularly like having an automatic translator for that. The direction I'd particularly like to see is seemless distribution of execution between the browser and the server. Microsoft was at the forefront with XMLHttpRequest. Perhaps it is time to review the model and press onward.

Nik Donets

Posted on 6/14/2006 @ 10:58 PM
I really don't understand why they would want this:
2D drawing and support for canvas

With the current advancements Macromedia (argh.. pardon my French, Adobe) made in Flash Player as well as Flash IDE, drawing graphics in browsers would be really painful and will not be adopted by many developers (just like the drawing API's supported by IE which was a real waste of time to implement since nobody uses it). Well, that is unless you want the basic stuff (ie: draw a plain 3-colour graph). A better solution would be to free the Flash Player up in browsers by providing native support. Why reinvent the wheel when you have such things as the Flash Player already available and greatly improved over the last couple of years?

Nikhil Kothari

Posted on 6/17/2006 @ 2:23 PM
I think 2D drawing APIs and canvas are useful, esp. for data visualization (like the chart scenario you mention) - there is no statement about the implementation - whether its built into the DOM or is available via something like Flash or another plugin. What would be nice is to not have black boxes (as you do with HTML and Flash) - there needs to be synergy in terms of APIs, ability to intersperse content, ability to use a single programming model etc.
The discussion on this post has been closed. Please use my contact form to provide comments.