Greetings, folks,
I was ruminating on the idea of "social communities" today. Let's say that you want to work more efficiently. One of the best ways to work more efficiently is to figure out what your current problems are, and then find an expert who you can ask to help you out. The depth and breadth of your social community will determine whether you know an expert to ask or not.
These kinds of social communities are emergent properties of mailing lists and issue management systems such as bugzilla. After monitoring such mailing lists and issue systems for a while, you start to get a feel for who knows what. But this knowledge is incomplete and requires some investment on your part.
I think Hackystat could be enhanced to support the generation and maintenance of such social communities. One approach would be for sensors to monitor your activities with the goal of creating a profile of you that indicates things like:
- what packages/APIs you appear to know about (based upon the import statements in your code and your code itself)
- what tools you appear to know about (based upon the tools you invoke, the command line monitoring, etc.)
- what errors/problems you appear to have encountered (based upon the error messages that arise from Eclipse/Ant, etc.)
You can use the Preferences page to decide what parts of your profile you want to make public. The public parts of this profile become available to other people on the Hackystat server who are searching for answers to problems and can thus contact you for advice.
To assess such a mechanism, a perfect environment is something like my 413 class, where students are constantly running into issues they don't understand and might want to get advice from other students who have encountered similar problems. Consider the following email I just received today:
Files\Eclipse\workspace\graphster-kusachi\src\edu\hawaii\graphster\FamilyTree.java:74:36: Expected @param tag for 'args'.Date: Thursday, September 23, 2004 12:45 AM -1000 Subject: ant question
i keep trying to run 'ant dist', but i keep getting this problem:
checkstyle:
[checkstyle] C:\Program
BUILD FAILED C:\Program Files\Eclipse\workspace\graphster-kusachi\build.xml:190: Got 1 errors
----------------------------- At 74:36 it says this: public static void main(String[] args) {
I'm not quite sure how to fix this. Any suggestions?
This student sent out this email at 12:45am. I was (fortunately) asleep at the time, and thus it mid-morning before I got around to answering this email. So, the student waited at least 10 hours for a response.
Now, imagine that hackystat was building a representation of the "social community" consisting of the students in this class. What if he could access the social network at 12:45am and find out which students (a) had run Checkstyle successfully, and/or (b) had run Checkstyle and had also gotten this same kind of error ("Expected @param tag")? Now combine Hackystat's social network with the fact that students already use instant messaging, and this student could potentially start by finding out which students in the class had already encountered checkstyle errors, then look to see which of these were online, then contact one of those students via IM to ask the question. The ten hour request-response latency could potentially be reduced to a couple of minutes!
There are lots of interesting challenges involved in developing such a social network, but I think this would be a fruitful research direction for someone because:
- Hackystat provides almost ideal infrastructure for the collection and analysis of this kind of information. You could enhance the Eclipse and Ant sensors and get quite sophisticated instrumentation support going quite quickly.
- After installing the sensors and setting the profile, no further user overhead is incurred. Your profile is updated automatically based upon your behaviors and experiences.
- A classroom setting involving programming is a really great environment for evaluating this infrastructure, since it provides a ready pool of people confronting common problems. And I conveniently teach such a class almost every semester.
- Such an approach would appear to find ready application to a lot of non-classroom situations, even non-programming situations.
Any takers? :-)
Cheers, Philip
