Thursday, August 25, 2011

OpenMonitor Desktop Agent

Hi, everyone. The Google Summer of Code 2011 has just reached the end. We've had a quite exciting summer this year because of the project we are incubating , the Internet Connectivity Monitor. Along with the worldwide voices against Internet censorship, ICM will be the sentry in the front line to discover any kinds of Internet connectivity problems.
ICM Desktop Agent is the client side software running on user's computer. It supports Windows, Linux, and Mac OS platform. We develop this software using Python, Twisted and PyGTK. The functionality of the desktop agent is running in background and doing connectivity testing against some websites and services. The connectivity testing tasks are assigned by the aggregator. It also allows user to manually control the behavior of the agent. Users will have an overall view of the connectivity status of current region and the whole internet though the connectivity map, which is based on Google Map and OpenStreetMap. And also, they can see the testing results and the connectivity statistic data in localhost.
We are making ICM as a global monitoring network, so the agents have the capacity of connecting to each other and sharing their knowledge, mainly are reports. The desktop agents forms a two-tier network. Super desktop agents are the first tier, and normal desktop agents are the second tier. The super agents are the ones more powerful and stable, which could be a bridge between the aggregator and the normal agents when the normal agents couldn't reach the aggregator. And also they can provide some balancing services to the normal agents. We are trying to build this network robust, and eliminate the island phenomenon among peers.
Now the ICM Desktop Agent is near it release date. We are looking forward to its roll-out.
Through this summer's coding work, I've learnt a lot of Python programming skills, and have gotten familiar with the python modules and Twisted framework. I also learnt how to write asynchronous networking programs with Twisted. That's a bit challenging, and it's quite different from the programming patterns I've used before.
Some screenshots:

No comments:

Post a Comment