SmartFrog (''Smart Framework for Object Groups'') is a
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
based
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
framework for helping host large-scale applications across component-based
distributed system
A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
. It is proposed to make the design,
configuration
Configuration or configurations may refer to:
Computing
* Computer configuration or system configuration
* Configuration file, a software file used to configure the initial settings for a computer program
* Configurator, also known as choice boar ...
,
deployment
Deployment may refer to:
Engineering and software Concepts
* Blue-green deployment, a method of installing changes to a web, app, or database server by swapping alternating production and staging servers
* Continuous deployment, a software e ...
and management of distributed systems easier, correct and automatic. SmartFrog mainly consists of three aspects: SmartFrog Language, a
runtime system
In computer programming, a runtime system or runtime environment is a sub-system that exists both in the computer where a program is created, as well as in the computers where the program is intended to be run. The name comes from the compile t ...
, 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. SmartFrog became open to public in January 2004 under
GNU Lesser General Public License (LGPL) licence hosted on
SourceForge
SourceForge is a web service that offers software consumers a centralized online location to control and manage open-source software projects and research business software. It provides source code repository hosting, bug tracking, mirrori ...
. As a result, users and developers outside the lab can also make their contributions by using, extending the framework or reporting bugs. In 2017, following
Hewlett-Packard's corporate split into
HP Inc.
HP Inc. is an American multinational information technology company headquartered in Palo Alto, California, that develops personal computers (PCs), printers and related supplies, as well as 3D printing solutions.
It was formed on Nov ...
and
Hewlett Packard Enterprise
The Hewlett Packard Enterprise Company (HPE) is an American multinational information technology company based in Spring, Texas, United States.
HPE was founded on November 1, 2015, in Palo Alto, California, as part of the splitting of the ...
, whilst under
Hewlett Packard Enterprise
The Hewlett Packard Enterprise Company (HPE) is an American multinational information technology company based in Spring, Texas, United States.
HPE was founded on November 1, 2015, in Palo Alto, California, as part of the splitting of the ...
's ownership, SmartFrog was relicensed under the
Apache License 2.0.
Technologies
SmartFrog Language
SmartFrog Language is a configuration description language used for describing component 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.
Component model
In SmartFrog, component is the most important and basic part. A system is considered to be a collection of applications, each of which are composed by a collection of components. Every component is written in a SmartFrog file in Java, which represents the existence and default attributes of components.
Runtime system
The runtime system interprets the descriptions written in SmartFrog Language and manages the components based on the interpretation results. It also provides users with tools to interact with components.
Features
As a framework
Instead of a package or library, SmartFrog is a framework, a building block to help build software systems. SmartFrog can be extended by adding new components into the framework, which means it has much wider applicability and could acquire new functionality.
Template mechanism
In SmartFrog, every component is defined as a
template
Template may refer to:
Tools
* Die (manufacturing), used to cut or shape material
* Mold, in a molding process
* Stencil, a pattern or overlay used in graphic arts (drawing, painting, etc.) and sewing to replicate letters, shapes or designs
Co ...
. Typically for every new service, new components are created and activated. However, some general purpose components can be reused in different service. 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 can reuse some components and does not need to completely rewrite the whole application. Users can easily write or create simple SmartFrog components to install, uninstall, configure, start, and stop the system using the configuration description notation.
Cross-client model
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 are held 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 provides SmartFrog with the ability to coordinate across large range of nodes, carry out autonomic actions and result in higher scalability.
Security
SmartFrog has two running modes: secure and insecure. In insecure mode, there is no restriction on client connection to SmartFrog, and the
plain-text
In computing, plain text is a loose term for data (e.g. file contents) that represent only characters of readable material but not its graphical representation nor other objects (floating-point numbers, images, etc.). It may also include a limit ...
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
public key infrastructure
A public key infrastructure (PKI) is a set of roles, policies, hardware, software and procedures needed to create, manage, distribute, use, store and revoke digital certificates and manage public-key encryption. The purpose of a PKI is to facil ...
(PKI) system. Only clients that are certificated by specified
certificate authority
In cryptography, a certificate authority or certification authority (CA) is an entity that stores, signs, and issues digital certificates. A digital certificate certifies the ownership of a public key by the named subject of the certificate. Th ...
(CA) can connect to the SmartFrog
Daemon
Daimon or Daemon (Ancient Greek: , "god", "godlike", "power", "fate") originally referred to a lesser deity or guiding spirit such as the daimons of ancient Greek religion and mythology and of later Hellenistic religion and philosophy.
The wo ...
. In addition, SmartFrog signs all components and descriptions with a certificate and only the signed ones can be deployed. Communications are encrypted using
Transport Layer Security
Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network. The protocol is widely used in applications such as email, instant messaging, and voice over IP, but its use in secu ...
(TLS) protocols.
Related projects
The GridWeaver Project
The GridWeaver project started at 2002 and lasted a year. The project collaborators were
the School of Informatics of Edinburgh University, HP Laboratories, and
Edinburgh Parallel Computing Centre (EPCC).This project was aimed to find solutions to the problems of automating the configuration and management of the next generation of Grid
computing fabrics.
The project compared SmartFrog and
Local ConFiGuration system (LCFG) in terms of strengths and weaknesses, as well as investigating how these tools are utilized to solve problems.
SFJS
SFJS is a configuration language, runtime and component library developed by
Configured Things, a company co-founded by Patrick Goldsack, one of the SmartFrog project's lead authors. SFJS is a spiritual successor to SmartFrog, built on
Node.js
Node.js is an open-source server environment. Node.js is cross-platform and runs on Windows, Linux, Unix, and macOS. Node.js is a back-end JavaScript runtime environment. Node.js runs on the V8 JavaScript Engine and executes JavaScript code ou ...
.
See also
*
Comparison of open source configuration management software
*
LCFG
LCFG stands for "Local ConFiGuration system". Developed at the University of Edinburgh
The University of Edinburgh ( sco, University o Edinburgh, gd, Oilthigh Dhùn Èideann; abbreviated as ''Edin.'' in post-nominals) is a public research ...
- an established configuration framework for managing large numbers of systems
References
External links
Official Website* {{webarchive , url=https://web.archive.org/web/20190220050728/http://www.hpl.hp.com/research/smartfrog/releasedocs/index.html , date=February 20, 2019 , title=HP Labs SmartFrog project Website
Project pages on SourceForgeReferenced by a Google Usenix Paper.
Configuration management