Welcome to MSDN Blogs Sign in | Join | Help

News

Is your job easier or harder with 10,000 components?

Is your life as an Embedded developer truly better off with a thousand windows feature components and 9,000 driver components?

In NT4 Embedded there were about 250 components. With XP Embedded we gave you 10,000. Immediately after shipping the product we heard two common points of view:

1. “10,000 components!? You’re kidding me, I’m not a developer. I don’t know the difference between Winsock and the Print Spooler, how can you expect me to pick and choose the components I need for my device? You need to make this more intuitive for me, give me some more macro components to act as a ‘primer’, give me more documentation, make finding the feature easier for me.”
2. “10,000 component!? This is awesome, since I’m a developer and know exactly the APIs I require, I’ll leverage MSDN and my intimate knowledge of Windows Internals to pick and choose only the components I need. But your componentization sucks, I add the Primitive:Winsock component and it brings in some other stuff I know I don’t want.”

Would fewer components help both the scenarios above? Fewer components decreases the time to market, but can potentially bloat the footprint. Of course, further componentization would make #2 happier but #1 very unhappy.

In my opinion, the average system builder for ISV/IHV/OEMs of XPe devices don’t have an deep technical level of knowledge of Windows or any operating system in general. That’s not necessarily a bad thing, but it makes my team’s job more difficult in that we’re trying to build a product that is everything to everyone. A product that is usable by the independent contractor working out of her garage that has just a rudimentary understanding of the OS but is technically savvy in hardware. And usable by a senior developer for Windows solutions that is just as comfortable grepping through Linux source.

Is there a happy medium?

- Andy Allred

Posted: Sunday, April 03, 2005 6:39 PM by Embedded

Comments

David Betz said:

I'm definately the first one... I may do C# and .NET, but I don't know the difference between a binary tree and an apple tree (though I'm thinking I could probably spot the apple tree.) I just like now .NET works...keep your single components. You can have millions if they are in a lovely heirarchy... if not, it's just scary.
# April 3, 2005 7:02 PM

Embedded said:

Thanks for the feedback David. If you have more details on how to make the situation easier or more intuitive feel free to send comments to the team alias: wecrt at microsoft.com , or comment here as well.

Andy
# April 3, 2005 7:46 PM

TAG said:

What's a problem?

Create 100000 components and group them into 250 groups.

Let people select groups they need, but to satisfy dependencies - automatically add components at component level.

It's not rocket science! ;-)

It will be hard only for your developers to manage dependencies.

Microsoft does very bad with managing dependencies in their software. For example it's almost impossible to use Windows computer as TCP/IP Workstation !! in case if you have deleted/disable file sharing (Server service).
No way to add/remove users group memberships using MMC snap-in or it was impossible to use Microsoft Baseline Security Analyser :-((
# April 3, 2005 8:17 PM

William Sullivan said:

The problem I've had with the number of components is 1) the lack of descriptions as to what a particular component does (Shell registry legacy data? Do I need that?) and the endless dependencies that aren't truly dependent (DIE IPV6!! GET OUT OF MY CONFIGURATION)
# April 4, 2005 8:26 AM

John Bates said:

I really like the 10000 components when you know what you're doing, which I do most of the time :-). But it would also be better to have a number of group/macro components that have a set of required dependencies (e.g. kernel32) and zero or more groups of optional dependencies (e.g. IPv6).

Requiring a dependency like Volume Shadow Copy for Explorer/IE is just nuts. If you don't want it you get a warning that you can't suppress either.

The MS product teams need to be more aware of their core and non-core dependencies and be able to cope nicely if any piece is missing.

In my case our product is using IE for HTML dialogs, but our own shell so no Explorer application is required. But adding IE brings in Common Dialogs, blah, blah, blah ad nauseum.
# April 22, 2005 3:08 AM

Andy said:

Cool, thanks for the feedback. Understanding the common dependencies among most device categories will help us to create better "foundations". Also, I'm working on a list of 'battleship features' that are attractive to most of our customers for us to target for better factoring.

When you have issues with specific dependencies or any that you feel are completely unreasonable, send me the information at WECRT at Microsoft.com, we'll file a bug on it and add it to the list for investigation.

thanks
# April 22, 2005 8:27 AM
New Comments to this post are disabled
Page view tracker