What is Meerkat?

Massively

Parallel

Distributed

Computing

Simple parallel, distributed computing that really computes.

The internet has revolutionized information transfer. Isn't it time that it revolutionizes computing? That's what meerkat does. It allows execution of a single program over a network or over all the processors in a machine. It will run on almost anything, desktop and laptop computers, handheld devices, etc. It will allow an unimaginable connectivity among seemingly disparate computing devices. Not only will meerkat do all that but it will let you do it in a programming language you're comfortable with.

Meerkat will allow a new age of connectivity. It is a perfect platform for Software-as-a-Service, leveraging the power of both the server and the client.

We like to share.

Meerkat is designed to work on clusters of computers as transparently as if it was running on a single machine. So far, meerkat has only been tested with small clusters of about 2 or 3 computers. But if anyone wants to test it out on more, they're perfectly welcome. As development continues, we'll be able to use meerkat to easily program and manage huge computer clusters without explicitly programming for it. Meerkat will allow hosted programs to be run over the internet.

Time is money.

So we make the most of it. With very little programmer instruction, meerkat can parallelize a loop or another control construct. Meerkat has the standard map(), reduce(), etc. suite of functions but it will also be able to automatically parallelize simple code constructs that occur in everyday situations. In the future, meerkat will support functional languages, which lend themselves naturally to parallel computing. This functional language support won't be a second class citizen. Owing to the dynamic nature of meerkat's object and type system, it and the imperative language support will integrate seamlessly.

No hassle distributed computing.

Common distributed computing frameworks, like OpenMP and PVM, require a lot of initial setup. You might have to set up an ssh network. Or maybe it needs an nfs filesystem. This naturally deters people from utilising them to their full extent. Meerkat, on the other hand, requires no setup. You just need to install and start meerkat on all networked compujters. If you start your program on one of them, meerkat will figure out exactly where all the pieces of your program belong.

And don't worry if one of those servers go offline. Meerkat automatically mirrors data so that if one or two servers crash, your program is safe. It's like it never really happened. All your server maxed out? No problem. Just start the meerkat daemon on another computer on the same network. Voila! Meerkat's clustering facilities adapt just as easily as all of meerkat's other components.

Meerkat is language-independent.

Although right now, meerkat only supports a simple proprietary language, there is no barrier except lack of time that prevents anyone from implementing any other language. In fact, we expect that sooner or later most languages will be implemented on top of the meerkat framework, thus allowing programmers to reap the benefits of using a parallel distributed programming environment whilst programming in their favorite language.

Meerkat can run both dynamically and statically typed programs. While meerkat offers full-fledged support for dynamic programs, programs that don't want to use these features run as fast as ever. Meerkat features a just-in-time compiler that can translate static programs into optimized machine code. Dynamic programs can be run on meerkat's virtual machine or compiled into machine code by the jit for commonly occuring situations.

Meerkat wants you! Meerkat is looking for developers and other contributors who are interested in its goals. Please contact iammisc@gmail.com or visit the wiki.

So what does Meerkat do?

Many of these goals still need to be met. We are looking for people to help. Contact iammisc@gmail.com.