Colony Framework
Encyclopedia
The Colony Framework is an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 plugin framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...

 specification. 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
Inversion of Control
In software engineering, Inversion of Control is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming....

 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.

Motivation

Colony gathers inspiration from other modularity solutions such as OSGi
OSGi
The Open Services Gateway initiative framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments...

 for the Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 programming language and Managed Extensibility Framework (MEF)
Managed Extensibility Framework
Managed Extensibility Framework is a component of .NET Framework 4.0 for creating lightweight, extensible applications. It allows application developers to discover and use extensions with no configuration required. It also lets extension developers easily encapsulate code and avoid fragile hard...

 for the .NET Framework
.NET Framework
The .NET Framework is a software framework that runs primarily on Microsoft Windows. It includes a large library and supports several programming languages which allows language interoperability...

.

Colony aims to be a platform and language independent specification, and serve a wide range of use cases. This includes use cases typically associated with OSGi
OSGi
The Open Services Gateway initiative framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments...

, such as modularized application with a narrow core and large extensibility possibilities. This also includes use cases to which MEF
Managed Extensibility Framework
Managed Extensibility Framework is a component of .NET Framework 4.0 for creating lightweight, extensible applications. It allows application developers to discover and use extensions with no configuration required. It also lets extension developers easily encapsulate code and avoid fragile hard...

 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.
  • Plugin Manager: core facility that manages the plugin lifecycle and dependency injection
    Dependency injection
    Dependency injection is a design pattern in object-oriented computer programming whose purpose is to improve testability of, and simplify deployment of components in very large software systems....

    .
  • 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.

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
Zeroconf
Zero configuration networking , is a set of techniques that automatically creates a usable Internet Protocol network without manual operator intervention or special configuration servers....

 techniques such as Bonjour
Bonjour (software)
In computing, Bonjour is Apple Inc.'s trade name for its implementation of Zeroconf, a group of technologies that includes service discovery, address assignment, and name resolution...

 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
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer 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). 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
Web application framework
A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...

, based on the MVC
MVC
MVC may refer to:* Maha Vir Chakra, a military decoration in India* Marvel vs. Capcom, a video game series* Marvel vs. Capcom: Clash of Super Heroes* Monroe County Airport's IATA airport code...

 architecture pattern, similar to Ruby on Rails
Ruby on Rails
Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language.-History:...

 and Django
Django
-Music:* Django Bates , British musician and composer* Django Haskins, American singer, songwriter, and guitarist* King Django, American Reggae artist* Django Reinhardt , Belgian Romani jazz guitarist...

.
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
File system
A file system is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device which contain it. A file system organizes data in an efficient manner and is tuned to the...

 access and socket
Internet socket
In computer networking, an Internet socket or network socket is an endpoint of a bidirectional inter-process communication flow across an Internet Protocol-based computer network, such as the Internet....

 interfaces, are provided as modules and can be hotswapped
Hot swapping
Hot swapping and hot plugging are terms used to describe the functions of replacing computer system components without shutting down the system...

.
The web MVC plugin also uses the modular ORM
Object-relational mapping
Object-relational mapping in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language...

 entity manager plugin.
For managing distribution
Distributed computing
Distributed computing is a field of computer science that studies distributed systems. A distributed system consists of multiple autonomous computers that communicate through a computer network. The computers interact with each other in order to achieve a common goal...

, 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
Build Automation
Build automation is the act of scripting or automating a wide variety of tasks that software developers do in their day-to-day activities including things like:* compiling computer source code into binary code* packaging binary code* running tests...

 component (functionally comparable to Maven
Apache Maven
Maven is a build automation and software comprehension tool. While primarily used for Java programming, it can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. Maven serves a similar purpose to the Apache Ant tool, but it is based on different concepts and...

); an extensible revision control facade with extensions available for Subversion, Bazaar and Mercurial
Mercurial
Mercurial is a cross-platform, distributed revision control tool for software developers. It is mainly implemented using the Python programming language, but includes a binary diff implementation written in C. It is supported on Windows and Unix-like systems, such as FreeBSD, Mac OS X and Linux...

; a self-contained Wiki
Wiki
A wiki is a website that allows the creation and editing of any number of interlinked web pages via a web browser using a simplified markup language or a WYSIWYG text editor. Wikis are typically powered by wiki software and are often used collaboratively by multiple users. Examples include...

 application, leveraging the Revision control
Revision control
Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...

 plugins. For integration with other technologies, Colony provides servers and clients for common protocols such as SMTP, BitTorrent, DNS
Domain name system
The Domain Name System is a hierarchical distributed naming system for computers, services, or any resource connected to the Internet or a private network. It associates various information with domain names assigned to each of the participating entities...

, IRC
Internet Relay Chat
Internet Relay Chat is a protocol for real-time Internet text messaging or synchronous conferencing. It is mainly designed for group communication in discussion forums, called channels, but also allows one-to-one communication via private message as well as chat and data transfer, including file...

, POP
Post Office Protocol
In computing, the Post Office Protocol is an application-layer Internet standard protocol used by local e-mail clients to retrieve e-mail from a remote server over a TCP/IP connection. POP and IMAP are the two most prevalent Internet standard protocols for e-mail retrieval. Virtually all modern...

, Telnet
TELNET
Telnet is a network protocol used on the Internet or local area networks to provide a bidirectional interactive text-oriented communications facility using a virtual terminal connection...

, XMPP
Extensible Messaging and Presence Protocol
Extensible Messaging and Presence Protocol is an open-standard communications protocol for message-oriented middleware based on XML . The protocol was originally named Jabber, and was developed by the Jabber open-source community in 1999 for near-real-time, extensible instant messaging , presence...

, LDAP as well as support for Bonjour
Bonjour (software)
In computing, Bonjour is Apple Inc.'s trade name for its implementation of Zeroconf, a group of technologies that includes service discovery, address assignment, and name resolution...

 (Apple Inc.'s implementation of Zeroconf
Zeroconf
Zero configuration networking , is a set of techniques that automatically creates a usable Internet Protocol network without manual operator intervention or special configuration servers....

).
Some niche components are also included, such as clients for the Twitter
Twitter
Twitter is an online social networking and microblogging service that enables its users to send and read text-based posts of up to 140 characters, informally known as "tweets".Twitter was created in March 2006 by Jack Dorsey and launched that July...

 API and Apple Push Notification Service
Apple Push Notification Service
The Apple Push Notification Service is a service created by Apple Inc. that was launched together with iOS 3.0 on June 17, 2009. It uses push technology through a constantly-open IP connection to forward notifications from the servers of third party applications to the Apple devices; such...

.

Status

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

See also

  • Plug-in
  • Modular programming
    Modular programming
    Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...

  • Component-based software engineering
    Component-based software engineering
    Component-based software engineering is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system...

  • OSGi
    OSGi
    The Open Services Gateway initiative framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments...

  • Managed Extensibility Framework
    Managed Extensibility Framework
    Managed Extensibility Framework is a component of .NET Framework 4.0 for creating lightweight, extensible applications. It allows application developers to discover and use extensions with no configuration required. It also lets extension developers easily encapsulate code and avoid fragile hard...

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK