BuilderBob, TeamPatter and the Natural Language Build Agent
I've been tossing around for a few years now some 'better living through IM' tools to tie into the Team Foundation Server (TFS) toolset. I have a not-even-started-yet-over-a-year-old project called TeamPatter on CodePlex to prove it. It's been one of my favorite TODO items to never do. I have begun to actually code and generate some proof of concepts around this. I have affectionately given the name "BuilderBob" to the build agent of TeamPatter. The 'Bob' comes as a bit of homage to Microsoft Bob, a friend of mine named Bob and that the triplets love Bob the Builder (not as much as Curious George, mind you). Here's the basic concept.
TeamPatter is the idea of an instant messaging agent also known as a bot that works and interacts on your behalf and facilitates capture of information to be associated with artifacts in the SDLC. In my prototype and my real point of concern the primary SDLC tool on the server side is TFS. BuilderBob is one of the agents of TeamPatter and his job is to interact with me to facilitate build process. I open up a session to BuilderBob and then begin asking questions or issuing requests. One such request interaction might go like this.
Me: ' Alert me to all failed builds in team project x'.
BuilderBob: 'Sure I'll notify you to all failed builds in team project x. Do you want that by IM or email?'
Me: 'IM, please'
BuilderBob: 'Will do. If you are not online would you like me to notify you the next time you come online, send you an email or just do nothing?'
Me: 'Oh yeah, Just email me in that case'
BuilderBob: 'I don't think I have your email address, what it is?'
ME: 'Geez, leave me alone already who do you think you are, Clippy?'
BuilderBob: 'Sorry. If you are online I'll let you know about failed builds. Clippy my ass.'
Granted this specific scenario is reasonably complex and probably just down right too much. But it's not undoable. As far as I have gone in my natural language agent in that thread are for more simple things such as
- 'Notify me of all failed builds in team project x'
- 'Notify moi of failed builds in x'
- 'Alert me about failed builds'
- 'Tell me anytime there is a F#$%@! failed build' [sometimes the cussing might be cathartic so I don't try to filter it out :-) ]
Other commands I have created are basic parses for items like
- 'queue build TeamPatterTestDeploy'
- 'Show me all the builds in the last 24 hours|1 day|1 week'
- 'Change the build quality on TeamPatterTestDeploy.2008.08.21 to test confirmed'
and things like this. Over time the vocabulary can become stronger.
Other areas I plan to prototype within TeamPatter involve important things like the daily scrum question initiated at a given time from the bot to me on what time is remaining on various work items. As well as logging time to timesheet entries by me initiating with comments like '4 hours for today on work item 30465'
One of the final areas (at the moment) I plan to prototype is the agent facilitating capturing information and applying to an artifact especially information that might be lost otherwise.
Dev A opens up an IM to Business User B and it goes something like this
DEV A: Hi B I have a few questions on story XYZ
B: Hi! Shoot it to me, I'll do the best I can.
Dev A: I'm going to log this so that I can memorialize the conversation for whatever dev works on this feature
B: great idea
A: #on the record for work item 14578#
Bot: You are on the record
A: So is the user supposed to get ice cream after every mouse click or only on save?
B: Only on save....
[Conversation continues]
A: #off record# By the way how's the kids
Bot: You are now off the record
B: They love the book 'No, David!'...
This could go on forever going on and off record jumping to new work items etc. and when you are done you have the conversations memorialized that might have otherwise been lost and with it you get all the goodness that comes from the conversation in insight to the goal and attributed to the context related artifact.
So these are my initial thoughts and some items I have started on for TeamPatter and out of the gate for BuilderBob.
What are your interactions you'd like to have?