This article is about the Soliant Consulting Tag Manager. A Tag Manager is a widget which adds tagging to a set of data. An example would be tags to describe items on an e-commerce site. Instead of using a comma delimited list of tags “daybreak, golden, sunrise, arc” a tag manager handles each tag individually allowing a developer to handle tags in a fine-grained approach with proper database normalization rather than a csv glob. This tag manager supports ajax json requests, arrays of hidden fields, and/or custom handlers.
There are many html tag managers. In my search for the best one to use with my project enhantsy.com, I found http://welldonethings.com/tags/manager by Max Favilli.
This tag manager, github max-favilli, did everything I wanted, but when I tried to modify it to work with Twitter Bootstrap in a way Bootstrap didn’t already support, I rewrote nearly the whole project. I was then ready to rewrite my rewrite when I decided to give open source a chance to play too. I let Max know about my work and he replied it would probably be a week before he could devote time enough to the project to review my changes.
Max offered to let me co-admin the project, but because the documentation would be inaccessible to me, and because so many fundamental design decisions were changed in my fork, I declined. The two projects parted ways, resulting in an always possible but seldom occurring Code Fork. The max-favilli project lives on and my new project, Tag Manager, is born as a new github project.
I created complete documentation in a second github project which I put together with Zend Framework 2. I used Twitter Bootstrap, the default css and js for ZF2, as the basis for the documentation.
Twitter Bootstrap is a js and css framework written in LESS (lessc) and compiled with jshint. These tools are representational of the change which is happening in front-end development. Instead of using the same tired css & js, compilers are used on the code so it can be written in a more traditional format with global variables for css and syntaxed checking for js. But the change in front-end tools doesn’t stop there.
I hosted the documentation on Open Shift. This is a PaaS (Platform as a Service) by Red Hat which is like a traditional web host but you manage your code with git and push changes to the service where they are made live. OpenShift has support for numerous web technologies and anyone can get a free account with three “gears” or websites.
A while after the fork a user posted to the max-favilli project about the use of TypeScript and I was intrigued. TypeScript is a tool from Microsoft which allows you to write js code as though it were a more standard, almost php-like, or java-like, language with support for classes, interfaces, type casting and checking and more. I rewrote Tag Manager again to use TypeScript. I rewrote Tag Manager css in LESS.
About this time Jeremiah Small commented on github pages. These are html pages hosted on github and are created as part of your git repository in a branch called gh-pages. This branch starts empty and you build a website inside it so it lives along side and with your repository. I moved the Open Shift project into gh-pages as static HTML.
I then secured the module name “tagmanager” for npm, or node.js package manager. Node.js is a different kind of javascript library and I’m still learning how it will work best for my purposes.
Although I started this work for Enhantsy, I wanted Soliant Consulting to have something from their investment in me at ZendCon which was also sponsored by Open Shift. So Tag Manager is hosted under Soliant’s github account but it is a project for the open source community and has begun to attract other developers. Tag Manager is a very small project and serves a very specific purpose in the landscape of javascript tools and I intend for it to be the very best in this role of Tag Manager.