Colony Framework

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

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.

Contents

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]

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]

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 hot-swapped. 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

Related Research Articles

<span class="mw-page-title-main">OSGi</span> Open standards organisation

OSGi is an open specification and open source project under the Eclipse Foundation.

<span class="mw-page-title-main">SOAP</span> Messaging protocol for web services

SOAP is a messaging protocol specification for exchanging structured information in the implementation of web services in computer networks. It uses XML Information Set for its message format, and relies on application layer protocols, most often Hypertext Transfer Protocol (HTTP), although some legacy systems communicate over Simple Mail Transfer Protocol (SMTP), for message negotiation and transmission.

A web container is the component of a web server that interacts with Jakarta Servlets. A web container is responsible for managing the lifecycle of servlets, mapping a URL to a particular servlet and ensuring that the URL requester has the correct access-rights. A web container handles requests to servlets, Jakarta Server Pages (JSP) files, and other types of files that include server-side code. The Web container creates servlet instances, loads and unloads servlets, creates and manages request and response objects, and performs other servlet-management tasks. A web container implements the web component contract of the Jakarta EE architecture. This architecture specifies a runtime environment for additional web components, including security, concurrency, lifecycle management, transaction, deployment, and other services.

<span class="mw-page-title-main">Eclipse (software)</span> Software development environment

Eclipse is an integrated development environment (IDE) used in computer programming. It contains a base workspace and an extensible plug-in system for customizing the environment. It is the second-most-popular IDE for Java development, and, until 2016, was the most popular. Eclipse is written mostly in Java and its primary use is for developing Java applications, but it may also be used to develop applications in other programming languages via plug-ins, including Ada, ABAP, C, C++, C#, Clojure, COBOL, D, Erlang, Fortran, Groovy, Haskell, JavaScript, Julia, Lasso, Lua, NATURAL, Perl, PHP, Prolog, Python, R, Ruby, Rust, Scala, and Scheme. It can also be used to develop documents with LaTeX and packages for the software Mathematica. Development environments include the Eclipse Java development tools (JDT) for Java and Scala, Eclipse CDT for C/C++, and Eclipse PDT for PHP, among others.

<span class="mw-page-title-main">Bonjour (software)</span> Computer networking technology

Bonjour is Apple's implementation of zero-configuration networking (zeroconf), a group of technologies that includes service discovery, address assignment, and hostname resolution. Bonjour locates devices such as printers, other computers, and the services that those devices offer on a local network using multicast Domain Name System (mDNS) service records.

Zero-configuration networking (zeroconf) is a set of technologies that automatically creates a usable computer network based on the Internet Protocol Suite (TCP/IP) when computers or network peripherals are interconnected. It does not require manual operator intervention or special configuration servers. Without zeroconf, a network administrator must set up network services, such as Dynamic Host Configuration Protocol (DHCP) and Domain Name System (DNS), or configure each computer's network settings manually.

<span class="mw-page-title-main">Avahi (software)</span> Zero-configuration networking (zeroconf) implementation

Avahi is a free zero-configuration networking (zeroconf) implementation, including a system for multicast DNS and DNS Service Discovery. It is licensed under the GNU Lesser General Public License (LGPL).

Extensibility is a software engineering and systems design principle that provides for future growth. Extensibility is a measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be through the addition of new functionality or through modification of existing functionality. The principle provides for enhancements without impairing existing system functions.

WebSphere Application Server (WAS) is a software product that performs the role of a web application server. More specifically, it is a software framework and middleware that hosts Java-based web applications. It is the flagship product within IBM's WebSphere software suite. It was initially created by Donald F. Ferguson, who later became CTO of Software for Dell. The first version was launched in 1998. This project was an offshoot from IBM HTTP Server team starting with the Domino Go web server.

The Java Class Loader, part of the Java Runtime Environment, dynamically loads Java classes into the Java Virtual Machine. Usually classes are only loaded on demand. The virtual machine will only load the class files required for executing the program. The Java run time system does not need to know about files and file systems as this is delegated to the class loader.

OpenSAF is an open-source service-orchestration system for automating computer application deployment, scaling, and management. OpenSAF is consistent with, and expands upon, Service Availability Forum (SAF) and SCOPE Alliance standards.

<span class="mw-page-title-main">Apache Felix</span> Open-source OSGi framework

Apache Felix is an open source implementation of the OSGi Core Release 6 framework specification. The initial codebase was donated from the Oscar project at ObjectWeb. The developers worked on Felix for a full year and have made various improvements while retaining the original footprint and performance. On June 21, 2007, the project graduated from incubation as a top level project and is considered the smallest size software at Apache Software Foundation.

<span class="mw-page-title-main">Merb</span>

Merb is a discontinued model–view–controller web framework in Ruby, notable as a precursor to Rails 3. It brought increased focus on speed and modularity to Rails 3. The name Merb is a contraction of "Mongrel" and "Erb".

<span class="mw-page-title-main">Managed Extensibility Framework</span> Component of .NET Framework 4.0 aiming to create lightweight, extensible applications

Managed Extensibility Framework (MEF) is a component of .NET Framework 4.0 aiming to create lightweight, extensible applications. It aims to allow .NET application developers to discover and use extensions with no configuration required. It also aims to let extension developers encapsulate code easily and avoid fragile hard dependencies. Furthermore, it aims to allow extensions to be reused across applications. MEF was introduced as a part of .NET 4.0 and Silverlight 4. It was later improved with the release of .NET 4.5 by adding support for generic types and the introduction of a convention-based extension model.

Virgo is an open source, OSGi-based, Java application server. Virgo supports the deployment of OSGi bundles and unmodified Java web applications as well as OSGi-influenced Shared Libraries WARs and Shared Services WARs.

The Application Interface Specification (AIS) is a collection of open specifications that define the application programming interfaces (APIs) for high-availability application computer software. It is developed and published by the Service Availability Forum and made freely available. Besides reducing the complexity of high-availability applications and shortening development time, the specifications intended to ease the portability of applications between different middleware implementations and to admit third party developers to a field that was highly proprietary in the past.

Pimcore is an open-source enterprise PHP software platform for product information management (PIM), master data management (MDM), customer data management (CDP), digital asset management (DAM), content management (CMS), and digital commerce.

iDempiere Community Powered Enterprise. Full Open Source Business Suite

iDempiere. Community Powered Enterprise, also known as OSGi + ADempiere, is an open source Enterprise Resource Planning (ERP) software that is fully navigable on PCs, tablets and smartphones, it also has customer relationship management (CRM) and supply chain management (SCM) functions. It is in contrast to proprietary or most other open source ERP solutions driven only by a community of supporters.

Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by a worldwide community of contributors, and the trademark is held by the Cloud Native Computing Foundation.

References

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