Colony Framework

Colony Framework
Colony Framework
Colony Logo.png
Developer João Magalhães, Colony Developers and Hive Solutions
Stable release 1.0.0 (May 2011)
Major implementations Python, JavaScript, Ruby
Influenced by OSGi, Managed Extensibility Framework
OS Cross-platform
License GPLv3
Website getcolony.com

The Colony Framework is an open source plugin framework specification.[1] Implementations of the specification offer a runtime component model, that allows for plugins to be installed, started, stopped, updated and uninstalled without requiring the application container to be stopped. The specification relies heavily on the Inversion of control principle, in order to make it easier for application components to discover and interact with each other.

Colony aims to eliminate the complexity typically associated with the creation of modular applications, through a simplified unified model for component development. Practical applications can range from modular enterprise software to application mashing.[2]

Contents

Motivation

Colony gathers inspiration from other modularity solutions such as OSGi for the Java programming language and Managed Extensibility Framework (MEF) for the .NET Framework.

Colony aims to be a platform and language independent specification, and serve a wide range of use cases.[3] This includes use cases typically associated with OSGi, such as modularized application with a narrow core and large extensibility possibilities. This also includes use cases to which MEF caters, such as adding modularity to an existing application, without the developer having to create its own plugin infrastructure from scratch.

The need for reducing the number of configuration steps for assembling a computing grid, as well as supporting adding nodes and distributing computation to them as quickly as possible, also drives the Colony Distributed initiative.

Key concepts

The Colony conceptual model builds on top of 6 key concepts.[1]

  • Plugin Manager: core facility that manages the plugin lifecycle and dependency injection.
  • Plugin: an isolated piece of code and associated resources that makes sense by itself or when working together with other plugins.
  • Capability: defines what a plugin is able to do, so that it can be matched with other plugins that desire its abilities.
  • Dependency: defines that a plugin requires another plugin to function and is worthless without it.
  • Event: a message that can be broadcasted by a plugin and listened by whichever plugin wants to receive it.
  • Bundle: a set of related plugins, intended to operate together.

The plugin lifecycle includes loading and unloading its resources, injecting it into others as a capability or dependency, as well as having capabilities and/or dependencies injected into it.[4]

Distribution

The framework proposes the concept of Viral Distribution where computation can be transparently distributed to any number of nodes, by having each node run a Colony instance. The concept takes advantage of the modularity approach, by using the plugin as the unit to be transferred between nodes. The concept also requires the availability of tools for rapid discovery of new nodes (e.g. using Zeroconf techniques such as Bonjour through Colony Bonjour Plugin).

Viral distribution, as per the Colony interpretation, would mean that a configured Colony instance could make its computing power available to a Colony managed computing grid, by announcing its specifications, after which it would receive work units in the form of plugins, i.e., mobile code for execution on the instance.

To set up a new Colony instance, and enabling viral distribution support, would require an operating system, basic Colony dependencies (e.g. a virtual machine for the Colony implementation language of choice) and the framework manager itself (e.g. using the installer).[5] Adding the basic bundles required for accessing and downloading from a remote plugin repository to the instance would complete the bootstrap. The node would then announce its availability to the Distribution Server Plugin, and could begin receiving and processing work.

Notable Components

Colony framework includes a set of application components for various functions, from domain-specific sub-frameworks to providers for common protocols and services.

Notable components include a complete web application framework, based on the MVC architecture pattern, similar to Ruby on Rails and Django. The web stack is supported by a modular HTTP server implementation developed from the ground up under the Colony design philosophy. In practice this implies that even core HTTP server components, such as filesystem access and socket interfaces, are provided as modules and can be hotswapped. The web MVC plugin also uses the modular ORM entity manager plugin. For managing distribution, the distribution manager component acts as a hub for the various distribution plugins that implement's Colony's viral distribution concept.

Among other available components are a build automation component (functionally comparable to Maven); an extensible revision control facade with extensions available for Subversion, Bazaar and Mercurial; a self-contained Wiki application, leveraging the Revision control plugins. For integration with other technologies, Colony provides servers and clients for common protocols such as SMTP, BitTorrent, DNS, IRC, POP, Telnet, XMPP, LDAP as well as support for Bonjour (Apple Inc.'s implementation of Zeroconf). Some niche components are also included, such as clients for the Twitter API and Apple Push Notification Service.

Status

As of 2011, Colony is considered to be in alpha although production deployments exist.[6]

See also

References

  1. ^ a b Colony Specification - Guide on the Colony specification
  2. ^ What can I build with Colony? - Guide with applications that could benefit from the technology
  3. ^ Why Colony? - Guide motivating the need for the framework
  4. ^ Plugin lifecycle - Section of the specification describing the plugin lifecycle
  5. ^ How to Establish your Colony in 3 Easy Steps - Guide describing the setup of the technology
  6. ^ Official website - Reference to the current status of Colony as early alpha as of 2011

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Colony (disambiguation) — Contents 1 Society 1.1 Animals, insects, micro organisms, plants 2 Places …   Wikipedia

  • Colony Collapse Disorder — (or CCD) is a phenomenon in which worker bees from a beehive or Western honey bee colony abruptly disappear. While such disappearances have occurred throughout the history of apiculture, the term Colony Collapse Disorder was first applied to a… …   Wikipedia

  • Colony collapse disorder — Honey bees entering a beehive Colony collapse disorder (CCD) is a phenomenon in which worker bees from a beehive or European honey bee colony abruptly disappear. While such disappearances have occurred throughout the history of apiculture, the… …   Wikipedia

  • Colony of Tasmania — This article is about the former British Colony known as Tasmania that existed from 1856 until 1901. For other uses of the name Tasmania , see Tasmania (disambiguation). Colony of Tasmania British colony …   Wikipedia

  • Ant colony optimization algorithms — Ant behavior was the inspiration for the metaheuristic optimization technique. In computer science and operations research, the ant colony optimization algorithm (ACO) is a probabilistic technique for solving computational problems which can be… …   Wikipedia

  • UNITED STATES OF AMERICA — UNITED STATES OF AMERICA, country in N. America. This article is arranged according to the following outline: introduction Colonial Era, 1654–1776 Early National Period, 1776–1820 German Jewish Period, 1820–1880 East European Jewish Period,… …   Encyclopedia of Judaism

  • education — /ej oo kay sheuhn/, n. 1. the act or process of imparting or acquiring general knowledge, developing the powers of reasoning and judgment, and generally of preparing oneself or others intellectually for mature life. 2. the act or process of… …   Universalium

  • United Kingdom — a kingdom in NW Europe, consisting of Great Britain and Northern Ireland: formerly comprising Great Britain and Ireland 1801 1922. 58,610,182; 94,242 sq. mi. (244,100 sq. km). Cap.: London. Abbr.: U.K. Official name, United Kingdom of Great… …   Universalium

  • Australia — /aw strayl yeuh/, n. 1. a continent SE of Asia, between the Indian and the Pacific oceans. 18,438,824; 2,948,366 sq. mi. (7,636,270 sq. km). 2. Commonwealth of, a member of the Commonwealth of Nations, consisting of the federated states and… …   Universalium

  • United States — a republic in the N Western Hemisphere comprising 48 conterminous states, the District of Columbia, and Alaska in North America, and Hawaii in the N Pacific. 267,954,767; conterminous United States, 3,022,387 sq. mi. (7,827,982 sq. km); with… …   Universalium

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”