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

Reply via email to