jducoeur: (Default)
[personal profile] jducoeur
Okay, here's a question for thought and discussion. I'm currently designing the Tag feature. Every Thing in Querki can have fields that are "tags", in the usual sense -- they contain whatever short text you would like. Tags will be hierarchical (because that is sometimes useful). And here's the interesting question: should tags *always* be multi-value?

One of the great failings of older databases is that they tend to be single-valued -- you can have only one Author for a Book, and such silliness. The real world is typically much messier, and that's reflected in the fact that most modern systems use Tags as sets of values: you can generally have any number of tags for a given item. Tags are remarkably powerful, and I expect them to be much-used in Querki.

So I'm clearly going to implement TagSet. Is there any reason to have a data type that is only a *single* Tag? The engineer in me says that of course such a thing should exist, since conceptually it's obvious, but the UX designer in me says not to, since you shouldn't expose a concept that is always a bad idea to use.

Opinions? Are there non-strawman cases where you would specifically want to only allow a single Tag on something? Or is it more bother than it's worth to expose this through the UI -- should I just have TagSet as the type that you always use?

(no subject)

Date: 2012-11-21 03:01 pm (UTC)
From: [identity profile] talvinm.livejournal.com
Could this be tunable? Could the owner/moderator of a particular area set a limit on "number of tags per Thing" (sometimes tagging gets WAY out of control, too!) with possible values of Zero to Foo?

(no subject)

Date: 2012-11-21 03:17 pm (UTC)
From: [identity profile] talvinm.livejournal.com
I'll admit, I am not wed to the concept myself. It just popped into my head as a possibly useful compromise.

(no subject)

Date: 2012-11-21 03:43 pm (UTC)
From: [identity profile] talvinm.livejournal.com
No, not overly negative. :) While not on your scale, I have written code before. I have also had to document products, trying to write the user's manual even as the product was being built, and being redesigned as it was being built. I understand and applaud the desire to avoid Feeping Creatures.

(no subject)

Date: 2012-11-21 03:15 pm (UTC)
From: [identity profile] goldsquare.livejournal.com
I'm not sure I am fully understanding the issues, but it seems to me that you have answered your own question.

I'm reminded of a comment made by one of my co-workers at SUN, defining when one implementation is more powerful than another. "If you can implement B using A, but cannot implement A using B, A is more powerful". I'd opt for the more powerful, TagSet, in all areas.

Talvin's question is a good one, though. Do you want to be able to create TagSets whose sizes are pre-limited for any reason? I see no reason not to do so - except that it introduces a set of error conditions around both the limit value and what happens when you hit a limit.

That is an increase in complexity of code and time of implementation. I lack the knowledge to advise you on that, as I am not as versed in the usage model as you are.

(I'm inclined to say "no" - as long as your TagSet contains an ordinal count of tags, you can always implement a subclass of TagSet called LimitedTagSet. Or, from what you have been saying about Scala, you can create something that has an ordinal-cap sort of property, and associate that with all your collections or sets, should you choose to do so. I did buy, but still haven't cracked, Scala for the Impatient. The irony is not lost on me. I've been reading on law instead.)

(no subject)

Date: 2012-11-21 03:57 pm (UTC)
From: [identity profile] be-well-lowell.livejournal.com
A limit on number of tags makes sense. A special category for exactly one tag doesn't clearly fit into that sense.

If it's the by-far-most-common case, it deserves some optimizations in the user interface (but not in the underlying implementation unless there's a technical win involved).

(no subject)

Date: 2012-11-21 03:58 pm (UTC)
From: [identity profile] goldsquare.livejournal.com
Ah.

So the question is whether a user would want to limit the number of tags on something, and have Querki enforce that limit.

I'd say no, because retrofitting that is easy: objects from before the retrofit continue to have unlimited TagSets, objects afterward have a range.

Dan's point about proliferation of "near tags" is important as well, and the Merge feature he suggests would be useful, if likely secondary to your initial implementation.

What may be useful, to address his concerns, is to find a useful UI that urges the user to use existing tags over having them create a near-duplicate without care.

We are now far afield from your question. :-)

(no subject)

Date: 2012-11-21 03:30 pm (UTC)
ext_81047: (Dr. Morden clone #187)
From: [identity profile] kihou.livejournal.com
In my LARP usecase, there are definitely things I'd want to be able to enforce as one tag per object, so that my fellow GMs don't break things accidentally. (Each character or item has a one primary name that goes on the sheet/card, each ability card has one effect, etc.)

It'd be totally fine for this to just be an optional constraint on a tag set, as long as the syntax for using this singleton tag's value wasn't made more awkward by it internally being a set.

(no subject)

Date: 2012-11-21 03:51 pm (UTC)
From: [identity profile] goldsquare.livejournal.com
But in that case, why not have a primary name, and tag it with a set (0-infinite) of nicknames?

(no subject)

Date: 2012-11-21 05:05 pm (UTC)
ext_81047: (Default)
From: [identity profile] kihou.livejournal.com
For names, I'd be fine having any number of names with one marked as a unique primary, though that seems more complicated than a single-value name tag and a multi-value nickname tag. For, like, ability effects, it doesn't make sense for there to be more than one, at least with the standard way of typesetting them. And either way, I'd want it to be clean to refer to the unique primary name.

(no subject)

Date: 2012-11-21 03:50 pm (UTC)
dsrtao: dsr as a LEGO minifig (Default)
From: [personal profile] dsrtao
Let me offer an alternate notion instead.

Don't limit the number of Tags that can be set. Instead, offer the ability to only use existing Tags on an object.

There are many times that I have seen items with similar but non-identical tags where that clearly wasn't intended. Recipe and Recipes. Geek and Geekery and GeekStuff. Bibliography and Attribution and Biblio and...

Come to think of it, a Tag Merge operation would be great. Hard to undo, I think, but could come with a suitable warning.

(no subject)

Date: 2012-11-21 04:22 pm (UTC)
From: [identity profile] goldsquare.livejournal.com
For that sort of versioning, look at some of the freeware code that once was the Interbase database. (Which I worked on) It's transactional model was unique.

You can't think of a tag limit issue that requires a set number of tags, only, like one? Could you use Querki to build a database of friends, say, and plan a wedding, say, and want to do assigned seating to only one table?

(no subject)

Date: 2012-11-21 04:39 pm (UTC)
From: [identity profile] be-well-lowell.livejournal.com
My question is why "one" should be a special case in a way that "two" isn't. In my professional world, it often is because I'm dealing directly with hardware, but in this kind of UI world, a boolean choice is probably going to be represented as multiple bits anyway, so making a special case of "one" needs specific support.

(no subject)

Date: 2012-11-21 04:54 pm (UTC)
From: [identity profile] goldsquare.livejournal.com
If you look at my earlier comments, I was suggesting there are two cases: unlimited and limited to a maximal integer quantity.

So we agree, largely.

(no subject)

Date: 2012-11-21 07:17 pm (UTC)
From: [identity profile] goldsquare.livejournal.com
Can you characterize for me the sort of relationships that a Tag might typify? Is it just to be a free-form annotation, or used to create ad-hoc collections via run-time query, or create relationships (1:1, 1:many, many:1)?

(no subject)

Date: 2012-11-22 01:51 am (UTC)
From: [identity profile] goldsquare.livejournal.com
and thus, add categorizations that weren't baked into the Space by the person who designed it.

I think I'd revisit Tags in general, frankly, from what you've said.

But, also, from what you've said: under what circumstances would you want to restrict a Thing into having only ONE ad hoc category? Why would you want to remove a Thing from full participation in the free-for-all-party that is Tagging?

And would you want that to be one per Thing, or one per User/Thing, or whatever? The only model that pops immediately to mind is "Voting" or something like that, and that seems to be a bit of an abuse of the notion of categorization.

To me, it makes more sense, if you wanted to control what people can do with your Things, to say that "this sort of Thing cannot be tagged". And that starts to defeat some of the fun that you have described about Querki.

Looking at it another way: who does a Tag "belong" to? Who owns it? Can I, for example, decide that I want to categorize the photos that you keep in a space as "Lameass" and "Cool"? They are your photos, they are my tags - or is that not the case?

(no subject)

Date: 2012-11-22 05:38 pm (UTC)
From: [identity profile] goldsquare.livejournal.com
I may not be appreciating your ideas in EXACTLY the way you appreciate them.

My general thinking is that there are many "pools of things". A person creates a pool, with a new type of thing, and every "player" can make mashups of things, by creating tuples of things or associations of things or annotations on things.

To me, Tags are just another duple of things, but a particularly less powerful tuple.

(no subject)

Date: 2012-11-21 08:15 pm (UTC)
From: [identity profile] umbran.livejournal.com
Are there non-strawman cases where you would specifically want to only allow a single Tag on something?

Before I can answer that question, I need to know - what is the functional difference between a tag and any other data field?

(no subject)

Date: 2012-11-21 09:01 pm (UTC)
From: [identity profile] marphod.livejournal.com
How do Tags differ from Fields and from Things?

I can think of reasons for a Thing to have a unique field (one and only one Full Proper Name, one and only one ID number, one and only one Current Location for a physical object). Are these unique fields examples of Tags or something else?

What are the values stored in a TagSet? Do I name a TagSet (this tag set is all the Nicknames for this thing), or is a TagSet a collection of name/value pairs (This thing has a TagSet, which includes Nickname/name pairs)? If the latter, can a TagSet be marked to allow only Unique Name v. Multi-entry Names (This can have many nicknames, but only one CurrentLocation)?

For that matter, what is a Tag? Is it limited to a simple string, or is it a fully qualified Thing as well?

(no subject)

Date: 2012-11-22 01:52 am (UTC)
From: [identity profile] goldsquare.livejournal.com
I was wondering that last as well. Imagine the power if Tags were Things, turtles-all-the-way-down... even if that Thing was a deliberately over-simplified Thing.

(no subject)

Date: 2012-11-23 01:18 am (UTC)
From: [identity profile] hudebnik.livejournal.com
I can certainly think of situations in which I would want to limit tags for a particular field to be chosen from a particular short list, without the ability (for Joe Schmoe user) to add new ones. But that's not about the number of tags in the field.

(no subject)

Date: 2012-11-23 07:27 am (UTC)
mneme: (Default)
From: [personal profile] mneme
I guess the primary question is whether there are things where there's value in making -sure- an attribute only appears once in a given object. The two uses (keeping in mind that I'm not sure what the problem domain for Querki is) that come to mind are unique IDs (where even if they're a secondary key, there are often good reason not to allow a given object to have more than one -- for instance, letting traversal work properly) and for linear data structures, next/previous.

Profile

jducoeur: (Default)
jducoeur

June 2025

S M T W T F S
12 34567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags