Re: [RFC] Common library for Git GUIs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

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 think Java or CLR, while more portable, would not be appropriate because there is no standard way to combine them with other languages like Perl,
  Python and Ruby and those languages are still superior for the UI
programming itself. I somewhat prefer C++, because polymorphism and some
  template tools would be useful here, but I am open to arguments.

I think JGit is pretty far along for someone who wants to create a Java
GUI.
- 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.

Portable runtime options:

So what do you people think would be best? I see several options:

- QtCore

Qt seems to be the most popular library among Git GUI writers and since version 4.5 will be LGPL, so it will be allowed to link with anything. It is also probably the most portable one. On the downside, it's rather large and it's language bindings are a bit worse (the garbage collector
  integration was a bit bad last time I looked).

- Glib

This is C based, so the core could be in plain C. It is also quite modular
  and has very good support for bindings to various languages. On the
downside it's a bit less portable and less used among the existing guis. C would mean more work, but we could probably save some of it by using
  gob2 (g object builder)

- STL + Boost

I don't have experience with it, though I read some of the documentation. It should be sensibly portable. I know it has python bindings, the rest
  would probably have to be dealt with using swig.

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.

- POSIX + Msys on Windows

I guess it would technically be usable, but I think it would be rather lot
  of additional work. It would probably be quite lightweight, though.

I think lightweight is the way to go. If you go for C++, you can also use
the STL.

But, isn't this time spent better on getting libgit2 off the ground?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux