Header Header

The Ibis Philosophy

The Ibis project aims to drastically simplify the programming and deployment process of high-performance distributed applications. The Ibis philosophy is that applications should be developed on a local workstation and simply be launched from there. This write-and-go philosophy requires minimalistic assumptions about the execution environment, and sends most of the environment's software (e.g., libraries) along with the application. The Ibis system is designed to run in a hostile environment that is dynamic, heterogeneous, and suffers from connectivity problems.

A Computing Jungle

The Image above depicts a worst-case scenario computing platform, consisting of grids, clouds, clusters, and other compute platforms, including specialized hardware such as GPU's. We name such a heterogeneous and hostile system a Jungle.

Subprojects of Ibis

ibis-project-overview

The Ibis project consists of a number of subprojects. All projects are Java, open source (BSD-like license), and downloadable from this website. The Ibis subproject can be used independently, or in combination with one or more other subprojects. Also, all Ibis software can be combined with existing software, including native code.

ProblemIbis Sub Project
I can't communicate through firewalls and NATs SmartSockets: Automatically solves connection problems in grids
I want to build a (desktop)grid quickly with as little effort as possible Zorilla: Peer-to-Peer middleware
I do not have any money for software All Ibis software is free
My RMI application is slow Ibis RMI: an efficient RMI re-implementation
Writing parallel (grid) applications is difficult Satin: transparent efficient fault-tolerant divide-and-conquer programming model
I want my MPI MPJ/Ibis: Java MPI Bindings, implemented completely in Java, so platform independent
My MPI/PVM Application is not fault-tolerant, portable, does not do streaming, is not multi threaded and not malleable The IPL offers a grid aware communication library / programming models suitable for writing grid applications and programming models
Globus 2, SSH, gLite, Globus 4, all these complicated middlewares are confusing me! Java Grid Application Toolkit: Simple Middleware independent APIs
Any Java models with collective communication? GMI: Group method invocation

Evolution of the Ibis subprojects

Below you can view the code swarm video of the ibis project. Basically the dots represent files. The dots get bigger the more commits there are against a file. Authors bounce around surrounded by the files they have edited. Author names and dots are colored based on which portions of the ibis project they refer to:

Ibis code_swarm from Nick Palmer on Vimeo. You can learn more about code_swarm and see the video from other projects here: http://vis.cs.ucdavis.edu/~ogawa/codeswarm/