Hi Jonas, The subject you brought up is IMO the #1 question not only for Mozilla but for the Web at large.
I think my recently updated document http://webpki.org/papers/web2native-bridge.pdf pretty well describes ONE way ahead which essentially is a "Semi-Open" Web. Although the document is targeting "Security Applications", the principle should be applicable to other kinds of application as well. Unfortunately I get the feeling that the Web is stuck, leaving the market with Android and iOS apps as the only viable solutions. That's surely NOT my goal! I don't see signed websites as the future; websites referring to locally installed web-apps in IFRAMEs have a sounder deployment- and trust-model and also requires much less standardization to work. Cheers, Anders On Tuesday, March 10, 2015 at 1:24:18 AM UTC+1, Jonas Sicking wrote: > (Sorry to change from dev-webapi to dev-b2g, but I think dev-b2g is > better given the size of these changes). > > On Wed, Feb 4, 2015 at 4:49 AM, Benjamin Francis <bfran...@mozilla.com> wrote: > > One potential answer is that: > > > > - Privileged hosted web apps can be self-signed by developers (using a > > certificate issued by an issuer with a CA root Authority installed in > > Firefox OS) and users must decide whether to trust the developer. Mozilla > > could choose to become an issuer of free certificates (as we are with > > Let's > > Encrypt) but would not be the sole issuer. > > - Certified apps become a new type of chrome which happens to use HTML5 > > as a markup language. If we want third parties to be able to build apps > > or > > extensions to this chrome then they become a new type of chrome extension > > which can only be signed by Mozilla. Firefox OS apps/extensions would by > > definition be Firefox OS-only. > > Hi All, > > This matches pretty closely with my thinking as of late. > > I think there are a few things that we need to realize and accept. > > First off, it's really hard to "move the web". Especially with a > marketshare as long as FirefoxOS has. If we're going to stand any > chance of actually changing web developer behavior at large, we need > at the very least Firefox for Android and Firefox desktop to push for > the same changes. But realistically also other browser vendors. > > In this light, I would say that some of our efforts of trying to make > the web more "appy" has been a mistake. Though one that we've learned > a lot from I think. We should make sure that this experience is used > as we work on standards like web manifests and web activities. > > > Second, I think we need to accept the fact that some of the APIs that > are needed to build a complete OS simply aren't safe to expose to > untrusted content authors. > > As long as the web maintains a model that content can be consumed > without users having to worry about security concerns, and be > published without any need to go through reviews, there has to be > limits on what type of content that can be created. And I think > there's broad agreement here that we don't want to give up that model. > > I don't think statements like "being able to write an irc client is a > minimum" is really fair. We could likewise say "being able to run an > run any software without worrying that it's going to reconfigure your > router is a minimum", which is a statement that all other platforms > fail. > > That said, I'm all ears for constructive ideas for how we can solve > shortcomings of the web platform. But I also think we should also keep > this in perspective. There's a lot of content on the web. All of it > has been built without access to these APIs. Even for content that is > explicitly built for FirefoxOS and submitted to the Firefox > marketplace, only about 5-10% need these APIs. > > > Third, there is essentially no interest from other browser vendors to > "standardize" or even get alignment on APIs that can't be exposed to > normal webpages. > > Google is about as interested in aligning their chrome apps APIs with > our APIs, as they are to listen to us about what their Android APIs > should look like. Other vendors have shown about the same amount of > interest. > > There just isn't much value in anyone changing their APIs. Authors > aren't really asking for it, and the platforms are different enough > that authors wouldn't see large benefits anyway. > > One interesting question to ask here is, would we be interested in > adopting Tizen's API for, for example, SD card access? Or Chrome-app's > API for TCPSocket? > > > So what does this mean that we should do? > > First off, I think we should get rid of "apps" as a platform feature. > This doesn't need to mean that we should change the UX of B2G. That is > a separate consideration. > > But we should get rid of cookie jars. And accept the web for the big > goop of content that it is :) > > We could add features to allow websites to indicate that it wants the > security protections that the current cookie jars support. But per the > above, that's not a feature that we should push through FirefoxOS > alone. If it's something that we think is important, we should push it > as a web feature together with Firefox desktop and other browser > vendors. > > > I think we should also keep exposing "sensitive APIs", both to gaia > and to 3rd party developers. Converting all the email servers in the > world to use CORS simply isn't realistic. But we should make > improvements in how these APIs are exposed. > > I do think that we still want code that uses these "sensitive APIs" to > be signed. However that doesn't mean that we have to keep using the > same model, of app:-protocol and installable zip files that we > currently use. > > There's a few things that I think would be great to accomplish for > content that uses these sensitive APIs: > > * Enable the user to simply navigate to content which uses sensitive > APIs, without the need to install it first. I.e. enable the content to > be available through "real" linkable URLs. > * Enable developers to sign the content without going through a > marketplace review. I.e. enable developers to distribute and updated > version of their content without having to go through marketplace > review. > * Enable Marketplace to hand out the ability to use a particular API > to a developer, rather than to a particular version of a particular > app. > * Remove technical separation between "privileged" and "certified" > APIs. We can still decide not to grant any third party content the > ability to use, for example, the power API, by simply not granting the > right to use that API to any developers other than gaia developers. > But the client-side code doesn't need to make that decision. > * While I think signed content that can use sensitive APIs should have > real URLs, I think it needs to never be same-origin with unsigned > "normal" content. > * It would be good if we can keep the process separation advantages > that we currently have for content that can use "sensitive APIs". I.e. > it would be nice if it required more than finding a buffer overflow > bug in Gecko in order to gain access to use the telephony API. But > it'd be good if we can hide this fact as much as possible from web > developers. > * I think we should still keep the CSP requirements that we have for > content that uses "sensitive APIs". I.e. all JS that can use those > APIs has to be signed by the developer. > > What signing format to use, and how to keep it not same-origin as > unsigned content, is probably best done as a separate thread. > Hopefully we can get agreement on the rest of this thread without > solving that part. > > I also think we need to stop worrying so much about that these APIs > aren't standardized. It simply isn't in our power to make these really > standardized. It requires that other vendors are actually willing to > work together with us on aligning APIs, and I just haven't seen that. > > And more importantly, very little content is using these APIs. The web > is far greater. Even developers that target FirefoxOS specifically are > 90-95% of the time able to write their content without using these > APIs. > > That said, if anyone wants to make an effort and reach out to other > vendors to get agreement on any API, feel free to give it a try. > > The only thing that I could see being successful in the short term > would be to simply adopt APIs from other platforms. Cordova and > Node.js would be prime candidates here I think. If anyone has > suggestions for APIs that you think would be good candidates, please > let me know. > > > As mentioned above, I think there's still some APIs that I'm very > nervous about exposing to 3rd party websites. For example, enabling > placing phone calls through direct calls to the API, rather than by > using <a href="tel:..."> or a WebActivity seems like inviting malware. > > It's also not a terribly good way to enable users to replace the > built-in dialer. Since the user would still have the built-in dialer. > > A better solution to enable replacing the dialer UI might be to use > some form of addon system. An addon which tweaked, or completely > replaced, the built-in dialer UI would be awesome. > > Likewise an addon which sat between the dialer and the actual phone > hardware, and did things like block lists, or changed incoming and/or > outgoing phone numbers would be great. Or addons which encrypt the > voice audio when calling friends which has the same addon. > > Addons have been great for Firefox desktop. I think it can be as > awesome for FirefoxOS, if not more so. > > Addons will definitely be Firefox(OS) specific. But no more so than > the telephony API is, and is likely to remain for the foreseeable > future. > > Again, I think how exactly how these addons will work is a better > topic for a separate thread. > > > In summary: > > On a technical level we'd be much more like the web has traditionally > been. I.e. no cookie jars or app silos. The user can navigate between > any content by following normal links. This will include content that > use "sensitive APIs". > > The only content distinction we'd end up with is "signed" vs. > "unsigned". And to the user both would look like normal web. > > The "signed" content will be FirefoxOS specific until we find others > which are interested in collaborating on APIs, which isn't expected to > be soon. But to put this in perspective, the vast majority of authors > are able to author content without using these APIs. > > On a technical level, Gaia would just be normal signed content. The > distinction between "certified" and "privileged" disappear. Though we > can still choose on a per-API and per-developer basis which API we > allow what developers to use. Though UX-wise we might still want to > give gaia special treatment. > > Users can install addons which change the behavior of other content. > This will include both change behavior of gaia, as well as of signed > and unsigned websites. > > > Let me know what you think. > > / Jonas _______________________________________________ dev-b2g mailing list dev-b2g@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-b2g