git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Duy Nguyen <pclouds@gmail.com>
Cc: "Eric Wong" <e@80x24.org>,
	"Konstantin Khomoutov" <kostix+git@007spb.ru>,
	"Ben Peart" <peartben@gmail.com>,
	"Git Mailing List" <git@vger.kernel.org>,
	"Junio C Hamano" <gitster@pobox.com>,
	"Michael Haggerty" <mhagger@alum.mit.edu>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
	"David Turner" <novalis@novalis.org>,
	"Joey Hess" <joey@kitenet.net>,
	"Ronnie Sahlberg" <rsahlberg@google.com>,
	"Ævar Arnfjörð" <avarab@gmail.com>
Subject: Re: Plugin mechanism(s) for Git?
Date: Sat, 16 Jul 2016 04:06:54 -0400	[thread overview]
Message-ID: <20160716080654.GA10538@sigill.intra.peff.net> (raw)
In-Reply-To: <CACsJy8AZak5LyLhLz-6YX0vB8uevKt--Fe9EAMAe1_=14JaaVQ@mail.gmail.com>

On Sat, Jul 16, 2016 at 07:31:25AM +0200, Duy Nguyen wrote:

> >> > I wouldn’t be too quick to dismiss dynamically loaded libraries as
> >> > there are some distinct advantages over the other patterns especially
> >> > performance and simplicity.  I realize it requires us to version the
> >> > ABI but there are established patterns to manage this.  It also isn’t
> >> > that much different than us having to freeze or version the protocol
> >> > for communicating with a remote-helper.
> >
> > (re-adding dropped CCs)
> >
> > The critical difference is protocols can be tested and debugged
> > in a language/tool-independent way.
> 
> Not using dynamic libraries also makes it possible for other git
> reimplementations to reuse the same plugins.

Good point.

I think for the ref backends (which so far are the main pluggable thing
that people expect to link in), the assumption was that the on-disk
formats would be documented, and implementations would then write their
own plugins to match the on-disk formats.

I think all of the other implementations _except_ core git already have
their own internal pluggable ref formats (I know libgit2 and JGit do).

In theory if Git defines the API for the plugin to meet, then one could
use those plugins with other implementations. In practice, I think ref
plugins will also make use of Git functions (even things as simple as
xmalloc), and the ABI there is anything but stable. So I think ref
backends are "pluggable" in the sense of "configurable", but not in
the sense of dynamically linking third party code that git has never
seen.

Likewise, I don't think licensing issues have really been discussed. I'd
think at this point that any ref backends would need to be GPL, as they
are quite intimately part of git, and not true pluggable modules.

-Peff

  reply	other threads:[~2016-07-16  8:07 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-15  6:46 Plugin mechanism(s) for Git? Christian Couder
2016-07-15  7:37 ` Lars Schneider
2016-07-15 16:18   ` Ben Peart
2016-07-15 16:47     ` Konstantin Khomoutov
2016-07-15 21:28       ` Eric Wong
2016-07-16  5:31         ` Duy Nguyen
2016-07-16  8:06           ` Jeff King [this message]
2016-07-15  8:04 ` Mike Hommey
2016-07-15  8:28 ` Junio C Hamano
2016-07-15 12:18 ` Jeff King
2016-07-15 12:46   ` Ævar Arnfjörð Bjarmason
2016-07-15 13:32     ` Jeff King
2016-07-15 15:52       ` Ben Peart

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=20160716080654.GA10538@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=avarab@gmail.com \
    --cc=e@80x24.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=joey@kitenet.net \
    --cc=kostix+git@007spb.ru \
    --cc=mhagger@alum.mit.edu \
    --cc=novalis@novalis.org \
    --cc=pclouds@gmail.com \
    --cc=peartben@gmail.com \
    --cc=rsahlberg@google.com \
    /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).