Labs/Bespin/DesignDocs/Stati
Documenting What You Are Doing
A knowledge of your current actions is useful in a number of places.
- As a twitter-style status message
- In commit logs for files. If you hit save while your status what "fixing bug #42" then this might be a useful part of a commit log
- As a hit to what project goals are good to work on
I propose to add an 'iam' command which could be used as follows:
> iam fixing bug #42
(TODO: Should we have a 'i' command which does the same but strips off an initial 'am' prefix? Probably not)
It is my belief that your current actions are an important part of encouraging interactivity in development, and they also help solve the 'what did I do to this file?" problem when committing.
Since status messages are important throughout Bespin we should also have some permanently visible UI to remind the user what they are doing. In addition to the 'iam' command we should have a portion of a toolbar that displays and allows editing of status message.
Whenever a file is saved, the current status message should be added to a meta-data file, and the list of status messages (for all committed files) should then be proposed as a commit message on commit.
Access to Others People's Status
There is a common unix command 'who' that describes who is logged onto the system, through what device and for who long. The bespin who command should list the people you follow along with their latest status message and last access time. For example:
> who What your friends are doing: Username Last active Status dalmaer Active Now Fixing bug #2 jresig 5 May 2009 Working on secret new feature for test_swarm jwalker 6 May 2009 http://bugzilla.mozilla.com/bugs?id=432489
It is possible that we could design the UI widget that allows setting of own status to have a button to retrieve 'who' data.
Access to a File's Status
When editing a file it would be very useful to know who else was editing the 'same files'.
[This usage of 'same file' is different from 'same file' in the context of collaboration, which means that one user has shared their project with another, and they are jointly editing the same set of bytes]
In the context of a files status, 'same file' means another file in someone else's Bespin project with which it shares some heritage - for example if 2 users had checked out the same project and were editing the same file from that project.
There a number of alternative technical definitions of 'same file' in this context:
- Most narrow: The 2 files have the same VCS URL.
- Broader: With DVCS, and with any project that has changed VCS there may not be a canonical VCS URL forcing us to have a broader definition of 'project'. Ohloh.net or an OpenWeb directory could be used
- Even broader: Files are moved around inside repositories, for branching and refactoring. Possibly the best definition of 'same file' takes this into account too.
We should create a new command (possibly with some UI button or similar) that shows other users relationship with a file:
> fileinfo [filename] Users that are working on foo.txt Username Last edit Last status kdangoor Yesterday Tidying up some random stuff bgalbraith 4 May 2009 Major re-write of the bottom section
[Before anyone comments - I know - the plural of status is not stati. Shoot me.]