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.
For latest news, have a look at the Meiga blog.
Meiga is free software (C) 2009 Igalia, S.L.. It's released under GPL 2.0.
git clone
https://github.com/eocanha/meiga.git
Add these lines to/etc/apt/sources.list
(use the name of your distribution instead of jaunty):deb http://ppa.launchpad.net/eocanha/meiga/ubuntu jaunty main deb-src http://ppa.launchpad.net/eocanha/meiga/ubuntu jaunty mainAdd the PPA public key:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3E7FCD1EUpdate the package list and install:sudo apt-get update sudo apt-get install meiga
WARNING: Hardy and Intrepid versions are unsupported. Please visit the packages from previous versions section to find versions suitable for those distributions.
Have you compiled Meiga for other distributions? Let me know and I'll add a link to your package here. I'm also open to include upstream support for other distributions.
The new features in the latest version () are:
Some information about the project goals, history and code structure can be found in the slides prepared for the Gran Canaria Desktop Summit 2009 (Thu Jul 9 2009).
Q: I'm having connection problems. People can't access my shared content from the Internet
A: There is a set of connection tests that you can perform if you're a power user in order to diagnose the connection problems
Q: Why don't simply use Samba or NFS for file sharing?
A: Of course, Meiga goal is not to replace Samba. Samba is a mature file sharing technology for Local Area Networks, but it’s a little bit unconvenient for sharing files to the internet.
You've probably experienced problems with Samba more than one time, specially that time when you want to share some pictures to a friend with a laptop in the same room as you. Wouldn’t be convenient just to have a small web server and tell him/her “hey, just go to http://192.168.1.1:8001/pictures“? That’s what Meiga does (by the moment).
In addition, you can do the same but sharing to the Internet if you have an UPnP capable router. You don’t need to bother about port redirections, configurations or computer not finding themselves in the network. Just share, copy the address (with the copy icon) and paste it on a chat or IM.
Q: Why create Meiga if gnome-user-share already exists?
A: Because it depends on Apache and I've thought that a lighter approach, such as libsoup, would be better for an occasional sharing need.
Q: Why create Meiga if KDE Personal File share (KPF) already exists?
A: Because it's a Kicker applet, not a standalone program, so it depends on Kicker. I tought that having an equivalent using Gnome technologies and able to be used on any desktop environment would be handy for Gnome users
Q: Are there other alternatives to serve web contents from Gnome?
A: Yes. For more powerful and server-centric content serving, maybe you would like to know about Midgard, and Open Source Content Management Framework that has integration with GObject, DBUS and other languages such as PHP or Objective C.
Q: How can I access to the RSS view of a directory?
A: Just prepend "/rss" to the share URL created for that directory. For example, the RSS view for "http://192.168.1.1:8001/pictures" would be "http://192.168.1.1:8001/rss/pictures".
Q: There are many things in the code that could be enhanced
A: Meiga is work in progress. There are a lot of enhancements
to do, from the autotools scripts to the Debian package, I agree.
I prefered to apply a "release early, release often" approach for this
project, so I did the autotools and packaging stuff in a rush because
I think it's better for final users to have Meiga packaged than having
it only as a .tar.gz
, though.
The main author of the program is Enrique Ocaña González (eocanha at igalia dot com). You can get in touch with him by email.