git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: "Duy Nguyen" <pclouds@gmail.com>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
	"Greg Troxel" <gdt@ir.bbn.com>,
	"Junio C Hamano" <gitster@pobox.com>,
	"Git Mailing List" <git@vger.kernel.org>,
	"Jonathan Nieder" <jrnieder@gmail.com>,
	"Thomas Rast" <trast@inf.ethz.ch>,
	"René Scharfe" <rene.scharfe@lsrfire.ath.cx>,
	"Michael Haggerty" <mhagger@alum.mit.edu>,
	"Matthieu Moy" <Matthieu.Moy@grenoble-inp.fr>,
	"Ramsay Jones" <ramsay@ramsay1.demon.co.uk>,
	"Erik Faye-Lund" <kusmabite@gmail.com>,
	"Johannes Sixt" <j6t@kdbg.org>
Subject: Re: [Administrivia] On ruby and contrib/
Date: Sat, 8 Jun 2013 22:23:51 -0400	[thread overview]
Message-ID: <20130609022351.GA30393@sigill.intra.peff.net> (raw)
In-Reply-To: <CAMP44s21hyKLw0=hwOzuNzSuQx4qeca2VLnz9Reh5rD7j4oSrw@mail.gmail.com>

On Sat, Jun 08, 2013 at 08:17:08PM -0500, Felipe Contreras wrote:

> > No, I didn't say that at all.
> 
> Then you truly think libgit2 will ever reach the point where it can
> replace libgit.a?

I don't know. It may. Or something like it may. It is certainly not
ready to do so yet, but perhaps one day it will be.

> It won't.

Oh, I see, you were not actually interested in my answer and were just
being rhetorical.

> But decreeing that both projects should remain isolated, and
> that libgit.a should never be a library, you are effectively
> condemning the effort to fail, knowingly or not.

Huh? When did I decree anything? You asked Duy what kinds of problems
you would run into with running multiple git commands in the same
process space. I answered with concrete examples, and gave my opinions
on what the path of least work would be to reach a re-entrant library.
You don't have to agree (didn't I even say "you don't have to listen to
me" in the last email?).

> How many years has libgit2 been brewing? Do you think it's closer for
> merging so it can be used by Git's core? No, it doesn't, and it will
> not in the future, because it was never meant for that.

There has been about 2 years of active development, and there's been
quite a lot of improvement in that time. Closer than what? Than it was 2
years ago? Yes, I think it is. But it still has a ways to go.

I do not think there will be a flag day where we throw away git.git's
code and start using libgit2. But we could slowly start replacing
underlying bits with libgit2 bits, if that implementation proves to be
robust and clean enough to do so.

> > But hey, you don't need to listen to me. If you think it would be easier
> > to make the git.git code into a library, go ahead and work on it. But I
> > think you will find that there are a large number of hard-to-find bugs
> > caused by implicit assumptions about global state, how file descriptors
> > are used, and so forth.
> 
> That's impossible. Specially since moving irrelevant code out of
> libgit.a is not permitted.

I'm not even sure what your second sentence means.

But it seems to me that the first step would be cleaning up the internal
code so that it is more friendly to library callers (both in interface
and in being re-entrant), with those first sets of callers being the
existing code in git.git. Such cleanups would be a good thing for the
modularity of the code, even without an intended library step.

And then you can start to pull out individual interfaces that are known
to be safe for library use, and think about making a coherent library
out of them.

And please don't tell me about "not permitted". You are free to fork and
work on this. But do not expect people who have already said "that does
not seem like a fruitful path to me" to jump into it with you. If you
think it is worth doing and that you can come up with initial results to
convince others, go for it.

> >> There's a reason why the Git project doesn't use libgit2, and for the
> >> same reason the official Ruby scripts should not use it.
> >
> > What reason is that?
> 
> You tell me. Why isn't Git using libgit2?

Wait, you indicated you had such a reason in mind, but now you won't
tell me? Is it a secret?

> > I think it is a matter of critical mass. If you were to start linking
> > against libgit.a and 90% of it worked, you might have a reason to fix
> > the other 10%. But I suspect it is more the other way around.
> 
> It doesn't matter if it's 90% or 10%, it's the only thing we have.
> 
> Unless you are in favor of including libgit2 and start using it for
> Git's core *right now*, the only way forward is to improve libgit.a.

That seems like a false choice to me. You obviously feel that libgit2 is
some kind of dead end. I don't agree. Whatever.

I have very little interest in discussing this further with you, as it
is not leading in a productive direction. In my opinion, the productive
things to do would be one (or both) of:

  1. Work on libgit2.

  2. Clean up non-reentrant bits of git.git, hopefully making the code
     more readable and more modular (and taking care not to make it
     worse in other ways, like maintainability or performance).

-Peff

  reply	other threads:[~2013-06-09  2:24 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-04 23:45 What's cooking in git.git (Jun 2013, #02; Tue, 4) Junio C Hamano
2013-06-05  0:04 ` [Administrivia] On ruby and contrib/ Junio C Hamano
2013-06-05  3:02   ` David Lang
2013-06-05 14:30     ` Felipe Contreras
2013-06-05  4:13   ` Michael Haggerty
2013-06-05 17:41     ` Junio C Hamano
2013-06-06 12:52     ` Matthieu Moy
2013-06-07 16:11       ` Junio C Hamano
2013-06-06 19:48     ` Thomas Ferris Nicolaisen
2013-06-05 14:45   ` Felipe Contreras
2013-06-06  7:26     ` demerphq
2013-06-06  7:46       ` Felipe Contreras
2013-06-06 12:24         ` Barry Fishman
2013-06-06 13:01           ` Felipe Contreras
2013-06-06 13:46             ` Barry Fishman
2013-06-06 14:09               ` Felipe Contreras
2013-06-06 14:41                 ` Barry Fishman
2013-06-06 15:04                   ` Felipe Contreras
2013-06-06 20:41         ` Charles McGarvey
2013-06-06 14:54   ` Greg Troxel
2013-06-06 15:17     ` Felipe Contreras
2013-06-06 16:09       ` David Lang
2013-06-06 18:16         ` Felipe Contreras
2013-06-06 20:29         ` Ramkumar Ramachandra
2013-06-06 20:19           ` David Lang
2013-06-07 14:24             ` Ramkumar Ramachandra
2013-06-07 15:20               ` Junio C Hamano
2013-06-07 15:28                 ` Ramkumar Ramachandra
2013-06-07 19:04                 ` Felipe Contreras
2013-06-07 19:27                   ` Ramkumar Ramachandra
2013-06-07 19:38                     ` Ramkumar Ramachandra
2013-06-09  2:57                     ` Johannes Schindelin
2013-06-09  9:16                       ` Ramkumar Ramachandra
2013-06-09 23:29                         ` Junio C Hamano
2013-06-10  4:56                           ` Felipe Contreras
2013-06-07 19:55                   ` Junio C Hamano
2013-06-07 20:24                     ` Felipe Contreras
2013-06-08  2:23                       ` Duy Nguyen
2013-06-08 10:08                         ` Felipe Contreras
2013-06-08 11:20                           ` Duy Nguyen
2013-06-08 12:06                             ` Felipe Contreras
2013-06-07 19:21             ` Felipe Contreras
2013-06-06 17:16       ` Greg Troxel
2013-06-06 18:24         ` Felipe Contreras
2013-06-06 21:05         ` Ramkumar Ramachandra
2013-06-06 21:31           ` Dependencies and packaging (Re: [Administrivia] On ruby and contrib/) Jonathan Nieder
2013-06-07 19:29             ` Felipe Contreras
2013-06-06 16:22     ` [Administrivia] On ruby and contrib/ Johannes Schindelin
2013-06-06 20:40       ` Ramkumar Ramachandra
2013-06-07  3:25         ` Johannes Schindelin
2013-06-07 15:20           ` Ramkumar Ramachandra
2013-06-07 17:57             ` Matthieu Moy
2013-06-07 18:14               ` Ramkumar Ramachandra
2013-06-07 18:24               ` Ramkumar Ramachandra
2013-06-07 18:32                 ` Matthieu Moy
2013-06-07 18:48                   ` Ramkumar Ramachandra
2013-06-07 19:00                     ` Matthieu Moy
2013-06-07 19:10                       ` Felipe Contreras
2013-06-07 18:33                 ` Jonathan Nieder
2013-06-07 18:45                   ` Matthew Ruffalo
2013-06-07 18:28               ` Junio C Hamano
2013-06-07 19:14           ` Felipe Contreras
2013-06-07 19:41             ` Ramkumar Ramachandra
2013-06-09  2:59               ` Johannes Schindelin
2013-06-08  2:17       ` Duy Nguyen
2013-06-08 10:02         ` Felipe Contreras
2013-06-08 11:28           ` Duy Nguyen
2013-06-08 11:56             ` Felipe Contreras
2013-06-08 12:07               ` Duy Nguyen
2013-06-08 13:20                 ` Felipe Contreras
2013-06-08 17:15                   ` Jeff King
2013-06-08 17:40                     ` Felipe Contreras
2013-06-09  0:10                       ` Jeff King
2013-06-09  1:17                         ` Felipe Contreras
2013-06-09  2:23                           ` Jeff King [this message]
2013-06-09  2:41                             ` Felipe Contreras
2013-06-09  3:07         ` Johannes Schindelin
2013-06-05  6:59 ` What's cooking in git.git (Jun 2013, #02; Tue, 4) Johannes Sixt
2013-06-05  7:12   ` Jeff King
2013-06-06  6:34     ` [PATCH] t0005: skip signal death exit code test on Windows Johannes Sixt
2013-06-06  6:37       ` Jeff King
2013-06-06  6:41         ` Felipe Contreras
2013-06-06  6:44           ` Jeff King
2013-06-06  6:48             ` Felipe Contreras
2013-06-06 17:21             ` Junio C Hamano
2013-06-06 17:40               ` Jeff King
2013-06-07  6:22                 ` Johannes Sixt
2013-06-07 10:12                 ` Erik Faye-Lund
2013-06-07 10:24                   ` Johannes Sixt
2013-06-07 12:00                     ` Erik Faye-Lund
2013-06-07 12:19                       ` Johannes Sixt
2013-06-07 12:46                         ` Erik Faye-Lund
2013-06-07 13:07                           ` Johannes Sixt
2013-06-07 14:20                             ` Erik Faye-Lund
2013-06-10  5:48                               ` [PATCH] mingw: make mingw_signal return the correct handler Johannes Sixt
2013-06-10 11:37                                 ` Erik Faye-Lund
2013-06-10 20:50                                 ` Junio C Hamano
2013-06-09  0:18                   ` [PATCH] t0005: skip signal death exit code test on Windows Jeff King
2013-06-09 20:31                     ` Junio C Hamano
2013-06-10  5:30                       ` Johannes Sixt
2013-06-10 11:38                         ` Erik Faye-Lund
2013-06-06 18:32               ` Felipe Contreras
2013-06-07 10:01       ` Erik Faye-Lund
2013-06-07 10:03         ` Erik Faye-Lund

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130609022351.GA30393@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=felipe.contreras@gmail.com \
    --cc=gdt@ir.bbn.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j6t@kdbg.org \
    --cc=jrnieder@gmail.com \
    --cc=kusmabite@gmail.com \
    --cc=mhagger@alum.mit.edu \
    --cc=pclouds@gmail.com \
    --cc=ramsay@ramsay1.demon.co.uk \
    --cc=rene.scharfe@lsrfire.ath.cx \
    --cc=trast@inf.ethz.ch \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).