Over the past few months I've read a few blog posts decrying the good ol' Northwind database (stemming, I think, from Scott Hanselman's original post) and saying "we" (that is, the entire .NET development world) need something new and different. None of that Products and Suppliers stuff, it's so passé; we need something new.
Actually, speaking from behind my desk with my DevExpress cap firmly on my head (photos to follow -- you mean you didn't get one at PDC?), I say phooey. We vendors not only need Northwind, but we need a richer Northwind.
The pros of Northwind are simple to enunciate:
- The domain is easily comprehensible. It's orders with items, it's products being sold, it's customers buying them. All developers can relate to this: you don't even have to think about the domain.
- Since all vendors use it to a greater or lesser degree for their demos, it's automatically familiar, which apart from reinforcing the first point, also means that the developer being demoed to can just concentrate on the vendor's spiel. After all, we don't support and go to tradeshows like TechEd and PDC to sell Northwind.
- Since it's so widespread, it becomes part of the benchmark for evaluating similar products from different vendors. If you are looking for a grid that does master/detail views and are evaluating A, B, C, and DX's versions, then you already know you've got to plug in the Orders table and the Order Details table.
- Since it's available, it makes it easier: vendors don't have to invent, copy, or plagiarize any of this data from other places or each other in order to show off their wares.
In essence, it's a standard.
So what does it need? Again with my vendor cap firmly in position:
- Multimedia data. One reason Northwind is so old-fashioned is that there are no images, audio tracks, or videos in the database.
- Textual or memo data. Something more than a one sentence description, in other words. This could be used for showing off rich text editors, spell checkers, mail merge, etc, etc.
- Lots of data. And I mean lots, as in many, many thousands of records. it's only through having some standard data like this that you can evaluate performance.
- PIM-style data. You know, appointments, contacts, that kind of thing. Can't sell a scheduler control without it.
- Data that can be charted. This is huge since there are so many different chart types. So you should have data that can be charted with bars, pies, lines; project data for Gantt charts; historical stock data for the financial charts; and so on.
- Real-time data, that is, data that is being updated in real-time. In the past, we've hooked into the performance counters on the demo machine to show off our performance with real-time data.
As you can see, in order for us to show off our controls, we have to spend resources and time to invent or generate an awful lot of data (and it's not like we can sell this to recoup). Northwind is just not broad or rich enough.
We -- and you -- need standard demo data, for without it, you'll be comparing apples and oranges. Having said that, using standard data means that you run the risk of vendor code being written to work at its best with it, and if you veer off the straight and narrow the vendor's code might start to work less well. Correspondingly, if the vendor invented or generated the data, it's very likely to be invented just to show off the product being demoed. Overall, though I think standard data wins out.