Meiga: lightweight content sharing from the desktop

No, this time I’m not going to talk about the wonderful new Igalia office opening party, nor about the Igalia summit that we’re going to have this weekend in a hotel near Santiago de Compostela. This time I’m going to talk about a new free software project I’ve been working on to take advantage of the paid hackfest ours that our company provides us. Ladies and gentlemen, I’m proud to present the Meiga project to you.

As all of you already know, the current trend in the Internet is to publish contents in centralized servers to be shared to other people. Nevertheless, sometimes it’s handy for users to be able to serve their own contents directly from their desktops in a convenient way (instead of using a pendrive, for instance). Why bothering about publishing your contents if you can share them directly from your desktop to the LAN or even to the whole Internet?

To satisfy this need we’ve created Meiga, a tool that makes possible to share selected local directories via web. But that’s only the beginning. In fact, the ultimate goal of the project is to serve as a common publishing point for other desktop applications, such as the file manager, picture viewers or music players.

Meiga is lightweight, easy to use, network friendly and also application friendly. It’s written in a mix of Vala and pure C code, using existing Gnome technologies to perform its tasks: libsoup is used as a simpler alternative to fat web servers, libgupnp is in charge of doing port redirections if the network router supports UPnP, and DBUS exposes a public API to allow the GUI and third party applications to control what is served. Some advanced publishing features are already implemented, like the feed server that can render an RSS view of a given directory.

From the educational point of view, the source code of this project is a live example of Vala technology usage: pure Vala programming, different alternatives to interface Vala with pure C code (using Vapi files or running a child executable program) or the usage of a “programmable context” to handle sequentiation of asynchronous operations. An autotools based build system completes the set of interesting features. This system uses a Vapi file to pass configuration parameters from the config.h to the Vala program. Finally, some additional rule files allow the building of a Debian package, the last step to make the program available to final users in a convenient way.

Meiga is free software. It’s released under GPL 2.0 and can be downloaded just typing:

git clone http://git.igalia.com/meiga.git