Port-tags is like del.icio.us for FreeBSD ports collection.
On a theory that one picture is worth a thousand words, here is a typical port-tags usage example.
The idea is to make ports classification easier and more convenient. Instead of using predefined and limited set of port categories, port-tags uses short one-word descriptions called tags. A port can have an arbitrary number of tags associated with it. One can use the web interface (and maybe a command-line interface in the future) to view only the ports that have particular tags associated with them. This process is very efficient in narrowing down the number of sought ports.
For those unfamiliar with the concept of tagging:
please note that just selecting a single tag
from the monstrous tag list
does not buy you much.
For example, by selecting devel
tag,
the resulting subset of ports with this tag consists of
more than 2000 ports, which is substantially
higher than even the size of notoriously huge devel
category!
The real power of tagging manifests itself when you limit
the subset even more by adding more tags to the query.
This is normally done by clicking on one of the "Related tags"
in the upper right of the page.
For example, selecting mail
in addition to
already selected devel
tag
will produce just 17 results, which is much more manageable.
In this way one can very quickly find just those ports in which one has interest at the moment.
There is a mailing list, which currently combines port-tags discussions with commit messages to port-tags system. To subscribe to it, send a mail to port-tags+subscribe@list.droso.net.
The source code for port-tags can be fetched from SVN repository at
http://svn.droso.net/svn/port-tags/trunk.
You will need either subversion client
(devel/subversion
)
or an alternative, better client svk
(devel/svk
).
Debian has something similar called Debtags. The main difference of Debtags and port-tags is not the absense or presense of particular frontends. Rather, Debtags takes potentially more fruitful approach of getting the community to define the tags, while for now, port-tags uses an algorithmic approach to deduce the tags from the existing categories and from ports' COMMENT field. Let's see how this works out and extend it to a community-based project at a later stage.
The idea of port-tags came up in a conversation I had with Autrijus Tang a couple of weeks ago. Since then, I discussed it with various people (most notably with Lars Thegler, Erwin Lansing, and Florent Thoumie) and finally implemented it.
In its current form, the service is not updated live. Instead, as it depends on the INDEX file, and the index file gets updated once a day, so does the port-tags database.
If it looks too similar to del.icio.us, it is because for this early version I just stole the stylesheets from there.
As of version 0.04 α, you can download the generated database that port-tags use. Or you can download a simple textual database of tags instead. Thanks to Michael C. Shultz for the idea.
As of version 0.05 α, you can use a simple API to get just the newline-separated list of ports with specified tags. Thanks to Panagiotis Astithas for the idea.
As of version 0.10 α, you can use a simple API to get the newline-separated list of related tags. Thanks to Alexander Botero-Lowry for the idea.
As of version 0.11 α, you can use a simple API to get the newline-separated list of tags for a given port. Thanks to Alexander Botero-Lowry for the idea.
If you have any comments and suggestions with regard to port-tags, I would like to hear about it. Is it useful? How can we make it more useful? What are the shortcomings? Any show-stoppers which prevent you from using it?
Anton Berezin <tobez@FreeBSD.org>