TAIGA: Internet-Scale Programming


What happens when current trends in computing all take off? When most computing is done via grids, when files are accessed and shared using peer-to-peer networks, when much of a program's work is done using web services, and when there are thousands of software developers all working on these common aspects, how will we be able to write and maintain programs? How should these shared programming concepts be integrated into languages and computing? What should we be doing about security and privacy in this framework? How are programmers and machine owners going to pay or get paid for the work they do or the resources they provide? These are some of the issues that we are trying to address in the TAIGA project.

To make Internet scale programming work, we need to have an apporpriate notion of a component. This needs to encompass web services, grid computations, as well as traditional components such as libraries and remote objects. Component are divided into two parts, an interface and an implementation. At Internet scales, with thousands of potential suppliers for both code and machines, the implementations should be considered private and inaccessible, and the interfaces are what the programmer codes to and develops with. One of our central observations is that interfaces in this type of framework have to provide more than the syntax of the available calls. They have to provide the semantics of the underlying component. Moreover, this semantic definition has to include not only how the component works, i.e. what the various entries do, but also provide information on the security, privacy, and economics of using the component.


"Designing Internet-Based Software", DESRIST, May 2007.

"A Component Model for Internet-Scale Applications", ASE 2005, November 2005.

"Evolving Evolution", Workshop on Principles of Software Evolution, September 2005.

"Visualizing What People Are Doing on the Web", VL/HCC 2005, September 2005.

"Writing and Using Program Specifications" FoSER, November 2010.

Building Dynamic, Long-Running Systems by Steven Reiss and Qi Xin, SESoS 2016.



NEWSVIEW: This, our second real example, is a visualization of where news is occurring in the world. It supports a set of crawlers running on available (grid) nodes, a selection of different page classifiers that attempt to determine what a particular news story page is about, and a manager for finding and sharing crawlers among users. A simplified version (that uses a proxy to talk to TAIGA) is available as either an applet or a dashboard widget.

WEBVIEW: The first non-toy example we coded is a system to visualize what is currently being browsed on the Internet by category. It consists of a visualization front end, a tool for recording times and categories, a tool for managing the files containing the data, and a tool for determining the category of the URL. We have multiple categorizers, one using Google, one using MeURLlin (from Singapore), and one of our own that reads the open directory database and builds a categorization tree. The visualization is able to show the range of categories at different time periods using rings to represent the periods. The different categories are color coded. The line in the middle varies in frequency, width, and amplitude to show variances among the expected number of users, different pages, or views. In addition, the saturation and value of the color show additional information such as the number of users and number of views.



Download taiga source.

Access the Taiga web pages.