On Wed, May 25, 2011 at 9:39 PM, Chris Stratton <[email protected]> wrote:
> On Wednesday, May 25, 2011 6:14:55 PM UTC-4, Dianne Hackborn wrote: > >> I'm still wondering what these "limiting decisions" are. > > I find that surprising, considering the amount of time you spend explaining > to people that the things they want to do are not possible, some because > they are not yet supported and others because your team intentionally chose > to preclude any means for a user to authorize an application to do that. > Frankly I would agree some of the things people want to do are really bad > ideas; but others a quite good ideas - the point is that this is a > subjective decision. Your team made its choices, but a lot of people > disagree with you about what should or shouldn't be allowed or supported, > and Android has not in the past been readily suitable for doing things > outside of it's architects' vision. Fortunately, the theoretical > possibility of producing one's own build is increasingly becoming a > well-organized reality of alternative distributions - changing "one little > thing" no longer means going it alone. Projects that weren't worth doing > when there was no base of devices capable of using them become worth doing > when the installed base of alternative builds grows. > I think you are using "limiting decisions" in a way different than DanH. What you are talking about here a simply policy decisions about what applications will be allowed to do. They are nothing the platform is tied to -- they can always be changed in the next release if there is a compelling reason to do so. (As I said, from a platform maintenance perspective it is *much* easier to remove restrictions on what applications can do than it is to enforce new ones.) The vast majority of limitations on applications (beyond what people coming from desktop operating systems expect) are there either because there is a compelling benefit for the overall platform or ecosystem for them to be there, and/or there has not yet been time to design and implement a facility for apps to use that is robust and maintainable for many years to come. But again, these have little do to with whether android has "legs" which was the original point of discussion. Let's take one of the limitations that comes up -- being able to intercept input events before they go to other applications. If we find ourselves in a situation where another platform has such a facility, and has allowed some developers to write extremely compelling applications that aren't possible on android, and this is threatening android's viability in the market, it would be fairly trivial to add such a facility to android. It was actually much harder to design and implement android to have the restriction than to not have it. That said, this is something we would 99% positively never just open up, because it would have many negative impacts across the platform. And consider it from the other direction -- if your platform already allows applications to freely intercept input events from other apps, and you find this is actually harming your platform, how do you fix it? That's a *really* hard problem, especially if you don't want to break a bunch of third party apps. (And when it comes to third party apps, you will often find them relying on this kind of stuff in places you never think they would have.) In fact this has been an issue for Windows. For example to implement the UAC dialog in a way that it can be sure the user is interacting with it and not some app, one of the things it does is switch to a completely different user environment in which the dialog is run, with a screenshot of the previous screen shown behind it to make it feel more integrated. So Android can actually implement a much cleaner and integrated experience with the user because of this limitation it places on apps. More than that, *apps* themselves can implement such interactions with users. Thus, as not infrequently happens, imposing a limitation on what applications can do actually opens the door for other things. > I think we are coming out of the most limiting period as official builds > are enhanced and alternative builds gain a following on a wide variety of > devices, but a lot of things that we expected would be possible with a > "pocket linux box" have historically not been possible with android devices, > for reasons ranging from the java-apis-first decision to the inability of a > user to alter the security model. > Yes if you want Android to be a "pocket linux box," that is not what it is. That really is a different product, and as the example I give above shows, making such a product is most likely going to be done at the detriment to many good things android provides. > It probably is worth looking at that subject of security for a minute. By > not giving the user any real ability to customize or exert fine grained > control, a given user cannot make their device less secure than the default, > but neither can they make it any more secure than a default they may find > quite inadequate. In an official build, I cannot for example decide that > it's okay for an application to know if I am on the phone, but not okay for > it to be able to discover my phone number. > I certainly agree that this particular permission was poorly done. This is a good example of where giving apps too much access bites us. I think there has been some ongoing work to split those pieces of information apart, because clearly access to personal information is a big and growing concern. These kinds of things have only served to reinforce my feeling that limiting what applications as much as possible should be the first design priority. :) -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

