Sunday, December 14, 2008

LINQ and Entity Framework Posts for 12/8/2008+

Note: This post is updated daily or more frequently, depending on the availability of new articles.

Updated 12/14/2008 10:00 AM PST: Several additions 
• Updated 12/11/2008 2:30 PM PST: Additions
• Updated 12/10/2008 10:00 AM PST: Additions and minor corrections

Entity Framework and Entity Data Model (EF/EDM)

••• Simon Segal describes a promised attempt to “implement the Specification pattern and fetching strategies with a IRepository” for EF, as he did previously for LINQ to SQL, in his More Entity Framework frustration [I want my Specification Pattern] post of 12/14/2008. (See his Entity Framework - Learning Materials recommended post of 12/9/2008 post below.)

Simon says:

Now it’s late and I am starting to get annoyed with the Entity Framework. As it turns out (as far as I can tell), LINQ to SQL is far more pliable in managing dynamic queries. Why? Well EF doesn’t play nice with Expression<T>, specifically Expression<Func<T>> etc. Errors arise when you build and invoke Expressions because the Entity Framework doesn’t support Expression.Invoke() which is required to combine Expressions.

And he concludes, “As I said it’s late and so far I have a big headache but I will persist.”

••• Ritesh Rao has a similar objective (Implementation of the Specification pattern using Expressions) for LINQ to SQL, NHibernate, and EF with his NCommon project on CodePlex, which includes frameworks for implementing the Unit of Work and Repository Patterns. His Update on NCommon post of 12/12/2008 reports on the latest changes to NCommon v0.2.

Click here for more information on Ritesh’s related Rhinestone MVC-based work item/issue tracking project.

••• Julie Lerman’s Programming Entity Framework ends up at 800 pages! post of 12/13/2008 indicates that her book grew 300 pages from the original estimated length.

•• Simon Munro categorizes the LINQ to SQL vs. EF conflict as a battle between what Microsoft’s Pat Helland calls Controllers and Doers in his Controllers, Doers and the Entity Framework post of 12/20/2008. Simon says, inter alia:

Asking Microsoft to ramp up LINQ to SQL is asking them to position a Doer framework against a Controller framework - in the enterprise.  That will simply not fly - Microsoft needs a framework that makes the Controllers buy into it and that framework is the Entity Framework.  From an EA point of view, the EF is compelling - not only are developers able to use it's artifacts but they can be re-used across a wide variety of technologies and services; EF is positioned to run RESTful through ADO.NET Data Services, be viewed by SQL Reporting Services and I am sure Biztalk, MOSS and any other MS technology along the way.

•• Beth Massi’s Master-Details with Entity Framework Explicit Load post of 12/10/2008 contrasts EF’s optional eager loading of associated entities with LINQ to SQL’s default lazy loading approach.

Matthieu Mezil describes on 12/11/2008 two new extension methods, ObjectContext.Add, ObjectContext.Delete, that substitute for the AddToCategorySet() method and a DeleteOject() methods.

Tony Sneed reports on 12/11/2008 that a Bug in EF v.1 Limits N-Tier Scenarios interferes with Danny Simmons’ AttachAsModified() extension method with entities having associations. The issue is related to EF v1 ’s disdain for foreign key values, which I’ve complained about since EF’s early days. From my Drag-and-Drop Master/Details Windows Forms Still Missing from Entity Framework SP1 Beta of 8/3/2008:

I requested that EF provide optional visibility of foreign key values as item #9 in my Defining the Direction of LINQ to Entities/EDM post of May 29, 2007 to which EF architect Michael Pizzo replied in a comment:

9. Provide read-only access to foreign key values.

This is actually a feature I’m fighting to get into our final milestone for V1. Can you describe the scenarios where this is used? Do you need the ability to query on the foreign key value, or simply expose it on the domain object?

I described the scenario to Mike as emulating LINQ to SQL’s autogenerated databound grids, which let you change EntityRef foreign key values that aren’t a component of the object’s EntityKey, such as Order.Employee and Order.ShipVia.

Tony’s Better N-Tier Concurrency Management for the Entity Framework post of 11/8/2008, which I missed, describes a CreateEntityFromObject extension method, “which accepts a DTO and uses reflection to copy properties from the DTO to the Entity and create an EntityKey.”

•• David Sceppa’s IBM's ADO.NET Provider Supports the Entity Framework! post of 12/2/2008 apparently got lost in the EF shuffle because it just appeared in my reader today. The announcement on the IBM site was dated 11/28/2008.

•• Ward Bell, V.P. of Product Management for IdeaBlade, which publishes the DevForce EF application development platform that’s based on Entity Framework, has written an Is Entity Framework For Real? white paper, which is undated but written after Tim Mallalieu’s Clarifying the message on L2S Futures post of 10/31/2008. Ward’s answer is “yes,” but obviously IdeaBlade has its own agenda.

• Stu Smith’s posts in the “LINQ to SQL” section describe his preference for LINQ to SQL over EF. Jeffrey Schwartz quotes Stephen Forte, Stu Smith, and me in his Data Access Shakout: What's A DB Developer To Do? post to Redmond Developer News’ DataDriver blog of 12/10/2008.

Rick Anderson’s Explicit connection string for EF post of 12/9/2008 shows you how to customize EF when you have “multiple data models or need to pass in the the construction string at run time.

Julie Lerman posted Downloads for DevTeach Entity Framework Deep Dive session and Full Day Workshop on 12/9/2008 to the DevTeach Web site.

Simon Segal’s Entity Framework - Learning Materials recommended post of 12/9/2008 lists his initial observations about EF after deciding to move from LINQ to SQL to EF for future projects and promises to:

[H]ave a go at getting the specification pattern working with the Entity Framework as I did with LINQ to SQL previously and think about how to deal nicely with Fetching Strategies in EF.

Zeeshan Hirani offers his 500-page PDF file of content about Entity Framework and a project using Northwind as the data source as Contributions to Entity framework community in his 12/8/2008 post. Zeeshan says:

My intent was to use this document as learning guide for me and my co-workers but I felt that content is useful enough to benefit rest of the community.


••• Scott Williams adopts the Repository pattern in his LINQ To SQL and Tight Coupling Part 4 post of 12/12/2008 after watching Rob Conery’s screencasts for his MVC Storefront project. Scott points out:

Should you decide to go with another technology, be it the Entity Framework, NHibernate, or even a non SQL Server database, you would only need to create an IRepository implementation for that particular framework/database. It can be tedious for large quantities of tables, but that is the price you might have to pay for loose coupling and a friendlier design. Of course, you could refactor that to automatically set properties through Reflection or something, but that is another article altogether.

Earlier posts in Scott’s series are:

••• Michael Desmond, founding editor of Redmond Developer News and editor at large of Redmond magazine, quotes Anders Hjelsberg in a Digital Darwinism article of 12/11/2008:

The bigger a company gets, the more there is to keep track of and the more overlap that you see because we are doing more things. Now the LINQ to SQL project was an interesting project because it was built by the C# team, but it is clearly in the data domain. We built it because we needed something real to validate LINQ, and we strongly felt that LINQ would be nothing without a strong O-R mapper to support it. …

LINQ to SQL is not dead. I can assure you, it is not dead. Nothing ever goes away. We have never done that and we never will. [Emphasis added.]

••• Andy Conrad’s IUpdateable for Linq to Sql - Fixing a few issues post of 12/11/2008 provides a fix for the IUpdateable.ResetResource() method for his IUpdatable for LINQ to SQL implementation. Andy also mentions that “there is some considerable work to do” on his ADO.NET Data Services port for SubSonic. (See the SubSonic posts in the “LINQ to Objects, …” section.”)

•• Jeffrey Schwartz quotes Stephen Forte, Stu Smith, and me in his Data Access Shakout: What's A DB Developer To Do? post to Redmond Developer News’ DataDriver blog of 12/10/2008. Jeff’s story continues the LINQ to SQL vs. EF v1 and v2 saga.

• Stu Smith rings in on the LINQ to SQL vs. EF issue with his LINQ-to-Entities: The Blackberry Storm of ORMs? post of 12/3/2008, analyzes problems and omissions in LINQ to Entities and concludes:

In my opinion, we seem to have given up on a perfectly good, working ORM solution (LINQ-to-SQL), and replaced it with a buggy, half-baked one (LINQ-to-Entities). I sure hope v2 improves matters, because for now, switching to the entity framework is a downgrade.

and continues with a list of five more objections to EF in LINQ-to-Entities: Follow-Up of 12/4/2008. He also points to Simon Munro’s Move over LINQ to SQL - you have served your purpose post of 11/2/2008. (Thanks to Kristofer Andersson for the heads-up on these posts I missed.)

Stephen Forte’s Is Linq to SQL Dead? Yes, but.… essay of 12/7/2008 proposes the list of actions Microsoft must take to make EF the “preferred data access solution in .NET 4.0. Presumably he’ll make his requirements official at the next ADO.NET Advisory Council meeting, whenever that might be.

So far, Stephen hasn’t responded to my request to provide a link to Stephen was kind enough to send me a PDF copy of:

Data Direct Technologies’s recent .NET Data Access Trends Survey (November 24th, 2008) [that shows] 8.5% of production .NET applications use L[INQ] to SQL as their primary data access method.

Be sure to read the comments. (If he or I find a link to the survey, I’ll post it.)

Mark Blomsma contests Stephen’s conclusion that LINQ to SQL is dead because it’s one of the topics of Mark’s recently completed MCTS Self-Paced Training Kit (Exam 70-561): Microsoft® .NET Framework 3.5 ADO.NET Application Development. Mark says in a comment of 9/2/2008 to the preceding post:

I've just finished up writing the LINQ to SQL chapter for the "MCTS Self-Paced Training Kit (Exam 70-561): Microsoft® .NET Framework 3.5—ADO.NET Application Development".

If you want to certify yourself as a .NET 3.5 certified developer and you pick this exam, then you'll have to learn LINQ to SQL to pass the exam.

Like you say Steve, the technology will be around for a while

Damien Guard’s LINQ to SQL templates updated post of 9/7/2008 includes a link to a 27-second, quick-shuffle mini-screencast showing how to use the templates.

LINQ to Objects, LINQ to XML, et al.

Bob Beauchemin asks Is LINQ the next OLE DB? "LINQ-ed" Server as a rowset source? and then answers with this conclusion:

The impression I get (I could be wrong) is that LINQ might become the next OLE DB. OLE DB was supposed to go beyond relational data sources to provide extensions to the column-row paradigm and provide "data access" over non-relational systems. … Anything that has any API that can implement IQueryable/IUpdateable. Yes, LINQ to SQL (or LINQ to Entities) doesn't always generate exactly the most optimal SQL that generates the best query plans. NO argument. But T-SQL/PL-SQL/etc doesn't always generate the most optimal query plans for the storage engine 100% of the time either.

The list of third-party LINQ to Whatever implementations makes me agree wholeheartedly with Bob’s conclusion.

Rob Conery reports that SubSonic 3: Alpha Is Ready as of 12/10/2008. He notes that SubSonic 3 Alpha shares the following features with LIINQ to SQL:

    • ForiegnKey properties on the Class template, so you can now access Product.Suppliers a la Linq To Sql.
    • Validation methods for each property on the Class template, so when you set a property you can override a "OnEmailChanged" and "OnEmailChanging(string value)" - just like in Linq To Sql.
    • Inflector to the Utility class, allowing you access to methods such as Pluralize(), PluralToSingular(), ToProperCase, ToPascalCase, etc. This is a class for naming only and is part of the templates. (LINQ to SQL offers PluralToSingular() only.)

Rob credits Matt Warren for the LINQ to SQL-like features:

These aren't the only changes - Matt Warren released part 12 of his Linq tutorial which addressed 99% of the issues people were finding, including the use of variables in the Linq call. Hi IQToolkit is awesome, and is the backbone of SubSonic 3.0.

Rob posted SubSonic 3 Alpha Updated later the same day.

Rob Conery asks for assistance in his SubSonic Linq Support - Help Me post of 12/8/2008. Here’s what he says is in the work for SubSonic 3.0:

I have a few ideas, but before I get to that here's what I think we'll need to handle:

  • Linq Support. SubSonic will be a "vector" for people learning linq. I want to be able to help them
  • Pattern Support. There are some new approaches in SubSonic 3 (Repository, Unit of Work, etc)
  • T4 template support and sharing. This is CORE to what I want to do, and I think these t4 files should be easy to find, ratable, etc.
  • Standard support stuff (installation, extension, etc)
  • Source integration - I want people to be able to browse the code
  • Bug Tracker - this really should be part of the site as one unit
  • Wiki?

Rinat Abdullin discusses the DbLinq provider’s dynamic expression parser in his Dynamic Linq and Expression Parsing in .NET as a hint of C# compiler extensibility post of 12/8/2008.

ADO.NET Data Services (Astoria)

••• Raju Phani’s Customizing Serialization of Entities in the ADO.NET Data Services Client Library post of 12/11/2008 explains how to prevent properties that aren’t present on the server from being serialized into the ATOM payload and throwing exceptions.

The ADO.NET Data Services Team announce on 12/10/2008 that Their Forum Has Moved! Visit the New Forums Platform Today! The forum was locked down for the move when this post was updated. Update 12/12/2008: The new ADO.NET Data Services forum is operational (without “Pre-Release” in the title.)

ASP.NET Dynamic Data (DD)

••• Steve Naughton offers 13 Great Links for Dynamic Data from David Ebbo (7), Scott Hunter (1), and Rick Anderson (5) in this 12/12/2008 post.

••• David Ebbo’s Using Dynamic Data with multiple databases post of 12/11/2008 uses LINQ to SQL and EF data sources from Northwind to demonstrate multiple database use and simulate naming conflicts. Sample code is available for download.

SQL Data Services (SDS) and Cloud Computing

••• Roger Jennings reports in Test Harnesses Compare Amazon EC2 with SQL Server and SimpleDB Performance of 12/13/2008 on his first round of comparing the performance of Amazon EC2 with SQL Server Express, Amazon EC2 with SimpleDB, and Azure Table Services with Northwind’s Customers table/entities as a data source. As expected EC2 with SQL Server Express outperformed the alternatives. (Updated 12/14/2008.)

••• Larry Dignan’s Handicapping cloud computing: The big picture post of 11/12/2008 quotes from a Bernstein Report named “The Long View: Netbooks, Wireless and Cloud Computing — Client Software’s Imperfect Storm” by analyst Jeffrey Lindsay:

Although Amazon was arguably a pioneer of cloud web services and some analysts got swept up in the “Books to Bits” hype we think the revenues generated by Amazon’s web services are effectively negligible. …

We expect the software and applications environment to remain heterogeneous for the foreseeable future – more in line with Microsoft’s vision than Google’s. We disagree with the “computers as a utility” and “device as dumb terminal” models where all applications run in the cloud.

Dignan copies an interesting diagram of “online utilities and applications” for cloud computing or software as a service, which includes the usual suspects, Amazon, Google, Microsoft, and SalesForce, along with a few other firms not usually associated with cloud computing.

Dignan adds his own out-of-context observation:

What’s notable is how much Sun has been a player in cloud infrastructure yet has failed to capitalize.

It’s ironic that Sun announced on 12/9/2008 that it was “phasing out” its service and “will be implementing in new services from its Cloud Computing division,” according to Charles Babcock’s Sun Discloses Plans To Enter Cloud Computing post of 12/10/2008 for InformationWeek. Babcock notes that “neither spokesman [at the December 9 press conference] committed Sun to supply specific [cloud] services within a specific timeframe.”

••• Pat Helland’s Building on Quicksand" Paper for CIDR (Conference on Innovative Database Research) post of 12/12/2008 contains an abstract and link to the paper he coauthored with David Campbell for the CIDR conference, which will be held at the Asilomar Conference Grounds*. The paper deals with building reliable systems with unreliable components and a “relaxed model for fault tolerance,” which implies:

1) Everything promised by the primary is probabilistic. There is always a chance that an untimely failure shortly after the promise results in a backup proceeding without knowledge of the commitment. Hence, nothing is guaranteed!

2) Applications must ensure eventual consistency. Since work may be stuck in the primary after a failure and reappear later, the processing order for work cannot be guaranteed.

Note that it’s the application that must ensure eventual consistency. Pat uses Amazon’s Dynamo Storage system (“a replicated blob store implemented with a Distributed Hash Table”) and Shopping Cart application as an example. Pat says:

Dynamo is interesting in many ways including its conscious choice to support availability over consistency. Dynamo always accepts a PUT to the store even if this may result in an inconsistent GET later on.

* The Asilomar Conference Grounds, located on the shoreline of Monterey Bay, is part of the Asilomar State Beach and Conference Grounds State Park. The original lodgings were designed by noted Northern California architect Julia Morgan, and the Grounds are listed in the National Register of Historic Places.

••• Mike Amundsen asks POST to Azure tables w/o PartitionKey/RowKey: that's a bug, right? in this 12/13/2008 thread in the Windows Azure forum. Sure looks like a bug to me.

••• Kevin Hoffman’s Azure Storage Authentication Failing when it shouldn't thread of 12.12.2008 in the Windows Azure forum complains about the amount of configuration tweaking required between local and cloud deployment. I haven’t run into that problem with Azure’s table storage authentication. I have both local and cloud config data in my ServiceConfiguration.cscfg file and comment out one or the other.

••• Mike Amundsen describes the “cleaned up” version of his Azure.exe command-line app for manipulating Azure tables in his Azure.exe command-line app posted post of 12/12/2008. He’s also posted a ZIP set that includes all the source for Azure.exe and the Amundsen.Utilities assembly.

Mike’s Azure.exe sample app posted and Azure Examples @ github threads of the same date in the Windows Azure forum provide additional details, including syntax examples.

••• Rocky Lhotka’s Some thoughts on Windows Azure post of 12/11/2008 underscores the need for Microsoft to 1) define it’s pricing model for the Azure Services Platform and solve the lock-in problem, which Rocky (and I) believe “will be the biggest single roadblock to adoption for most organizations (assuming reasonable pricing - which I think is a given).” However, the main point of Rocky’s post is:

[T]he biggest benefit to Azure is one important concept: an abstract runtime. [Emphasis added] …

I think Azure (whether it succeeds or fails) illustrates a different solution to the [inelegant and inefficient “host a virtual machine”] problem. Azure defines a limited architecture for applications. It isn't a new architecture, and it isn't the simplest architecture. But it is an architecture that is known to scale. And Azure basically says "if you want to play, you play my way". None of this random use of platform features. There are few platform features, and they all fit within this narrow architecture that is known to work.

Rocky then goes on to make an articulate and reasoned argument that abstract runtimes are “the real future of the cloud.” I agree.

Update: Rocky added Windows Azure and the value of restricted platforms/architectures on 12/12/2008 in reply to comments to his earlier post on the abstract runtime topic.

••• David Burela explains in his Silverlight hosted on Windows Azure post of 12/10/2008 how to start a Azure-hosted Silverlight project and in his WCF services hosted on Windows Azure post of 12/9/2008 how to get WCF services running under Windows Azure (despite the bugs). His earlier Guest post: Windows Azure - review from a developer article for Long Zheng’s I Started Something blog is a brief introduction to Azure.

•• David Aiken describes his Windows Azure Online Log Reader that’s available for download as of 12/11/2008. The reader eliminates the need to manually download logs and displays the data from copied logs in a GridView control.

•• John Foley’s Microsoft's Billion-Dollar Cloud Business post of 12/10/2008 for InformationWeek’s Plug Into the Cloud Blog quotes Stephen Elop, president of Microsoft's $18.9 billion Business Division, prediction at a New York analysts meeting about the future of Microsoft's software-as-a-service business:

Microsoft foresees half of Exchange, SharePoint, and Dynamics CRM revenue coming from online versions of those products within five years.

Foley continues:

Microsoft has been criticized, and rightly so, for being late to the game in cloud computing. After dragging its heels, Microsoft introduced its Windows Azure cloud operating system and the related Azure Services Platform in October. But Microsoft is noncommittal on delivery dates for its Azure technologies and services, an indication that, although its strategy has firmed up, much of the development work lies ahead. Elop had nothing new to share in terms of an Azure timeline that would help customers with their own planning.

It appears to me from the above diagram that the Azure team considers at least SharePoint and Dynamics CRM services as part of their platform, as well as SQL Services. Almost every Azure and SQL Data Services PDC 2008 session included the preceding diagram in the slide deck.

•• Andy Patrizio casts doubt on the preceding optimistic view of cloud service revenue in his Google, Microsoft Back Off on Datacenter Plans article of 12/10/2008 for Andy says:

In the case of Microsoft (NASDAQ: MSFT), a source close to the construction of its planned Chicago, Ill. datacenter said work has been scaled back and many modular containers being used at the site are just being parked but not hooked up. Also, the company has yet to begin construction on a West Des Moines, Iowa datacenter despite announcing it with much fanfare last year. …

Microsoft has publicly said it is cutting back datacenter expenses. On the last quarterly conference call to discuss the first fiscal quarter of 2009, CFO Chris Liddell said Microsoft would trim capital investments by $300 million, and he specifically said it would be on the datacenter side.

•• Jim Nakashima’s Multiple Service Configurations for a Windows Azure Cloud Service post of 12/10/2008 describes a workaround that lets you specify separate service configuration files for local and cloud deployment of ASP.NET applications. The workaround doesn’t lift the limit of one staged and one production project deployment.

•• Robert Zhu offers a “brief tour” of the The CardSpace "Geneva" Control Panel Applet in this 12/10/2008 post.

• Eugenio Pace continues setting the scene for his VeryBigCorp/SuperCloudySoftware Architecting Cloud Applications for the Enterprise saga with his Part III - SuperCloudySoftware meets VeryBigCorp CIO post of 12/10/2008.

• Mike Amundsen announces in his Azure Exampes @ github thread in the Windows Azure forum that his “plain old WebRequest/WebResponse” samples have “full support for Tables (GET, POST, DELETE) and Entities (GET, POST, PUT, MERGE, DELETE). … [S]upport for ad-hoc queries … should happen by tomorrow.” The samples don’t require Vista, Windows Server 2008, the Azure SDK or .NET 3.5+; they will run under .NET 2.0 and Windows XP.

• Om Malik’s Amazon Launches EC2 in Europe post of 12/10/2008 notes the addition of an EU site for EC2’s basic hosting service instances, but Windows 2003/SQL Server 2005 hosting isn’t available yet. Werner Vogels’ earlier Expanding the Cloud: Amazon EC2 in Europe article provides added details and links to additional resources.

Roger Jennings updated Windows Azure Test Harness Is Live! on 12/9/2008 to announce that entity deletion, recreation, and updating is now enabled for the publicly deployed version. Give the harness a test drive at (The layout problem with Firefox 3 was fixed on 12/10/2008.)

Daryl Plummer, a Gartner analyst whose purview includes Cloud Computing, describes Instant Experts Floating in the Cloud in his post of 12/9/2008. Daryl suggests:

  • Use Instant Experts like scalpels. You need them to do sanity checks on all those new things you keep hearing about and to pull out synergies with your current plans.
  • Make sure your “Instant Experts” don’t just Google all of their information. Go to the source or to trusted industry advisors (shameless Gartner plug).
  • Have your instant experts challenge one another. If they can’t explain it to each other, you won’t be able to explain it to the business.

It’s a good read.

Roger Jennings asked Is the Order of Attributes Returned by GETs on Entities Consistent? on 12/8/2008 in the Windows Azure forum. As far as I can determine, Microsoft orders their attributes alphabetically by attribute name. But, like Amazon, their response is that they make no guarantee of a consistent order.

Eugenio Pace’s Architecting Cloud Applications for the Enterprise - Part II - VeryBigCorp buys IssueTracker post of 12/7/2008 tells the story of VeryBigCorp signing up for SuperCloudySoftware’s IssueTracker™ service. (Still no sample app or source code.) Eugenio’s first episode was Architecting Cloud Applications for the Enterprise - Part I - Introducing the Actors of 9/5/2008.

Shan McArthur’s Cloud Services Introduction post of 11/4/2008 and Design Strategies to Prepare for Azure and SQL Data Services of 11/5/2008 are very useful overviews of Azure and SQL Data Services by an active participant in the Windows Azure and SQL Data Services (SDS) - Getting Started forums. (I missed these when Shan posted them.)

SQL Server Compact (SSCE) 3.5 and Sync Services

No significant new posts as of 12/9/2008 5:00 PM PST.

Miscellaneous (WPF, WCF, MVC, Silverlight, etc.)

Nicholas Allen reminds developers on 12/9/2008 that the WCF team has posted several new WCF Virtual Labs episodes, with REST, AJAX, and Web 2.0 in Windows Communication Framework being the latest. Earlier labs are:

Aaron Skonnard’s Screencast: Configuring WAS for TCP endpoints of 12/8/2008 continues his series of WCF tutorials. Earlier episodes are:

Brad Chen’s Native Client: A Technology for Running Native Code on the Web announced on 12/8/2008 the anticipated new browser OS: A sandboxed i86 instance for Firefox, Safari and Chrome browsers running under Windows, Linux or MacOS. Matthew Ingram weighs in on 12/9/2009 with Google: Fulfilling Netscape’s Original Vision, an analysis piece that concludes:

Is the world ready for a Google-ized version of ActiveX? Perhaps not. But if the company does manage to get enough support for Native Client, the web OS could become a reality — and the knife that Google is already holding to Microsoft’s neck with its web apps could cut a little deeper.