Earlier, I read Brandon Watsons interesting take on the whole closed vs open platforms debate (which can be read here), and I feel like chiming in on the argument.
First of all, I want to define what I mean. I’m not talking about open source or closed source, but the distribution method of 3rd party applications. iPhone is a closed platform. All software has to be certified by Apple to be run, and can only be got via Apples App Store. Windows Mobile 6.X is a relatively open platform. You can install whatever you like or want, but there’s a marketplace for certified software that is more useful and easier to use if you’re new to the platform. Android is similar, though the marketplace has no certification, so you have no idea if anything works, Android has one advantage other the WM6.X Marketplace, which is that software is required to ask permission for most key tasks, such as access to PIM or the dialler. No such method exists with WM6.X. You can also side load on Android.
WP7, to contrast with WM6.X is a combination of the iPhones completely locked down marketplace, and the Android manifests. Each application must be certified by MS and can only be distributed via Marketplace, but each package (*.xap) includes a manifest file stating which permissions the app has, for example, file system access.
As a new user to a platform, the WP7 method seems ideal, it means there’s a limit to what you can break, and you have someone to hold your hand and say "it’ll be fine", however, as a power user and developer, I want the ability to do what I want with my phone.
There are a few applications I regularly use which won’t be permitted on Marketplace for WP7, but which are possible to make in XNA/Silverlight. iContact (whilst written in C++) is a great example of this. It requires access to PIM, is a replacement for the contact system (which I think is prohibited), and requires access to the file system. It would be possible to write in C# using .Net CF, but wouldn’t be permitted on Marketplace. It may be I don’t need iContact on WP7, but I still want the option. There’s no technological reason for not allowing it, it’s purely to protect end users who don’t understand the risks.
With WM6.X (which I think is an ideal medium) iContact and other applications are possible. They can be distributed via other means, and can allow users to run what they want on their device. Yes, it’s not for everyone, but I suspect the majority of the readers of this site would love to have side loading in WP7.
I don’t think side loading should be enabled straight out of the box, that’s asking for trouble with unfamiliar users, and would ultimately lead to a lot of bad press for WP7, but what if there was a checkbox in the settings for "Enable file system access", or "Enable unsigned applications". Power users can mostly take care of themselves, and will know if they install something that breaks things, it’s their fault, and end users most likely will never try and check that box.
There isn’t one solution that lets power users and normal users get what they want out of the platform, but there could at least be some provision for both, not constraining power users to the limits of the average user (or tossing a new user in at the deep end).