We’ve heard it more than once over time: Our components and libraries are great, but it’s often difficult to understand how they can be used together in real-world applications. Our demos do a good job of showing off the various features of the products, but often they don’t solve the problems that our customers are confronted with in their day to day work.
The Developer Express .NET Megademo is an effort to solve this problem. It will be an application, or most probably a set of applications, that implements real-world requirements using Developer Express .NET components and libraries. The process of creating this demo will be documented on this blog. I would like everybody to participate in the effort by submitting feedback on the blog, and by discussing functional and implementation decisions as we go along.
What will the demo do?
At this point I’m still open to suggestions, and I expect there will always be room for further ideas and extensions. One of the targets of the demo, in the long term, is to cover a big part of the functionality provided by our products, so this will define a number of the features that will be implemented. But at the same time it’s important for the demo’s functionality to be familiar to as many people as possible.
My current plan is to create an application for a small factory. This should provide for a wide range of functionality, as the factory needs to buy and sell parts and goods to and from business partners and customers, manage employees, handle financial information, run a web site for online shopping, do data analysis and so forth. While not everybody may be an expert in this subject matter, I expect it’s sufficiently familiar to most of you. Please feel free to comment on this plan – maybe there’s another even better idea out there.
How am I going to integrate all the products and all the functionality?
Well, I’m afraid I will probably end up not integrating all the products and all the functionality – it is just impossible. An example: It would be great to use XPO as the data storage platform for the application, and I definitely plan on doing that. But on the other hand, there are certain specific problems and approaches involved when using our other products (like the UI components) with ADO.NET directly, and by making a decision for XPO the demo will not show some implementation details that would be relevant if it wasn’t using XPO. No way around that, I’m afraid… if you find that at some point functionality is implemented in a way that works around a problem you’re having, please comment and mention this. If possible, it will be a good idea to explain such specifics at the point.
As another example, I’m planning to implement the application’s functionality based on our eXpressApp Framework as well as stand-alone. I expect that in many cases things are going to be a lot easier to do with XAF, but then there will probably be cases when they’re not – in these latter cases, the demo will have to go in two directions, which is one of the reasons why I originally mentioned that we’ll be talking about a set of applications.
Why don’t we use an existing application for the demo?
When we revamped our web site recently, the whole Support Center functionality was implemented using XPO and XAF, and there were some requests in the newsgroups for this “application”. It is well possible that we’ll release the Support Center as a demo in the future, but I decided to go a different way with the .NET Megademo. There are two major reasons for this:
- The .NET Megademo can be a lot more useful if it shows how real-world applications can be created without the use of XAF. This is not because I don’t like XAF – I think it’s great. But I’m trying to create some educational benefit here by showing how things can be done, and the way to achieve this is not by saying “look, you take this black box and boom, everything works.” Of course it will be a great showcase for XAF to show how much easier things are based on that product, but I’m sure most of you see things like I do: it’s a much easier decision to go use a black box if I know exactly what goes on inside.
- While the .NET Megademo wants to be a project that could be implemented in a very similar way for a real customer, it’s not actually in use with any real customers. That allows me a certain degree of freedom in functional decisions, and when planning extensions to demonstrate specific areas of functionality in our products. In the end, it’s first and foremost a demo of functionality in our products, and of approaches to using that functionality and integrating it. It will be implemented in a way that makes it relevant to the real world, which is good, but I’ll feel free to leave out certain real-world functionality if it serves no demonstrational purpose.
Who can use the demo?
Everybody, at least that’s what I hope. As it will eventually use all of our .NET products, a full DXperience installation will be required, as well as XAF for that part of things. But I assume it will be possible to use trial versions in case some components are not licensed by a customer.
In addition to the source code of the demo, I plan to make binary versions available, so it should be easy to download a version of the demo and play with it.
What’s the platform going to be?
I will use .NET 2, Visual Studio 2005 and C#.
How long will it take?
Long, if not forever. I see this as an ongoing effort, and while it is possible that we’ll come to the point where a certain amount of functional coverage has been reached, changes and extensions in our products will forever provide room for changes and extensions to the demo.
What’s next?
First, I hope for some comments, feedback and discussion. At some point in the next few days, I will then start the project by creating a first concept “paper”, in the form of a list of functionality to be included in a version 1.0. I will try to keep the overhead low in the area of project planning and management, so when the target is set, I’ll start working on the implementation. I will progress feature by feature, and I hope to be able to publish an interim version and a corresponding blog post for each feature that’s completed.