User:Xilaili626/sandbox

SmartFrog (Smart Framework for Object Groups) is a Java based open-source framework for helping host large-scale applications across component-based distributed system. It is proposed to make the design, configuration, deployment and management of distributed systems more easily, correctly and automatically. SmartFrog mainly consists of three aspects: the SmartFrog Language, a runtime system, and a library of SmartFrog components that implement the SmartFrog component model.

History
SmartFrog was originally developed in Hewlett-Packard's European Research Labs. It has been used in HP research on infrastructure automation and service automation as well as in a variety of HP products. The SmartFrog became open to public in January 2004 under LGPL licence hosted on SourceForge.As a result users and developers outside the lab can also make their contributions by using, extending the framework or reporting bugs.

As a Framework
SmartFrog is a software framework rather than a package or library, which means it has much wider application and could be extended to include new components or functionalities.

Template mechanism
In SmartFrog, every component is defined as a template. For the template mechanism, system configuration is easy to adapt to different requirements and the default configuration can be kept. Prototyping also allows keeping all the transformation and history of configurations of the system. Using SmartFrog to build large-scale distributed system, one doesn’t need to completely rewrite the whole application as SmartFrog components. Users can easily write or create simple SmartFrog components to install, uninstall, configure, starting, and stopping the system using the configuration description notation.

Comparison with other system
There are many software system similar to SmartFrog, but few of them uses the same model as what is used in SmartFrog. The largest category of systems is based on client-server model, where the configuration data for all clients is hold in a server and each client is designed to match the configuration data stored in the server. However, in SmartFrog, cross-client model is used so that each client is treated as an independent entity. This makes SmartFrog has the ability to coordinate cross large range of nodes, carry out autonomic actions and result in higher scalability.

SmartFrog Language
SmartFrog Language is a prototype-based, name-value pair language used for describing components collections and system configurations, such as which software components belong to the system, what the configuration parameters are, how the components are bound to other components in the system, and in what sequence the components work.

In the description written in SmartFrog Language, each of the ordered attributes used for achieving configurations contains a name and a value. The value could be basic values, or collection of attributes known as component description.

Component Model
In SmartFrog, components are the most important part. A system is considered to be a collection of applications, each of which are composed by a collection of components. Every component is defined as a template in a SmartFrog file, which represents the existence and default attributes of components.

Security
SmartFrog has two running modes: secure and insecure. In insecure mode, there is no restrictions on client connection to SmartFrog, and the plain-text communication can be eavesdropped and intercepted. In this mode, the system is vulnerable to malign attacks.

SmartFrog needs to protect against malign deployment or other management action. In secure mode, SmartFrog uses PKI (Public Key Infrastructure) system. Only clients that are certificated by specified CA can connect to the SmartFrog Daemon. In addition, SmartFrog signs all components and descriptions with a certificate and only the certificated ones can be deployed. And all communications are encrypted in SSL protocols.

Related Project
The GridWeaver project is a collaboration started from 2002 among the School of Informatics of Edinburgh University, HP Laboratories, and Edinburgh Parallel Computing Centre (EPCC).This project is aimed to find solutions to the problems of automating the configuration and management of Grid computing fabrics.
 * The GridWeaver Project

The project compares SmartFrog and LCFG in terms of strengths and weakness, as well as investigating how these tools are utilized to solve problems.