One problem that I have seen in computer software is the lack of integration. There are several different fields in computer science—computer graphics, artificial intelligence, networking, databases, compilers, programming languages, etc—and those fields have always existed in isolated silos.
Each of these field have their own different and inconsistent operating system APIs and tools. They each have their own set of monolithic applications, in which their technologies are incorporated to the exclusion of all others.
Rarely, does one find an application that incorporates technologies from multiple different fields. Desktop applications don’t typically work with databases or work with networking. Three-dimensional graphics is limited to games and rendering software. Anders Hejlsberg remarked that programming languages don’t include any integrated support for database programming, which is actually a major part of custom business programming. Compiler technology is largely confined to development tools, with the exception of programmability features in desktop application.
Microsoft is moving to a sort of a grand unification. A key message for developers is integration of previously disparate APIs and technologies.
First of all, Longhorn is based on managed code, which provides a common intermediate language and type system for programming languages to use. All new APIs, speech, natural language, search, graphics, tablet, systems managements, etc are all providing managed interfaces, often exclusively, with consistent naming conventions enforced by FXCop.
The .NET Framework ships with three different compilers, JScript, VB, and C#, already in the OS so it’s a lot easier to add programmability features to an application. Version 2.0 of the framework introduces dynamic compilation features, which opens up a lot of possibilities. (This reminds of how GDI BitBlt dynamically generates code from an ROP code for fast blitting of images to the screen.)
The Avalon presentation framework unifies documents, media, 3D, vector graphics, and controls. The new databinding mechanism ties databases and non-database resources to presentation. It also brings the advantages of Web to desktop, such as browser navigation, Web deployment, declarative markup, and inductive user interfaces. Indigo unifies a number of different communication technologies. The original plan for WinFS (now scheduled for 2007) would have merged the filesystem with database technology and introduced object persistence. It also promised to make data more transparent and shareable between applications.
I think that we will be seeing more holistic and richer applications as a results of integration. Applications that are more network-aware, provide richer presentation, are easier to deploy, and more readily share data with the system, devices, websites, and other applications.
Microsoft is also moving toward disintegration of monolithic APIs as well with sport a more componentized, extensible design. The new APIs, Avalon and Indigo, are much more extensible, partly from being based on an object-oriented framework, but also from explicit design in which they “dogfood” the extensibility mechanisms they exposed rather than rely on internal calls. The Phoenix research project looks to break up compiler technology, so that the parser, optimizer, code generator, and other parts of the compiler no longer have tight dependencies and are swappable with and extensible through third-party components. There’s been reports that Longhorn are moving from a one-sized fits all user-interface, towards a more customizable desktop.
After watching Windows play catch up to other operating systems, UNIX and MacOS X, it will actually be nice to see it begin taking a leadership position.