git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org, users@kernel.org
Subject: [RFD] On deprecating "git-foo" for builtins
Date: Sat, 23 Aug 2008 20:33:10 -0700	[thread overview]
Message-ID: <7vprnzt7d5.fsf@gitster.siamese.dyndns.org> (raw)

People seems to have quite strong negative feelings on the removal of
dashed form "git-foo" commands from their $PATH.

We have deprecated the dashed form in early 2006, and announced that 1.6.0
will remove them from $PATH in the 1.5.4 release notes, with instructions
on how to update their scripts before 1.6.0 happens.  Many people knew
about this transition, but they didn't do anything about it.  Since 2005,
git has matured enough that majority of people are using it without
building one themselves, without a chance to even read Release Notes.

The pain was exacerbated partly because we tried to be too nice during the
"deprecation" period, not to annoy people and not to break people's
scripts.

But that niceness backfired.  Many people seem to argue now that we should
have annoyed people by throwing loud deprecation notices to stderr when
they typed "git-foo", and we should have risked breaking their scripts iff
they relied on not seeing anything extra on the stderr.

I am 50% sympathetic to them, while the remainder of me think that they
can say that in retrospect only because they didn't actually got annoyed
with such extra messages and they did not have to fix their scripts before
the actual switch-over happened.  If we did go the "annoy them early"
route, I am sure they would have complained as loudly.

That's all history now anyway.  We should try to do better the next time,
which is much more important, and that is the topic of this message.

Now, we haven't set the timeframe yet, but the original plan, advocated by
Linus and others, was to eventually stop installing "git-foo" form on the
filesystem for builtin commands.  If we were to do this, we should plan
how the deprecation period for this change should look like.  I think the
sequence of events would look like this:

 (1) Declare that the dashed form are deprecated even in scripts that use
     "git --exec-path" the way 1.5.4 release notes suggested (it does not
     make sense to say "deprecated only for builtins", as the distinction
     between builtins and others are implementation details) and will be
     removed in 1.7.0;

 (2) Update git.c (the "git" wrapper) so that when the command is invoked
     in "git-foo" form for a builtin, issue messages to the standard error
     stream about the deprecation.  Also, when the wrapper invokes an
     external "git-foo" command, it exports an environment variable (say,
     "GIT_WRAPPER_IS_RUNNING_YOU");

     Update non-builtin commands and scripts to first check the
     environment variable, and otherwise issue the same deprecation
     message, and then unset the environment variable before continuing.

 (3) At 1.7.0, stop installing the hardlinks to builtin commands.

There is one alternative, and one augmentation:

 (A) We do not do anything.

 (B) In addition to the main transition plan, outside git, prepare an
     optional "git-old-style" package that installs many "git-foo"
     wrappers in $PATH (i.e. /usr/bin).  Each of them exec "git foo".
     People who like the dashed form can keep typing "git-foo", even
     though that will cost them two exec()s.

I personally do not mind seeing dozens of git-foo commands in /usr/bin,
did not have strong opinion on the transition we just did either way, but:

 * Alternative (A) does not logically make much sense.  Now with 1.6.0,
   people are strongly encouraged to use "git foo" form already.

 * Variant (B) feels quite backwards and I think it will have a negative
   effect on our userbase in the longer term. People who train their
   fingers to say "git-foo" on machines with the "git-old-style" package
   will have hard time adjusting to working on machines without it.

             reply	other threads:[~2008-08-24  3:34 UTC|newest]

Thread overview: 193+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-24  3:33 Junio C Hamano [this message]
2008-08-24  4:23 ` [kernel.org users] [RFD] On deprecating "git-foo" for builtins Linus Torvalds
2008-08-24  4:54   ` Imran M Yousuf
2008-08-24  8:40 ` Stefan Richter
2008-08-25 11:49 ` David Woodhouse
2008-08-25 12:17   ` Geert Uytterhoeven
2008-08-25 12:43   ` Andi Kleen
2008-08-26  3:00     ` A Large Angry SCM
2008-08-25 13:22   ` Ben Collins
2008-08-25 14:38     ` Felipe Contreras
2008-08-25 18:19   ` Johannes Schindelin
2008-08-25 23:41     ` Junio C Hamano
2008-08-26 12:27       ` David Woodhouse
2008-08-26 14:57       ` Jeff King
2008-08-26 15:34         ` Kristian Høgsberg
2008-08-26 15:59           ` David Woodhouse
2008-08-26 16:04             ` Matthias Kestenholz
2008-08-26 16:25               ` Petr Baudis
2008-08-26 16:45                 ` Andi Kleen
2008-08-26 17:04                   ` Jeff King
2008-08-26 17:05                   ` Linus Torvalds
2008-08-26 17:27                     ` Andi Kleen
2008-08-27  6:04                       ` Ulrich Windl
2008-08-26 17:10                   ` Petr Baudis
2008-08-26 17:11                     ` [PATCH] bash completion: Hide more plumbing commands Petr Baudis
2008-08-26 17:24                       ` Shawn O. Pearce
2008-08-26 17:43                         ` Jakub Narebski
2008-08-26 18:25                         ` Junio C Hamano
2008-08-26 18:27                           ` Shawn O. Pearce
2008-08-26 19:04                           ` Daniel Barkalow
2008-08-26 19:07                             ` Shawn O. Pearce
2008-08-26 19:23                               ` Daniel Barkalow
2008-09-03 22:23                           ` Petr Baudis
2008-09-03 22:31                             ` Petr Baudis
2008-08-26 17:38                       ` Jakub Narebski
2008-09-03 17:56                         ` Petr Baudis
2008-09-04  4:57                           ` Junio C Hamano
2008-08-26 21:53                       ` Matthieu Moy
2008-08-27  9:09                         ` Karl Hasselström
2008-08-26 17:12                     ` [kernel.org users] [RFD] On deprecating "git-foo" for builtins Shawn O. Pearce
2008-08-26 17:16                       ` Jeff King
2008-08-26 17:47                         ` Nguyen Thai Ngoc Duy
2008-08-26 21:06                         ` Willy Tarreau
2008-08-27 20:24                           ` Jeff Garzik
2008-08-27 20:27                             ` Jeff King
2008-08-27 20:38                               ` Jeff Garzik
2008-08-27 20:53                                 ` Jeff King
2008-08-27 21:05                                 ` Matthew Wilcox
2008-08-27 21:13                                   ` Adrian Bunk
2008-08-27 21:22                                     ` Jeff King
2008-08-27 22:29                                       ` Adrian Bunk
2008-08-27 21:23                                 ` Linus Torvalds
2008-08-27 23:49                                   ` Jeff Garzik
2008-08-28  6:51                                     ` Ingo Molnar
2008-08-28  7:46                                       ` git-show vs git-log (or: git show vs git log) Dominik Brodowski
2008-08-28 14:44                                       ` [kernel.org users] [RFD] On deprecating "git-foo" for builtins Alex Riesen
2008-08-28  5:43                                 ` Mike Hommey
2008-08-27 20:50                             ` Linus Torvalds
2008-08-27  6:00                   ` Ulrich Windl
2008-08-27  7:59                     ` H. Peter Anvin
2008-08-27 19:14                     ` Matthew Wilcox
2008-08-27 19:43                     ` Perry Wagle
2008-08-27 19:50                       ` Jeff King
2008-08-27 19:54                         ` Perry Wagle
2008-08-27 20:43                           ` H. Peter Anvin
2008-08-27 21:19                             ` Steven Rostedt
2008-08-27 23:27                               ` Junio C Hamano
2008-08-27 23:53                                 ` Perry Wagle
2008-08-28  0:05                                   ` Perry Wagle
2008-08-28  9:04                                     ` Petr Baudis
2008-08-28 10:33                                       ` Perry Wagle
2008-08-28 10:42                                         ` David Woodhouse
2008-08-28 19:56                                           ` Perry Wagle
2008-08-28 10:47                                         ` Petr Baudis
2008-08-28 16:35                                         ` Linus Torvalds
2008-08-28 19:24                                           ` Perry Wagle
2008-08-28 19:52                                             ` Teemu Likonen
2008-08-28 20:23                                               ` Perry Wagle
2008-08-28 20:44                                                 ` Petr Baudis
2008-08-28 20:57                                                   ` Perry Wagle
2008-08-28 21:23                                                 ` Jeff King
2008-08-28 21:41                                                   ` Perry Wagle
2008-08-28 21:53                                                     ` Petr Baudis
2008-08-28 21:59                                                     ` Jeff King
2008-08-28 22:33                                                       ` Perry Wagle
2008-08-28 23:04                                                         ` Jeff King
2008-08-28 23:22                                                           ` Perry Wagle
2008-08-28 23:36                                                             ` Jeff King
2008-08-28 23:24                                                           ` Junio C Hamano
2008-08-28 23:28                                                             ` Perry Wagle
2008-08-28 23:30                                                             ` Petr Baudis
2008-08-28 23:41                                                             ` git-* in test scripts (was On deprecating "git-foo" for builtins) Jeff King
2008-08-29  0:04                                                               ` git-* in test scripts Junio C Hamano
2008-08-29  0:10                                                                 ` Jeff King
2008-08-29  7:51                                                           ` [kernel.org users] [RFD] On deprecating "git-foo" for builtins Andreas Ericsson
2008-08-29  8:05                                                             ` Matthieu Moy
2008-08-29  8:23                                                               ` Andreas Ericsson
2008-08-29  8:27                                                               ` Matthias Kestenholz
2008-08-29  9:02                                                                 ` Matthieu Moy
2008-08-28 23:12                                                         ` Perry Wagle
2008-08-29 15:24                                                           ` Aidan Van Dyk
2008-08-29 16:11                                                             ` Felipe Contreras
2008-08-29 16:24                                                               ` Aidan Van Dyk
2008-08-29 16:28                                                                 ` Felipe Contreras
2008-08-29 16:41                                                                   ` Aidan Van Dyk
2008-08-30  8:13                                                                   ` Andreas Ericsson
2008-08-28 23:31                                                         ` Jakub Narebski
2008-08-29  9:33                                                   ` Wincent Colaiuta
2008-08-30 13:24                                                     ` Steven Rostedt
2008-08-30 13:50                                                       ` Teemu Likonen
2008-08-30 14:08                                                         ` Steven Rostedt
2008-08-26 17:07                 ` Jeff King
2008-08-26 17:42                   ` Teemu Likonen
2008-08-26 16:17             ` Kristian Høgsberg
2008-08-26 16:23             ` Jean Delvare
2008-08-26 16:50               ` Takashi Iwai
2008-08-26 17:20                 ` Jean Delvare
2008-08-27  7:42                   ` Andreas Ericsson
2008-08-27  8:21                     ` Jean Delvare
2008-08-27 15:14                       ` Geert Uytterhoeven
2008-08-26 20:14               ` H. Peter Anvin
2008-08-27  7:42                 ` Jean Delvare
2008-08-27  8:32                 ` [kernel.org users] " Andreas Ericsson
2008-08-26 17:03             ` Linus Torvalds
2008-08-26 17:29               ` Bruce Stephens
2008-08-26 17:35                 ` Petr Baudis
2008-08-26 17:38                   ` Bruce Stephens
2008-08-28 15:21                   ` Johannes Schindelin
2008-08-26 17:34               ` Takashi Iwai
2008-08-26 18:09               ` Dominik Brodowski
2008-08-26 18:19                 ` Linus Torvalds
2008-08-26 18:55                   ` Al Viro
2008-08-26 19:04                     ` Linus Torvalds
2008-08-26 19:22                       ` Al Viro
2008-08-26 19:11                     ` Teemu Likonen
2008-08-28 15:24                     ` Johannes Schindelin
2008-08-26 21:08                   ` Dominik Brodowski
2008-08-26 21:28                   ` Junio C Hamano
2008-08-26 21:38                     ` Linus Torvalds
2008-08-26 23:21                   ` Perry Wagle
2008-08-27 15:27                     ` Steven Rostedt
2008-08-27 23:09                       ` Russell King
2008-08-27 23:53                         ` Stefan Richter
2008-08-28 19:19                           ` Russell King
2008-08-28 20:10                             ` Junio C Hamano
2008-08-28 20:30                               ` Matthew Wilcox
2008-08-28 20:36                               ` Petr Baudis
2008-08-28 20:57                             ` Stefan Richter
2008-08-28 21:05                               ` Perry Wagle
2008-08-28  1:25                         ` Steven Rostedt
2008-08-27  0:34               ` A Large Angry SCM
2008-08-27 12:23           ` Krzysztof Halasa
2008-08-26 20:39         ` Junio C Hamano
2008-08-26 21:03           ` Jeff King
2008-08-27  2:24             ` Jay Soffian
2008-08-27 14:49               ` H. Peter Anvin
2008-08-26 23:36           ` Perry Wagle
2008-08-26 23:45           ` Nicolas Pitre
2008-08-28 15:32             ` Johannes Schindelin
2008-08-27  0:17           ` Matthew Wilcox
2008-08-27 22:52             ` Russell King
2008-08-28 15:34               ` Johannes Schindelin
2008-08-28 16:10                 ` Matthew Wilcox
2008-08-28 19:18                   ` Johannes Schindelin
2008-08-28 19:27                     ` Matthew Wilcox
2008-08-27 23:38             ` Junio C Hamano
2008-08-28  0:09               ` Felipe Contreras
2008-08-28  0:44                 ` Jeff Garzik
2008-08-28  7:14               ` David Woodhouse
2008-08-28  8:17                 ` Junio C Hamano
2008-08-28  8:32                   ` David Woodhouse
2008-08-28  8:57                     ` Felipe Contreras
2008-08-28 11:54                       ` Al Viro
2008-08-28 13:15                         ` Felipe Contreras
2008-08-28 13:34                           ` Felipe Contreras
2008-08-28 13:45                             ` Paolo Ciarrocchi
2008-08-28 16:37                             ` Linus Torvalds
2008-08-28 20:42                               ` Perry Wagle
2008-08-28 23:03                                 ` Jakub Narebski
2008-08-28 23:14                                   ` Perry Wagle
2008-08-28 23:45                                     ` Jeff King
2008-08-28 23:55                                       ` Perry Wagle
2008-08-29 14:12                               ` Felipe Contreras
2008-08-28 14:06                     ` Nicolas Pitre
2008-08-28 14:13                       ` Nicolas Pitre
2008-08-28 16:17                     ` Linus Torvalds
2008-08-26  2:58   ` A Large Angry SCM
2008-08-26  7:17     ` Jean Delvare
2008-08-26 11:12       ` A Large Angry SCM
2008-08-26 11:56         ` Stefan Richter
2008-08-26 21:00           ` Steven Rostedt
2008-08-26 14:28         ` Shawn O. Pearce
2008-08-26 14:46       ` Jeff King

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=7vprnzt7d5.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=users@kernel.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.
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).