Some free form thoughts:
For a long time - I have thought that
the web browser was interesting. It is a fairly primitive set of UI
components that you can declaratively ask to be rendered - via HTML/
CSS (for the most part). You also have the option of interactively programming to
the browser's API - mostly in JavaScript. The powerful part was/ is
that you are sending text across the wire from 1 machine to the next
- declaring to the browser what to do.....
So - the issue is/
has been that the browser experience is not as 'rich' as a desktop
application ... AJAX - SchmaeJax - I know... but it is not as rich -
period. Oh sure - there have been valiant efforts - Flash, Mozilla's
XUL, etc - but in essence, but still - we are declaring our intent to
a web browser - an application of limited scope - inside a much more
complete operating system....
The next step is to do the much
same thing - send declarative intent - over the wire - BUT:
1)
To a richer rendering engine (the web browser in browser era)
2)
With a richer programmable API (the DOM API / browser API in browser
era)
3) With more robust programming language possibilities
(JavaScript in browser era)
So - we send declarative intent to
- the OS. This is accomplished with an extensible markup language
that can reach into more domains than HTML did/ can. HTML is a
limited domain markup language. One XML document can contain multiple
over-layed namespaces of information that can be consumed in
differently by different aspects of the interpreting application.
If the browser is just a subset of the
computer's (OS's) functionality that can have it's behavior invoked/
declared, the end of that chain of logic is that the OS should just
allow it directly - the superset of functionality. With XAML -
Microsoft brings some of this to the table.
1)
richer rendering engine (the OS - WPF, Expressions stuff, GDI, etc. in the post-browser era)
2) richer programmable API (.Net framework in the post-browser era)
3) robust programming language possibilities
(C#, Vb.Net, etc.)
Granted -
security will need to be of central importance in this scenario -
where the OS can be so controlled- but that aside - this is the
logical step. I do not question this progression happening the
question is - what other vendor(s), OS's, etc. will support this type
of idea? Maybe something like:
1)
richer rendering engine (Linux with some core rendering engine .... SVG based perhaps)
2) richer programmable API (KDE, QT, more abstraction of the raw Linux functionality from elsewhere)
3) robust programming language possibilities
(Java, Ruby, Something else...)
Interesting - I admit - these are fairly off the cuff thoughts, you never know what will happen.
What Microsoft is doing with
Expressions and that realm of stuff is also part of the next
generation of application development – breaking away from the
classic looking application. Flash is a beautiful looking thing in
browser world. It is still limited. An application with the full
power of your computer looking like a flash application could –
will be a lovely thing. Making 3d user interfaces will become real
soon. Making really animated – lush applications will be real soon.
In this space – an SVG player may come into play.
A Windows Virtual Machine?? I wonder if
at some point – computing resources (hard drives, memory, etc) will
be so commoditized that all OS's will basically be able to simply
access a sort of grid of resources.... Then all “OS's” will be
something like a virtual machine atop generic resources. They are
then just set of APIs for accessing truly common resources and
abstracting functionality into a software computer. The resources are
the same – the abstraction on top of them – the software is what
is worthy to developers. Java was a better abstraction of the
computer resources than C APIs (in my way of thinking) for
non-primitive operations. C# is even a slightly better set of
abstractions (delegates, events, etc are really better than Java –
I am sorry. I DO love Java – I am just being honest). Anyhow - it is
really not too far fetched to envision Windows or something from MS as
being a portable Virtual Machine that could run like a JVM etc....
anyhow.........
Anyhow – I have rambled..
-Chris