On 18/07/13 18:44, Marcos Caceres wrote: > On Thursday, July 18, 2013 at 6:05 PM, Mounir Lamouri wrote: > >> On 04/07/13 12:50, Marcos Caceres wrote: >>> ## Outstanding issues >>> If version is greater than the highest version number supported by the user >>> agent, should the user agent treat the manifest as the highest manifest >>> version it supports? Or reject the manifest outright as invalid? >> >> >> >> I think the application should be marked as incompatible. Imagine I have >> an old phone with a runtime that only understand manifest_version { 0, >> 1, 2 }. My phone doesn't supports newer versions but there are newer >> versions out there like { 3, 4, 5 }. If an application is advertising >> itself as manifest_version = 3, it is a hint that my phone will not be >> able to run it. It *might* be able to run it but nothing is less sure. > > I'm really worried about this, as it's not very "webby": the manifest should > hopefully not specify things that would cause the application itself to not > be runnable (i.e., manifest stuff should just be harmless metadata with > limited side effects … though CSP tightening already breaks this principle a > bit). Having apps accessible through the Web browser, but then not > installable because of a manifest version would be weird for hosted apps > (which shouldn't need to be installed to be usable - as not all user agents > may support installation - or users may want to "try before they > buy/install"). > > It would also mean that certain devices would be tied to certain manifest > versions (it's a nasty way to lock people out, without providing graceful > degradation). This might lead to all sorts of version/device mappings, which > would not be great IMO. > > I think we should adopt a "do minimal harm" principle when adding new stuff > to the manifest: meaning that stuff that is not understood is just ignored, > ala HTML parsing style.
The idea of a manifest version isn't Web-y, indeed; we want to use that so we can deprecate APIs, this is not at all something we do on the Web. However, to take the example I pointed, if, as a developer, I say that my application requires the version 3.0 and a user wants to install my application but its device only knows the version 2.0 and earlier, what should we do? We can't simply ignore the hint that the app might not work. A solution could be to simply forbid installation but we can be smarter about it and do like in AMO where the installation isn't allowed unless the user check something that says "I want to try anyway". This could indeed be used to evil goals but I am not sure what we can do to prevent that. If we want to prevent any on purpose fragmentation based on this feature, the only solution is to assume that all APIs will stay for ever and the manifest_version property would not be needed. Note that when I say that the manifest version is incompatible, I am mostly worried about the usage of new features, not much about the manifest format. >> Should we have a special token like "w3c" or "standard" that will be >> required to use the standard manifest version? I think that would be >> reasonable even though that means that if some applications were using >> "w3c" as a value, it might break them :( >> > > I would like to treat the formats as completely separate (we have different > ways of installing these manifests as well as different MIME types, which > serves as the differentiator). Any overlap between the two should be seen as > coincidental - otherwise, things are going to get really messy. I am not a big fan of having a fuzzy plan. I think we should have something more defined. What is the current MIME Type Chrome Apps and Firefox OS apps require? What would be the W3C MIME Type? Can we really assume that developers will simply expose their manifest using another MIME Type? Should we consider as a goal to get backward compatibility? I am afraid that new comers will have to implement a mix of Mozilla's and Google's proprietary formats. Also, what should we do if we don't expose a manifest_version specific to the standard format and a new comer implements the spec but the manifest is using manifest_version='x' which would be ignored by the implementation but the manifest would be half-working. A solution is indeed to change the MIME Type but then we have another backward compatibility issue. -- Mounir _______________________________________________ dev-webapps mailing list dev-webapps@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-webapps