The basic database objects are working, and also bits of the user interface. I can create and open files, add and delete items, and item notes and properties. I have a basic View object, not pretty but functional.
It's time to attack 'Categories', which is the beating heart of Agenda. They are also the most complex part. I won't really understand how Agenda works until I try programming these puppies.
In Agenda, every Item can be assigned to one or more Categories. For example, an Item entry might be "Bug in the Xbox360 version of Far Cry 2 causes game to freeze around about 62% mark". From the text, this Item might be assigned to categories like 'Bug', 'Xbox360', 'Far Cry 2'.
One of the neat things that Agenda will do is run through the text looking for category matches. Once these categories exist then Agenda will become 'smarter' and make these assignments automatically.
This example illustrates simple 'Standard' categories - an item is either in them or not. Agenda also has 'date' and 'number' categories, perhaps an estimate of how many man-days are required to fix the bug or a date when the bug was reported.
Let's continue with the example. We might assign Smith (one of our programmers) to work on this bug. Smith is a member of a group called 'Programmers', and Agenda knows that only valid values for the Programmer category can be assigned to the Programmer category. If the entry said "assigned Smith to work on the bug...", then Agenda would have found and matched Smith.
And conversely, if you entered 'Jones' into the field for 'Programmer', then Agenda because it's the programmer field and Agenda doesn't know about Jones, it would know to add Jones as a new programmer.
When you start a new file, Agenda gives you only the most minimal pre-defined Categories - three date categories called 'Entry', 'When', 'Done', and a standard category called 'Initial Section' (you can change the names) which Agenda creates for the first view.
The first thing you might do is type in an entry, perhaps the one above. Since the view that we entered the Item into was called 'Initial Section' (and presents a list of Items in that category), the item is automatically assigned to 'Initial Section'.
The View is pretty basic - just a list of items. Let's add another column to the view - perhaps 'Hardware'. And let's plug in the value 'Xbox360' into that column for our Item.
Now we have two new Categories - 'Hardware' and 'Xbox360'. Further, Agenda knows that Xbox360 is a valid selection value for Hardware ('Hardware' is a parent of 'Xbox360').
Let's add another obvious Category 'Game', and assign 'Far Cry 2'. And then let's add another item, perhaps "Duplicate boat bug in WOW at the 'Strand of the Ancients' boat mooring." which we assign to the Game 'WOW'.
So far, we haven't done anything more complex than typing in text and values. It's not unlike using a spreadsheet. But underneath, the Category tree is starting to grow and starting to learn what our spreadsheet is about. Here's what it looks like:
Now let's do something that sounds tricky but is trivial with Agenda. World of Warcraft (WOW) is played on your computer, so the hardware platform is a combination of manufacturer and operating system. Think of it as a category with many subcategories, and we'd like to track those for WOW bugs.
The first thing we'll do is add a Category to Hardware called 'PC'. Since all instances of WOW run on a PC, we tell Agenda that whenever it sees WOW, then it should assign the item to hardware 'PC'.
In Agenda that's trivial, we simply enter 'PC as the hardware for WOW and it creates the category. Then we flip to the Category Manager and add 'WOW' as an Also Match on the properties page for 'PC'. And from now on, when we enter an Item with 'WOW', it will automatically be assigned to to the category 'PC'.
Maybe we want to track what TYPE of PC. So we create a new View called 'PC Platforms' with an initial section of PC. It pops up instantly, with only the one item in it (because the Xbox360 bug isn't in this category). We add a column for 'Manufacturer' and 'OS', and assign 'Dell' and 'XP', creating new categories automatically.
Now if I add an item about 'Second Life' to my Initial View, it offers me a structured choice of how to assign the hardware categories. And the bug also appears in my 'PC Platforms' view, where I can easily sort by Manufacturer or OS. Or I could add another View just for bugs reported on XP.
This is almost magic. And the real magic is that Agenda will let me continue evolving my model and reorganizing my data as my needs change.
Although we have touched many types of 'things', they are all just Categories. Agenda treats 'Initial View' and 'PC Platforms' (which seem to be Views that present groups of items) identically 'Game' and 'Manufacturer' (which seem to be groupings of items) and even identically to 'Dell' and 'Xbox360' (which seem to be attributes assigned to Items).
I LOVE this uniform usage, it is the source of Agenda's wonderful simplicity and power.
But Agenda doesn't quite get everything perfect. It doesn't realize that OS and Manufacturer are children of PC. I have to dive into the Category Manager tool and move them manually to where I want them in the category hierarchy.
And it doesn't realize that I want Items entered using my new 'PC Platforms' view to also be assigned to Initial View.
There are two separate 'bugs' that seem to cause this. Agenda doesn't hunt down the Category tree far enough to find all the children, and it assumes a new View starts at the top of the tree instead of under the Category that launches the view.
Maybe I can try to fix these issues. Or maybe the original Agenda designers discovered a problem that fixing these issues will cause. The quickest way to understand what subtle issues I will create by changing Agenda's default behaviors is to simply code them up and trying them.
However: I have one major unhappiness with Agenda's use of Categories. So I'm going to modify Agenda's design. I'll write more about it in the next posting.



0 comments:
Post a Comment