From: Jan Hudec <bulb@ucw.cz>
To: Pieter de Bie <pieter@frim.nl>
Cc: git@vger.kernel.org, "Shawn O. Pearce" <spearce@spearce.org>,
Jonas Fonseca <fonseca@diku.dk>,
Marco Costalba <mcostalba@gmail.com>,
David Aguilar <davvid@gmail.com>,
Abhijit Bhopatkar <bain@devslashzero.com>,
Henk <henk_westhuis@hotmail.com>, Frank Li <lznuaa@gmail.com>
Subject: Re: [RFC] Common library for Git GUIs
Date: Tue, 17 Feb 2009 22:21:45 +0100 [thread overview]
Message-ID: <20090217212145.GC2216@efreet.light.src> (raw)
In-Reply-To: <74161B7F-A178-49CB-990D-DF7299235C58@frim.nl>
On Tue, Feb 17, 2009 at 20:08:23 +0000, Pieter de Bie wrote:
> On Feb 16, 2009, at 9:24 PM, Jan Hudec wrote:
>> What it should use:
>> - It should probably be in C++ or C, with bindings for at least Perl,
>> Python, Ruby, C#(CLR) and Java. The bindings can be done either with
>> Swig, or using some base library that already has them.
> It should be either C++ or C. If you want git devvers to work on it too,
> you'll probably want to go with C.
I don't think the really core devs need to work on this -- their time is best
spent on the core. And many of the existing guis are in C++. For me, it
depends on the user portable runtime more than anything else.
>> - Bindings for languages. We can use Swig, but it has e.g. no support
>> for callbacks, so having portable runtime with already existing
>> bindings that support this would be an advantage.
> I'd say bindings are pretty easy to create yourself.
The advantage of swing is, that one definition with a few typedefs would
generate Python, Perl, Ruby, CLR, Java and a few more bindings. GObject would
need more language-specific work, but would nicely solve integration into the
garbage collector. You know, I want to save as much work as possible.
>> Portable runtime options:
>> So what do you people think would be best? I see several options:
>> - QtCore
>> - Glib
>> - STL + Boost
> None of these, if you want any GUI's to use it. Noone is going to
> create a Gtk / Cocoa / Windows app that depends on Qt. Nobody wants
> to use Boost in any situation and Glib, while being smaller than the
> rest, is also difficult as it isn't shipped with many OS's, for example
> OS X.
I fully agree that nobody will want to depend on Qt -- QtCore is now
a separate library, but the sources are not shipped separately AFAIK, so it'd
be a pain. I would not think the case is as strong against boost and glib,
though. People would either be getting binaries, in which case we can just
bundle whatever dependency along, or building it and than one extra source
tree (that can also be bundled for convenience) is not so much pain.
>> - POSIX + Msys on Windows
> I think lightweight is the way to go. If you go for C++, you can also use
> the STL.
STL does not have any support for threads, event loop nor signals. Though
thinking about it, we may not actually need them.
- we only need threads if our event loop can't be integrated into gui's one
and the gui can start our in thread itself -- it's not too much code.
- we only need file descriptors in the event loop and it needs to be
integratable into the gui's one anyway.
- simple callback is quite likely good enough for us -- the gui will need
multiple callbacks, but it will need to connect in it's own signal system
anyway.
So the shell invocation remains and that's little enough we can cut&paste
that from glib.
> But, isn't this time spent better on getting libgit2 off the ground?
No, because what I have in mind is orthogonal to libgit2. libgit2 is supposed
to be generic API for git, while I am proposing a specifically gui-oriented
interface, which should implement all logic of a gui except opening dialogs
and the widgets themselves, allowing the guis built on top of it to be
totally dumb. Actually part of my idea is to create something, that can be
later ported to libgit2 and immediately benefit many git interfaces.
--
Jan 'Bulb' Hudec <bulb@ucw.cz>
next prev parent reply other threads:[~2009-02-17 21:23 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-16 21:24 [RFC] Common library for Git GUIs Jan Hudec
[not found] ` <e5bfff550902162337m43156398kb06320796838c953@mail.gmail.com>
2009-02-17 7:40 ` Fwd: " Marco Costalba
2009-02-17 19:28 ` Jan Hudec
2009-02-18 8:04 ` Marco Costalba
2009-02-19 7:30 ` David Aguilar
2009-02-17 12:55 ` Guilhem Bonnefille
2009-02-17 20:39 ` Jan Hudec
2009-02-17 20:08 ` Pieter de Bie
2009-02-17 21:21 ` Jan Hudec [this message]
2009-02-17 23:45 ` Johannes Schindelin
2009-02-18 5:52 ` Jan Hudec
2009-02-18 1:38 ` Frank Li
2009-02-18 5:57 ` Jan Hudec
2009-02-18 6:02 ` Abhijit Bhopatkar
2009-02-18 5:56 ` Abhijit Bhopatkar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090217212145.GC2216@efreet.light.src \
--to=bulb@ucw.cz \
--cc=bain@devslashzero.com \
--cc=davvid@gmail.com \
--cc=fonseca@diku.dk \
--cc=git@vger.kernel.org \
--cc=henk_westhuis@hotmail.com \
--cc=lznuaa@gmail.com \
--cc=mcostalba@gmail.com \
--cc=pieter@frim.nl \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).