The tags idea has been around for a long time, and Mark Dexter and I have been thinking about how to implement in the CMS for ages. On the CMS development mailing list there is a thread that started in 2010 about the need to be able to do multiple categories. When it came back to life in October we said, let's sit down at Joomla World Conference and come up with a plan.
Well, we did just that, based on a lot of comments in that thread and elsewhere, and after looking carefully at some implementations (I spent a lot of time on Stack Overflow because they use tagging as a central feature and I wanted to understand how it really works for them). We wanted to have a solid implementation that would provide good usability for site builders and infrastructure for the long run for developers to extend and do cool things.
Overall, the current category system is pretty unintuitive for beginning users and limiting for advanced users. However it works great for things like inheriting permissions and access levels and use cases where data are really and truly hierarchical.
So our goal was not to replace the categories system, but to come up with a new independent approach to managing classification of content. We also wanted to make it really performance oriented with quick queries avoiding some of the problems categories has with that. And of course we want our tagging to be more flexible, useful and powerful than any other CMS's.
One of the cool things about working on the CMS core is that you can really think about how something should work as the issue, rather than thinking "how do I work around this problem in the CMS?", which is what most extension developers are forced to do. So as part of this project I was able to think about what the core CMS really needed in order to support tagging, and make contributions to both the platform and CMS to help bring that about. For example I wanted to be able to have "trending tags" so I sent a contribution of some code to add code for date math to the platform.
I worked on a basic implementation with the requested features, ranging from nesting to basic views paralleling blog and list views. The amazing part, always, of Joomla was how once that basic work was done people jumped in to help. For example, Roberto Segura jumped in to implement the ability to add new tags on the fly. He did totally amazing work, responding graciously to many requests for changes in his initial implementation. That field totally rocks.
Other people came in to help with coding, such a David Hurley who jumped in to work on the front end layouts, Charanco, Edgars Piruška, Mark Dexter, and others, plus lots of people reporting bugs and improvements.
I also got to give presentations on Tags at Joomla! Day Boston and at the Joomla! Users Group NYC, both of which gave me great feedback and lots of ideas for how tags can be developed in the future.
Now that we are down to just over two weeks from release, it's scary, exciting, nerve-wracking and generally the usual Joomla situation of knowing that people will have lots to say. I know that as soon as the release happens there will be a flood of large and small things that we've forgotten and of new ideas.
There will certainly be lots of things written about how to use tags, but I wanted to share a little bit about the process behind a major new feature. It's both more complex and more simple than you might think, but in unexpected ways, at least to me.
Only two weeks left... back to the code.