git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Theodore Tso <tytso@mit.edu>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	David Tweed <david.tweed@gmail.com>
Cc: Reece Dunn <msclrhd@googlemail.com>, git@vger.kernel.org
Subject: Re: [PATCH] Make "git reset" a builtin. (incomplete)
Date: Thu, 23 Aug 2007 07:24:13 -0400	[thread overview]
Message-ID: <20070823112413.GJ7267@thunk.org> (raw)
In-Reply-To: <e1dab3980708230355x1d5d2febw6814e8f24d745ddd@mail.gmail.com> <Pine.LNX.4.64.0708231122450.20400@racer.site>

On Thu, Aug 23, 2007 at 11:31:56AM +0100, Johannes Schindelin wrote:
> And that is _exactly_ where I fail to see benefits from.  You only get the 
> full power of C by using C.  You only get the full power of all open 
> source C programmers by using C.  And you only get the full flexibility, 
> speed, name-your-own-pet-peeve using C.

Sure, but not all porcelein commands need the full power of C.  Take
"git-gc" for example.  It was a *very* short shell script before it
was rewritten to use C.

> I have seen boxes where the administrators locked down everything.  And 
> Cygwin _does_ need to write the registry, and there is _no_ easy way to 
> have two independent Cygwin installs on the same machine.  This is where 
> MinGW/MSys really shines.

So are you claiming that MingGW/MSys is so good that it has a
perl/bash that is fully Linux compatible, so that we don't need to
convert our various internal commands that are implemented in shell to
C?  I didn't think that was a commonly held assessment...

> > So for those people who think an internal scripting language would be a 
> > worthwhile way of implementing certain git commands, instead of 
> > converting them all to C, my suggestion would be to "show us the code".  
> > Actually create the git to LUA bindings, and then show how easily it 
> > would be to rewrite a bunch of the existing git commands which are 
> > currently implemented in shell in LUA instead.
> 
> And force everybody who wants to contribute to _those_ parts of Git to 
> learn LUA?  It is not about languages.  It is about people.  Choosing an 
> obscure language automatically limits your most valuable resource: people.

I don't know enough about LUA to say for sure.  Having taken a quick
look at lua.org, the implementation looks pleasantly small, and LUA
scripts look more comprehensible than say Tcl (which is not saying
much, I know).  But part of "show me the code" is people demonstrating
that no really, LUA is an appropriate tool for simple scripts that is
portable enough that we don't need to have external dependencies on
bash and perl, and that it is easier than rewriting all of our shell
scripts in C.  Maybe that is a true statement.  I don't know.  My
suggestion to "Show us the code" was a way of hoping someone who cared
enough about this issue could show us.

On Thu, Aug 23, 2007 at 11:55:41AM +0100, David Tweed wrote:
> 
> *nix person: "Dunno, I've never seen that before. I wonder what's
> causing it: is it a git thing I've never seen, is it a bash/Perl-on-Windows
> weirdness, is it something implemented not as expected in the cygwin
> libraries, is it native Windows behaviour that's actually "right"?
> Or is it some mixture of the four? And given that I've never
> used cygwin and other tools on windows, I'm ******** if I know...."

This is definitely the case with Cygwin, and I *thought* it was an
issue with MSys/MingGW.  Johannes seems to be arguing otherwise, but I
don't have first hand experience, since happily I haven't had to do
Windows development since 1999, when I stopped working on Kerberos at
MIT.  (Back then we had some really gross perl scripts that converted
Unix makefiles into Windows makefiles, and I used Cygwin, so I know
how unsatisfying that would be for a die-hard Windows programmer.)

> I personally don't care exactly what's used implementing git on non-unix
> platforms, but I get nervous as more and more "layers" are added so
> it becomes more and more difficult to figure which layer a user problem
> is occurring at. If it looks to difficult to "help out with" issues on Windows,
> that would be a big enough reason for me not to use git on such projects.

I think people are aware of that, and that's why the debate is going
on about either rewriting all internal shell scripts to C, or perhaps
using some extension language.

My personal belief is that for anything longer than a relatively
trivial size, the right answer *is* to rewrite it to C, and we have
some GSoC students doing just that.  But for some of the simpler
scripts, maybe it makes sense to consider LUA.  I don't know.  But
someone who cares is going to have to implement a proof of concept and
then convince everyone that it is worthwhile for the git community to
learn LUA.  If it's not a simple enough language, or write-only
language like Perl (quick!  what does this do?  
$_="krJhruaesrltre c a cnP,ohet";$_.=$1,print$2while s/(..)(.)//;),
then such a proposal will fall flat on its face.  But from my very
quick examination of LUA, it seems to avoid the obvious problems of
Perl (too easy to write obfuscated code, no stable language specification,
too big), Python (too big, no stable language specification), Tcl 
(awful syntax), so if someone is willing to champion it, it should be
given a fair hearing.

Or maybe we just convert everything over to C.  That's an acceptable
outcome as well, and probably the most likely given that we're doing
this already.

						- Ted

  reply	other threads:[~2007-08-23 11:24 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-22 12:48 [PATCH] Make "git reset" a builtin. (incomplete) Carlos Rica
2007-08-22 13:00 ` David Kastrup
2007-08-22 13:37   ` Andreas Ericsson
2007-08-22 14:29     ` David Kastrup
2007-08-22 14:49       ` Mike Hommey
2007-08-22 15:02         ` Chris Shoemaker
2007-08-22 15:41           ` David Kastrup
2007-08-22 16:07       ` Nicolas Pitre
2007-08-22 16:51         ` Johannes Schindelin
2007-08-22 17:17           ` David Kastrup
2007-08-22 19:05             ` Linus Torvalds
2007-08-22 19:36               ` David Kastrup
2007-08-22 19:58                 ` Linus Torvalds
2007-08-22 22:25                   ` David Kastrup
2007-08-22 23:10                     ` Linus Torvalds
2007-08-22 23:39                       ` David Kastrup
2007-08-23  1:30                         ` Linus Torvalds
2007-08-23  0:24                     ` Wincent Colaiuta
2007-08-23  1:15               ` Nicolas Pitre
2007-08-23  1:40                 ` Jon Smirl
2007-08-23  3:23                 ` Linus Torvalds
2007-08-23  4:21                   ` Junio C Hamano
2007-08-23  9:15                   ` Johannes Schindelin
2007-08-22 21:34             ` Reece Dunn
2007-08-23  9:10               ` Johannes Schindelin
2007-08-23 10:20                 ` Theodore Tso
2007-08-23 10:31                   ` Johannes Schindelin
2007-08-23 10:55                   ` David Tweed
2007-08-23 11:24                     ` Theodore Tso [this message]
2007-08-23 11:35                       ` Johannes Schindelin
2007-08-23 16:30                       ` Jon Smirl
2007-08-23 11:25                     ` Reece Dunn
2007-08-23 20:26             ` Alex Riesen
2007-08-23 21:14               ` David Kastrup
2007-08-23 21:33                 ` Alex Riesen
2007-08-23 22:05                   ` David Kastrup
2007-08-22 17:21           ` Nicolas Pitre
2007-08-23  9:55             ` Johannes Schindelin
2007-08-23 15:19               ` Nicolas Pitre
2007-08-22 21:19           ` Reece Dunn
2007-08-23  9:05             ` Johannes Schindelin
2007-08-23 18:40             ` Robin Rosenberg
2007-08-23  2:05       ` Nguyen Thai Ngoc Duy
2007-08-22 13:42   ` Matthieu Moy
2007-08-22 22:28     ` David Kastrup
2007-08-22 14:27   ` Andy Parkins
2007-08-22 14:57 ` Johannes Sixt
2007-08-22 16:20 ` Alex Riesen
2007-08-23 11:14 ` Johannes Schindelin

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=20070823112413.GJ7267@thunk.org \
    --to=tytso@mit.edu \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=david.tweed@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=msclrhd@googlemail.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).