On Wed, Aug 11, 2010 at 8:45 PM, Jonas Sicking <jo...@sicking.cc> wrote: > On Wed, Aug 11, 2010 at 11:50 AM, Jeremy Orlow <jor...@chromium.org> wrote: >> On Tue, Aug 10, 2010 at 12:26 PM, Jeremy Orlow <jor...@chromium.org> wrote: >>> >>> On Tue, Aug 10, 2010 at 11:30 AM, Andrei Popescu <andr...@google.com> >>> wrote: >>>> >>>> On Mon, Aug 9, 2010 at 11:36 PM, Jeremy Orlow <jor...@chromium.org> >>>> wrote: >>>> > On Mon, Aug 9, 2010 at 11:31 PM, Jonas Sicking <jo...@sicking.cc> >>>> > wrote: >>>> >> >>>> >> On Mon, Aug 9, 2010 at 3:24 PM, Jeremy Orlow <jor...@chromium.org> >>>> >> wrote: >>>> >> > On Mon, Aug 9, 2010 at 11:15 PM, Andrei Popescu <andr...@google.com> >>>> >> > wrote: >>>> >> >> >>>> >> >> On Mon, Aug 9, 2010 at 9:57 PM, Jeremy Orlow <jor...@chromium.org> >>>> >> >> wrote: >>>> >> >> > I'm pretty sure opening a database with a different description >>>> >> >> > is >>>> >> >> > actually >>>> >> >> > already specified: the new one takes precedent. Take a look at >>>> >> >> > the >>>> >> >> > algorithm for database opening; I'm pretty sure it's there. >>>> >> >> > When talking to Andrei earlier tonight I thought we'd probably >>>> >> >> > want >>>> >> >> > to >>>> >> >> > make >>>> >> >> > it optional, but now I'm thinking maybe we shouldn't. You're >>>> >> >> > right, >>>> >> >> > Shawn, >>>> >> >> > that the description can be useful for many reasons. And >>>> >> >> > although it >>>> >> >> > seems >>>> >> >> > redundant for a developer to pass in the description every time, >>>> >> >> > I >>>> >> >> > actually >>>> >> >> > can't think of any reason why a developer wouldn't want to. >>>> >> >> >>>> >> >> Actually, I think it's pretty inconvenient to have to specify a >>>> >> >> description every time, especially since I am not sure developers >>>> >> >> would want to change the description very often. I think we should >>>> >> >> allow a null string for future connections as Shawn suggested. >>>> >> > >>>> >> > How do developers distinguish between when they're opening a >>>> >> > database >>>> >> > for >>>> >> > the first time or not? Normally they'd look at the version, but >>>> >> > that's >>>> >> > not >>>> >> > available until _after_ you've supplied the description (and >>>> >> > presumably >>>> >> > some >>>> >> > UAs might have asked the user if it's OK or something like that). >>>> >> > If >>>> >> > the >>>> >> > spec has a way to enumerate databases (something we've talked about >>>> >> > doing) >>>> >> > then it's possible that the developer could decide whether or not to >>>> >> > pass in >>>> >> > a version string that way. But why would they do this? >>>> >> > So the only possible reason I could see for someone doing this is if >>>> >> > they >>>> >> > open a database in several places in one page and they can >>>> >> > somehow guarantee that one of them happens first. The first >>>> >> > question >>>> >> > here >>>> >> > would be "but why?". And the second question is whether we trust >>>> >> > users >>>> >> > to >>>> >> > for sure know the ordering that things are opened. >>>> >> > On the other hand, it doesn't seem that hard to supply a description >>>> >> > every >>>> >> > time it's opened. I mean you just define it in one places within >>>> >> > your >>>> >> > script and use that. Or, better yet, just save the database to a >>>> >> > variable >>>> >> > and call open once early on in initialization. That'll make things >>>> >> > less >>>> >> > async anyway. >>>> >> > Am I missing something here? >>>> >> >>>> >> I have actually been thinking that it's likely fairly common to be >>>> >> opening a database in several different locations and know which ones >>>> >> should always be reopening an existing database. >>>> >> >>>> >> I don't have any data on this though. >>>> > >>>> > Neither do I. >>>> > Well, if we make it optional based on the assumption this is true, >>>> > maybe we >>>> > could spec it such that opening a database for the first time with no >>>> > description is an error? >>>> > Or we just remove description all together if it's not going to >>>> > be dependable? >>>> >>>> Thinking more about it, do we really want this string to be displayed >>>> to the user? What happens if the browser is using one locale and the >>>> string is in another? To me, the description is something internal to >>>> the application, not something intended for the end-user. I think we >>>> should remove it altogether if we don't have a good use case for it. >>> >>> Also there are security concerns. For example, it'd be hard to use the >>> description in a useful way without trusting what it says. Which isn't >>> always possible. >>> Also, thinking about it, I'm not sure I see much of a use case for users >>> managing (for example deleting) individual databases. (For many of the same >>> reasons as why we wouldn't let users delete individual ObjectStores.) The >>> main problem is that there's a risk that apps will break if one database is >>> deleted and another isn't. Some teams at Google have suggested that we >>> allow databases to be grouped such that one can't be deleted by the user >>> without deleting the others in the group. Personally I think the easier way >>> to handle this is just not allow users to manage databases at a finer >>> grained level than per origin. >>> So, beyond these reasons, why else do we want the developer to supply a >>> description? What are the use cases? >>> >>> If we decide to leave it in, I'm now leaning towards adding it to >>> setVersion. There's no way to add any data (i.e. use any space) until you >>> call setVersion since that's necessary to create objectStores. So even if >>> the UA wanted to display this while asking the user about doling out space >>> (despite my security concerns) or the UA wanted to display this in some >>> dialog for users to delete objectStores (despite my other concerns), it >>> would be possible. If this happened, then essentially all meta-data would >>> be managed via setVersion, which seems nice. >>> >>> One other description related note: we probably need to establish a >>> maximum on name and description size and a maximum number of databases per >>> origin. Otherwise one could (ab)use the name + description for key/value >>> storage of basically unlimited size. >> >> Conversation kind of died out on this. Should we just remove description >> for now, or does anyone have any solid use cases (despite some of the >> problems I pointed out with description above)? > > I don't really have strong opinions on the issue. While we can enforce > authors providing a description, which can be showed to users in > various UIs, we can't force them to provide a useful one. So the > description is effectively optional, it's just a question of how > strongly we encourage people to provide one. > > Compare to the 'alt' attribute on <img> elements. It is encouraged > through the use of validators. A lot of people still don't provide > one, and yet more people provide one that isn't useful. But we still > keep encouraging people to provide an alt attribute, and IMHO rightly > so. > > I think my vote goes towards keeping the description argument > required, otherwise it seems unlikely that people will ever provide > it. However I don't see much use of the IDBDatabase.description > property, so I vote for removing that. This way if implementations > want, they can completely ignore the argument. If implementations want > to display it somewhere in the UI, they can. > > But I'd also be fine with other solutions. For example making the > argument optional. >
I guess I am still not convinced that showing 'description' in the browser UI is a good idea, but that's up to each implementation to decide. My vote would be to remove IDBDatabase.description and make the argument optional. Thanks, Andrei