I just got an email in the Support inbox over at OpenNETCF asking about the libraries support (or really lack thereof) for Wireless Networking in Windows Embedded Compact 7 (rolls off the tongue, doesn’t it?). While this is a question about a specific feature of the SDF, it really opens up the broader question of what our plans are for the future of the whole product. In fact you could say it really opens up the question on what our general company plans and philosophy are.
First, let’s address this specific issue, as it deserves answering and has a little bit of a back story leading to a minor rant which is always fun.
The SDF supports an object model for wireless networks that is based around the Wireless Zero Config (WZC) API. Microsoft introduced WZC in CE 5.0 (IIRC) in an attempt to “standardize” the way the platform and apps would communicate with the wireless drivers, since NDIS doesn’t really have any specification for a lot of the wireless properties. While I applaud the spirit, WZC is convoluted at best, and was definitely not designed to make the life of someone who has to use P/Invoke to communicate with it any easier. Still, it was some sort of standardization so we rolled up our sleeves and created a managed interface for it.
I’ll readily admit that what we ended with isn’t ideal, but I’m a fierce self critic and I rarely think what we do is as good as it could be. Still it provided a programmatic interface for something that a *lot* of people wanted and that Microsoft had not implemented in managed code.
Well with Compact 7 (I’ll just call it CE7) Microsoft decided that WZC wasn’t the way to go, but instead Native WiFi was. Painfully they didn’t follow a sensible “deprecated but supported” track for WZC and support side-by-side, they just dropped WZC support altogether. That meant that we could not interface with a wireless adapter under CE7 using our existing code base at all – it was a flat-out break.
To make things worse, Microsoft went radio-silent for about 2 years (and still counting – yes I’m looking at you Redmond!) on what, if any, future the Compact Framework, or CE for that matter, might have. The original WZC work was probably 4-6 weeks of development and it required that we buy several devices for testing. Believe me, it was a real pain in the ass. Do we (more specifically do *I*) really feel like doing that all again for the Native WiFi interfaces? If I do, where do I get a CE7 device with WiFi support? If I do all of that work, what’s the ROI if Microsoft kills the Compact Framework? What’s the ROI if they revive it and implement Wireless themselves?
It’s really difficult to answer those questions, and we’re not the only ones who are wondering these things. I can say, though, that we’ve very recently decided that yes, we will continue to do both support and new development for the SDF. What that new development will entail I can’t say. Not because it’s some big secret, but because I can’t make those plans until Microsoft tells us their plans (and they haven’t). If they decide to release a new version of the Compact Framework, I’d like to not have a load of functionality duplication between it and the SDF.
So, is the SDF a dead product? No. We will continue to support it and have plans for feature additions. We just don’t know exactly what those features will be or when they will be written (confidence inspiring, I know).
Will we provide Wireless support for CE7? If Microsoft does not, then yes, we will. Again, we don’t know if they will or not. If they did, we don’t know when that would be. Ideally, though, programming for WZC and Native WiFi should be the same, so if they don’t do it, we’ll add support that looks and feels just like what’s in the SDF today. If they do add it, I’d be inclined to update our object model to match theirs (keeping the old stuff for compatibility though).
Don’t read too much into this. Yes, I’m optimistic about the Compact Framework and
Windows CE Windows Embedded Compact but I’ve been using them for over a decade and I’ve based a whole lot of my knowledge, business and life on them. I almost have to be optimistic. But let’s face it, CE and the CF are still great tools for delivering products. We’re still shipping products based on them. Still doing new development and new installs. Still writing proposals for them.
Yes, we’ve tested the waters with Android and iOS. We’ve even delivered finished products for them both, but using those tolls only reinforced my feelings about the strength and possibilities of the CF and CE and we’re still committed to using and supporting them.