Wednesday, 14 December 2011

Ditch the Web Browser

This article is on why I think it is time to ditch the traditional Web Browser, with it's support for HTML (5) and JavaScript, Flash, Silverlight, Java etc..

So, the first question is, what is wrong with what we have got?

  • 1) In HTML, textfields etc.. are nested within their layout containers. This makes it difficult to move things around within the browser. I think the 'data' should be sent back as one concern, the 'default' layout as another concern, and the 'widgets' used to render the data in another section. Validation rules should be sent back separately too. The layout binds widgets with data items and the data items are bound to validation rules. Look and feel should be separate as well (which it generally is at the moment with CSS, as long as developer's don't add styling inline). Finally, security rules should be sent back as well. Caching rules should be built into the page too!!! So, in terms of separating the concerns of a web page, we already have rules: a) data b) widgets c) layout d) validation e) styling f) security g) caching The advantage of this, is that we can then leave the layout on the client, and just the data is sent back and forth. The clients can customize the layout information.
  • 2) Data interchange format This is typically HTML, JSON or XML. But it is hard to process these languages on the client side. The data interchange format should be transparent to the web page, why should it care what the format is? Then we can start supporting technologies like Protocol Buffers and even parts of Thrift. We have marshallers plugged into the browser to allow it to understand the different standards based data formats. I mean, if I want to pass some data from a flex widget to a JavaScript widget, how hard is that at the moment, and then call a SOAP based web service using Ajax? This is far too difficult, this stuff should be simple.
  • 3) Strictness The browsers, allow developers to send back badly formed pages, they also allow developers to put styling inline, just put scripting in the middle of a page etc.. Why? This is bad practice, we should be trying to help developers create maintainable web pages. Let's make things tighter.
  • 4) Speed of new features To get new features into the browser, we have to wait for a standards committee, then have to wait for it to be implemented into a browser. Why not make the architecture of this new platform, pluggable. We want control still over what get's get officially released however, else you get swamped with plugins, and you don't know which ones work well and which ones don't.
  • 5) Development of Web Pages should become easy Let's open up development to anyone. Let's create a rich IDE and allow a user to drag a button onto their web page, and then right click on the button and select -> "When the user left clicks this button..."

    -> "I want to my text box to ....". -> "turn the colour red" -> "I want to popup .....". -> "Customer Details Window" -> "I want to hide ...." -> "I want to mimize .... " -> "I want to resize. .... " -> "I want to move this ... " -> "I want to reduce this in size by %"

    Typically, we are normally doing very basic things in a web page, but it is really hard work to get a new page of data back
  • 6) Richer widgets built in Why have we still not got a paginatable table available to us, that allows us to sort and filter???? This is such basic functionality that is not available to us.
  • 7) Event mechanism Too restrictive, what if we want to broadcast events within a web page to other components / widgets that we did not even design? (that have come from another site??)
  • 8) Graphics built in Obviously we have HTML 5 now, but needless to say Graphics should be built in, along with Video tags, Charts, Maps (with pluggable providers), Timelines etc..
  • 9) Advanced Widgets SMS message, Nested Webcam Panel, Skype, Social Networking Widgets, Instant Messenger. I want to be able to build up my web page how I want it.
  • 10) Back button does not work With new Ajax / RIA style apps, the back button does not work
  • 11) Too many browsers Constantly trying to get web pages to behave the same in different browsers.
  • 12) Testing is hard
  • 13) Developing is too hard

New Browser Design Goals

  • 1) The user should be able to drag and drop their web pages around, to organize the page how they want.
  • 2) Browser, sent the following items as separate concerns, data, widgets, layout, validation, styling, security, caching.
  • 3) User should be able to style up the page how they want.
  • 4) User should be able to produce a 'mashup', ie. create a 'pane' and drag it into the web page on the browser.
  • 5) Back button should literally 'undo' last action, OR take user back to previous site (if they have just changed URL).
  • 6) New Browser, should allow pluginable architecture for new language features. What happens if we want a 3dvideo tag?
  • 7) Rich Widget library
  • 8) Event bus built in to allow communication between heterogenous components running within the page.
  • 9) IDE that allows users to build web pages easily.
  • 10) Security should be built in from the ground up
  • 11) Parental controls should be configured on widgets

No comments: