Research Goals


The following are the main, long-term goals I would like to achieve with µCode.

Bring a different perspective to research on mobile code and mobile agents.
If you look at current mobile agent systems, you will see that the vast majority of them provide the same abstractions and suffer of the same drawbacks. Most of them are just copies of the old ones, those that everybody know about and that you can count on the fingers of one hand.  
The ultimate goal of µCode is very simple and straightforward: to foster a way to think about and design mobile code and mobile agent systems that is novel with respect to the state of the art. 
This effort is a two-prong one. On one hand, µCode provides abstractions and primitives that, albeit intuitive, are very different from those you typically find in existing systems. On the other hand, µCode is shaped by a design that, albeit common for any other software artifact of non-trivial complexity, is novel in the realm of mobile agents.  
Provide an "open" tool to investigate different approaches and techniques.
The monolithic nature of current mobile agent systems, combined with the fact that only few of them are open source, makes it difficult to "plug-in" different mechanisms on top of the same system, and experience different technical solutions. This has been an obstacle both for industry (because the one-size-fits-all approach often does not fit all the details of a complex environment) and academia (because it fostered the approach of reinventing the wheel every time, with the results that are known).
Ideally, µCode would constitute the kernel of a new generation of systems that follow the layered approach fostered by µCode. Rather than reinventing the wheel every time, new primitives, mechanisms, and algorithms can either be plugged on top of the core ones provided by µCode, or adapted by specializing such core primitives in some way.  
Teach the fundamental techniques for building mobile code systems. 
I already used rather successfully µCode to teach students how to build applications that exploit logical mobility. Now, I would like to leverage off of my experience with µCode to teach my students how µCode is built, which "advanced features" of Java it relies on, so that they can get a better grasp of mobile code technology.
The curiosity to know the nuts and bolts of mobile code technology is actually quite common among people interested in this research area. It is not infrequent to see, on the mailing lists concerned with mobility, requests of people looking for a small, open source, mobile agent system from which they can learn the main techniques needed to build their own. I believe µCode would be useful to them. If a sufficient number of people get interested in this, and there is a request for a document (a paper, a small book) describing the innards of µCode, I will consider putting together such documentation and placing it on the Web.

© 2000, Gian Pietro Picco - Last modification: 07/09/00