On Sun, Mar 29, 2009 at 9:44 PM, Ted Gould <ted@...11...> wrote:
I think that makes sense. One thing that I think would be interesting for this project is to use the new GObject introspection libraries that are being developed.
One of the things that Mental and I had discussed, which I think might also be interesting. Is the idea of making an API like this and exporting it over DBus.
--Ted
I really like the idea of using DBus for the API. I've been looking into it and it seems like a really good solution. it might require work for the users of the API (having to develop an standalone application and make a DBus object) but it would be much simpler to develop and much more reasonable for a summer project. It also seems like a very good starting point. Even if it is relatively simple, it gets the functionality out there. I know of at least one application (the one I'm working on now) that could use it to allow Inkscape scripting in Scheme and Python (and more, soon.)
It is also my understanding that DBus can be connected to with python, so that gives us direct python control right there. Unless I am mistaken. That could make for very easy way to manipulate Inkscape. Write a Python script that connects to the bus, starts Inkscape if it is not already running (http://raphael.slinckx.net/blog/documents/dbus-tutorial), and calls methods in real time.
As far as GObjects go I have some experience building them, but my understanding of the introspection libraries is that they are relatively experimental, a word I don't like seeing in relation to tight coding deadlines. I also know that GObjects require a lot more code to set up and hence more time. That has to be weighed against the benefits of having GObjects versus C++ Objects.
I don't think I want to deal with introspection yet, but I could annotate it if I'm using GObjects, that would make it easier to add in that functionality later.
I would like to use DBus either way, though I might make that extended goal, just to be on the safe side.
What do you guys think? More long term expansion opportunities (GObject)? Or faster development time, and therefore a more fleshed out API and wider margins of error (C++ Objects)?
Any advice?