Re: Debtags Library
Enrico Zini <[email protected]> Wed, 21 Jul 2004 15:40:48 +0100
| Newsgroups | gmane.linux.debian.usability |
|---|---|
| Message-ID | <20040721144046.GG3756@mitac> |
--gE7i1rD7pdK0Ng3j Content-Type: multipart/mixed; boundary="ABTtc+pdwF7KHXCz" Content-Disposition: inline --ABTtc+pdwF7KHXCz Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Jul 11, 2004 at 05:24:47PM +0200, Benjamin Mesing wrote: > You are right, in our case where performance might be essential - > perhaps it would be best to dismiss the TagIF and place the Tag there. > This would avoid overhead when everything is treated as tags even though > we loose some flexibility. The facet would simply be a specialization of > the Tag then. It might still be useful to add RTTI to the system, so > that a Tag could be downcasted to a facet if we actually need to know > whether we have a tag or not.=20 > Of course we could add a function isFacet() in the Tag class and do a > static_cast if space restrictions are really essential, but again we > would loose flexibility (perhaps we want to add a class "Distribution" > to allow us to assemble distributions (like "Server" or "Home User") > later). In this case we would have to add an isDistribution function in > the Tag class . > But lets see what Enrico says to this idea at all... Yummy! Library design discussions! I'm happy!! Let's put intentions before the code (but just for a moment :) Fr=F8m one side, we have the organization of the tag corpus: - The tag; - The tag context (the facet); - *NEW* The organization taking care of the namespace; This is something that came to my mind while desining a faceted-enabled CMS: it would be strongly desirable to have organizations taking care of their ontologies, and publishing them. In our case, Debian may maintain a number of facets, Debian-Edu a number of others, Debian-NonProfit a number of others, Warthogs their own ones, Gnome could do some as well, and maybe other independent groups may want to take care of something (for example, a group of security oriented people may want to provide a tag database for security-related things). All of this, of course, while leaving open the opportunity of having meta-organizational groups of facets: people like Dublin Core, the W3C or something else may want to provide and standardise some universal facets for everyone to use. Fr=F8m the other side, we want to do something with all these things: - Search for packages which have a tag - Search for packages which have any tags from a specific facet - Search for packages with similar tagsets Then, we want to make some user interface: - Look for the facets or tags that interest me - Mark some facets as "I don't care about this", to hide them from cluttering the interface and make them irrelevant for "related" searches (but maybe keep them around to provide further refinements in case searches produce lots of results) - See how to present facets and tags when there are a lot of them The implementation may or may not follow any of these views, provided that it makes them possible and easy+efficient to implement. The current subversion trunk has a Facet class and a Tag class[1], and I was thinking of also making an Organization class along the same lines. This organization follows the semantic organization of the tag corpus and allows everyone of these elements to provide its own specific functions (i.e. a Facet has a description and contains tags; an Organization can have a different description as well as an URL, while a Tag has an even different description and a full name). This doesn't impair doing partial matching: it's very easy to write a package filter that matches using a TagSet and/or a FacetSet; at the interface level, one could add a Use::* item that adds a Facet to the filter instead of a tag. So far, the current library organization seems allright, unless other scenarios come forward. Then you raise another issue: do we want multilevel facet/tag hierarchies? My current view is that the tag corpus doesn't really need that, and it's more of a user interface issue. This doesn't mean the library shouldn't help, of course, but I wouldn't want to code user-interface specific code in too low levels of the library. Ideally, we'll have lots of facets, and some facets may have lots of items. I see more probable that we'll have a very big number of facets to cope with, rather then we'll have the problem of facets with too many tags. For example, we have the tech:: facet problem at the moment; however, I'm considering that that facet is badly designed and it should instead split in netprotocols::*, dataformats::*, streamingformats::* and so on, possibly with repeated tags: for example, we may have dataformats::ogg and streamingformats::ogg, and it would be allright. The Organization idea may solve the facet grouping issues while also solving the more general problem of assigning the tagging task to the right groups of experts: it would create both a facet libraries and facet librarians, which is something that would indeed be very needed. Now, what if an Organization itself maintains lots of facets and wants to structure them in more manageable ways? The we group facets in sections; but isn't that what we did originally with Debian packages, which is now being replaced by debtags? It may be possible that a better way to manage the proliferation of facets would be for organization to tag the facets themselves. Facet/Tag browsers could be realized to address the task of managing complex categorization libraries, while users could decide to "subscribe" only to certain kind of facets, depending on their needs and interests. This is still a bit futuristic, but doable; with the current approach it would be easy to add a database of Tags-For-Facets which can be queried and produces FacetSet's. Simple to implement, and very much powerful: why not? Ciao, Enrico [1] see attached facet-tag.png; I hope I got UML right, and please tell me if I can directly attach DIA files. -- GPG key: 1024D/797EBFAB 2000-12-05 Enrico Zini <[email protected]> --ABTtc+pdwF7KHXCz Content-Type: image/png Content-Disposition: attachment; filename="facet-tag.png" Content-Transfer-Encoding: base64 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 PHjwYFNT04gRI7y8vGjLqVOnQkJCHBwcHBwcRowY8fXXX7NXcvXq1alTp7q7u4vF4hdeeGH/ /v3MpL1799Jznvb29j4+PsuWLePU9Ni5c+dzzz1nZ2fn7e29a9cupl1TDTberdDSC21vbm5+ 9913XV1dhUJhQECAQCDYt28fs/iBAwcEAsELL7zQqV0HAF3RAy6FdHETur4HrKFUpHnuR502 bRr574lTiv5N2wkhX3/9dUREhEgk+vXXX2/duiUWi//0pz8xqfHHH38MDAw8d+7cl19+WV9f v3fv3oMHDzKr+umnn3Jycurr66urq+fMmbNy5cqkpCR275999llubu6dO3e8vLzi4+OPHz/O TNJ9F3fYy9atW+fMmVNRUdHe3j5v3jxCyI4dOzjbq9/zSQCgjvPlVSgUs2fPdnV1tbOzGzly ZE5OjpE6ov8P7tOnz+jRo8+cOWOoXjRR6TxgDe+vme6L87KWUpFGfRZE06N4VVVVtra2IpHo /v37KpWqoqJCJBLZ2tpWVVXRGV555RVCyI8//khf/vjjj4SQESNG0JdhYWGEkBMnTnQYAB3D ydXVlb6km6xptYQQZkhc9vzqf+vSy5UrV5gZGhsbZTKZUChkBg62s7OzsbHhHbEXzy9Cj9ep 5xd1xPl6vvbaa4mJiWVlZc3NzXl5eZGRkerzGKQj+rK2tvbIkSP9+vXLz8/vehcGYYyf9/Xr 18+ZM4fTGB8f/49//MOwHRk7N2lCP5lme65/7NixhBC6N+kwQvSDS0kkEkJIc3MzfUnrLjFj 1dMBeRsbG9VXe/fu3bfeesvT01MkevwICq2uovpvxuKs1sHBgZmqY17UpRc6ECJj4cKFhJDV q1erVKpt27YRQl599dXO7jSAnsEE9RdtbW0bGho4/RK+OoKlpaUjRowQi8UjRoygBSKYmTXV JuT8MjCLHDhw4PXXX9cUJ29lxJaWlvfee8/FxaVPnz7r16/XpXfOFi1evFgikQQFBTHBa4pT fXHebefdS1SPLxVp5uf62Xel0n+13ImqvrM0iY2N3bFjx+zZsysrK1UqVVtbW6cWZ1MfL7hT vdjY/GHfzp07VyAQfP755wQnUQF0QMv7VVdXs+8PYKoYxsTEMFcumB9E9g/rsGHDkpKSbt68 yVktrSNIB4SjLUlJScHBwbW1tYGBgYsWLWLPTGsTlpaW0os4vB2xhYaGnjt3TlOc8fHxmZmZ 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 DHkRAADgsf8P4P0dH/+7UMMAAAAASUVORK5CYII= --ABTtc+pdwF7KHXCz-- --gE7i1rD7pdK0Ng3j Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA/oBt9LSwzHl+v6sRAmX6AJ9Vfm4RcQ90PV236F2aP33iMq4RZwCdEi5k vMk6GdXh2/D9hsa0z95JbPs= =HOks -----END PGP SIGNATURE----- --gE7i1rD7pdK0Ng3j--