Ethos – Simplifying Plugins for GNOME Applications

Plenty of desktop applications have extension frameworks so that users may extend functionality for their own purposes. However, many seem to invent their own plug-in system or use a framework tied to the applications source code language. For example, there is pkg_resources for python and Mono.Addins for mono. Both are great tools when confined to their respective language. Where they do not fit well is in applications that want to simultaneously enable various language communities such as JavaScript, Python, Ruby, .NET, C, and Vala.

I really liked the plug-in system from gedit, but it is licensed under the GPL. It would also require a lot of changes to be re-usable outside of gedit. I should know, thats what I did in my syndication reader prototype, Marina. The framework is simplistic and has been incredibly successful at converting users into application extenders. If GNOME desktop applications can provide a single framework for extending applications, the barrier to entry becomes much lower for "repeat extenders". We instantly re-purpose those application scripters into new applications.

Therefore, I put together a library named ethos which contains a system similar to gedit's but under an LGPL-2.1 license. It also supports multiple plug-in languages including Python, JavaScript, Vala, and C. Mono support is partially there as well. I need to learn the ruby-gnome2 framework so I can add ruby support.

In addition, there is the ethos-ui library which provides a reusable Gtk widget for configuring plug-ins during runtime. The lovely screenshot above demonstrates this widget. In it, you will see plugins written in C, Python, JavaScript, and C# all living within a single process and virtual-machines co-operating in harmony.

git clone git://git.dronelabs.com/ethos

Comments (8)

  1. Marc wrote:

    And then a unique gnome-plugin-installer for all GNOME apps that takes care of installing updating all of them?

    That’d be awesome not only for users that become extenders but also for users that like to be users :)

    Wednesday, May 27, 2009 at 10:38 am #
  2. This looks really great! Thanks heaps

    Wednesday, May 27, 2009 at 11:57 am #
  3. jbo wrote:

    This really needs to get on p.g.o.

    Don’t understand why they reject you, it’s awesome.

    Wednesday, May 27, 2009 at 12:22 pm #
  4. chergert wrote:

    That’s the thing, I’m supposed to be on there. It’s just been a matter of maintenance to add me. And that was supposed to happen *a while* ago.

    Oh well, I’ll keep writing in the hopes that people find it anyway.

    Wednesday, May 27, 2009 at 5:32 pm #
  5. Open a ticket in the gnome rt queue and we’ll take a look at it.

    Thursday, May 28, 2009 at 1:02 am #
  6. Pierre D wrote:

    Do you know the Capuchin project ?
    http://capuchin.k-d-w.org/

    It looks asleep or dead, but it shares the same goals than Ethos.

    Friday, May 29, 2009 at 6:52 am #
  7. chergert wrote:

    Hi Pierre,

    It looks like it provides the part I haven’t written yet. Specifically, the downloading of plug-ins and installation.

    What it doesn’t seem to provide is the consistent plug-in API to link against.

    I’d love to look at it a bit deeper, but the links seem to be broken.

    Friday, May 29, 2009 at 7:17 am #
  8. gionni wrote:

    thanks to plan the ruby-gnome2 support

    Friday, May 29, 2009 at 1:59 pm #