git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Christer Weinigel <christer@weinigel.se>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Tom Tobin <korpios@korpios.com>, git@vger.kernel.org
Subject: Re: On Tabs and Spaces
Date: Wed, 17 Oct 2007 01:51:09 +0200	[thread overview]
Message-ID: <20071017015109.303760cc@localhost.localdomain> (raw)
In-Reply-To: <alpine.LFD.0.999.0710161559150.6887@woody.linux-foundation.org>

On Tue, 16 Oct 2007 16:05:34 -0700 (PDT)
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> I do indeed. I don't think it's sensible. And I did think I already 
> answered that issue by talking about how most editors don't even
> support it or show the difference between tabs and spaces.
> 
> For example, the editor I use - microemacs - supports tabs just fine.
> It does auto-indentation etc. But it does it with hard-tabs by
> default, so now you have to have some editor-specific setup for that
> particular project if you ever want to do anything else.
> 
> And that's really what it boils down to. Everybody support
> 8-character hardtabs (and usually by default). They may support other
> things *too*, but any time you move away from that standard
> behaviour, you'll most likely find something that doesn't support the
> alternatives.

Unfortunately most editors are totally confused about the difference
between tab size and indentation level.  Visual Studio, probably the
most commonly used development environment on Windows, by default uses
TAB characters that are 4 spaces wide, and users are recommended
not to change that because of that a lot of existing Windows source code
and examples uses those settings.

Two years ago, when I last looked at it, Eclipse, a very commonly used
development environment, managed to confuse tabs and indentation and
make it almost impossible to write Java or C code with a tab size of 8
with a different indentation level.  The Eclipse 3 betas did see some
improvement there, I think it got possible to do the right thing in
Java at least, but the normal text editor and C editor lagged behind.
But it was still a big mess and it was much too easy for someone to get
a tab size which is not 8.  Hopefully this has been fixed by now, but I
wouldn't bet any significant amount of money on it.

Nedit (which runs on Linux) has a very confusing settings dialog with
terms such as "tab spacing", "emulated tabs".  I guess emulated tabs
means the indentation level, but guess how easy that is to mess up.

gedit can control the tab width, but has no setting at all for
configuring the indentation level.  Guess what people do when they want
a 4 space indentation level?  Yes, right, change the tab size to 4.

A a former colleague who used visual slickedit usually produced code
with tab size 4.  I think I've gotten the same crap from ultra edit 32
users.

And so on...  Mercifully, _all_ of these editors have a setting to use
spaces instead of tabs, and telling people to turn on that setting is
the absolutely easiest way of making things "just work".  Yes, I know,
the correct answer is to tell people to always use tab size 8, and I
frequently and loudly do that.  But at the same time, perfect is the
enemy of good.  It's much easier to explain "tabs will act differently
in different editors, but if you always us spaces it will not be a
problem" than to get into a discussion about the semantic difference
between tab size and indentation.

If you assume that everyone is sane and use a tab size of 8 you will
get bitten, sooner or later.  Or actually, you, Linus, who are lucky
enough to work mostly with Linux source, you might personally not get
bitten all that often.  But us poor suckers that have to work with
other people, often Windows programmers, we do.

  /Christer

  reply	other threads:[~2007-10-17  0:02 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-16  6:45 On Tabs and Spaces Michael Witten
2007-10-16  7:04 ` Shawn O. Pearce
2007-10-16  7:27   ` Michael Witten
2007-10-16 17:20     ` Andreas Ericsson
2007-10-16 17:40       ` Sam Ravnborg
2007-10-16 23:09         ` Petr Baudis
2007-10-17  3:41           ` David
2007-10-17 11:32             ` Andy Parkins
2007-10-16  8:30 ` Adam Piatyszek
2007-10-16  9:04   ` Lars Hjemli
2007-10-16 10:16     ` Adam Piatyszek
2007-10-16 15:26       ` Jeffrey C. Ollie
2007-10-16 15:51         ` Michael Witten
2007-10-16 17:06           ` Jari Aalto
2007-10-16 19:20             ` Linus Torvalds
2007-10-16 19:36               ` Mike Hommey
2007-10-16 19:47                 ` Linus Torvalds
2007-10-16 19:51                   ` Linus Torvalds
2007-10-16 20:32                   ` Matthieu Moy
2007-10-16 20:18               ` Tom Tobin
2007-10-16 23:05                 ` Linus Torvalds
2007-10-16 23:51                   ` Christer Weinigel [this message]
2007-10-17  0:45                     ` Linus Torvalds
2007-10-17  3:08                       ` Michael Witten
2007-10-17  3:29                         ` Linus Torvalds
2007-10-17  7:17                       ` Luke Lu
2007-10-17  9:09                         ` Michael Witten
2007-10-17 10:03                           ` Luke Lu
2007-10-17 10:21                           ` Nikolai Weibull
2007-10-17 11:23                             ` Michael Witten
2007-10-17 22:02                           ` Jari Aalto
2007-10-17 22:36                             ` Andreas Ericsson
2007-10-17 23:38                               ` Jari Aalto
2007-10-18  4:31                                 ` Dmitry Torokhov
2007-10-18  8:19                                   ` Jari Aalto
2007-10-18 11:34                                     ` Petr Baudis
2007-10-18 11:39                                       ` Nikolai Weibull
2007-10-22  3:39                                         ` Miles Bader
2007-10-18  7:15                               ` David Kågedal
2007-10-18  5:42                             ` Mike Hommey
2007-10-18 10:36                               ` Jari Aalto
2007-10-17 15:53                         ` Linus Torvalds
2007-10-17 18:05                           ` Johannes Schindelin
2007-10-17 18:25                           ` Tom Tobin
2007-10-17 18:54                             ` Linus Torvalds
2007-10-17 19:33                               ` Tom Tobin
2007-10-17 19:44                                 ` Linus Torvalds
2007-10-17 19:48                                 ` Nicolas Pitre
2007-10-17 19:52                                 ` Josh England
2007-10-17 19:53                                 ` Linus Torvalds
2007-10-17 21:21                                   ` Christer Weinigel
2007-10-17 22:03                                     ` Linus Torvalds
2007-10-18  6:25                                       ` David Kastrup
2007-10-17 22:11                                     ` Johannes Schindelin
2007-10-17 23:17                                       ` Christer Weinigel
2007-10-17 23:44                                         ` Johannes Schindelin
2007-10-18  0:31                                           ` Christer Weinigel
2007-10-18  6:02                                             ` Andreas Ericsson
2007-10-18  7:12                                             ` David Kågedal
2007-10-17 23:53                                         ` Linus Torvalds
2007-10-17 20:31                                 ` David Kastrup
2007-10-17 21:08                                 ` Johannes Schindelin
2007-10-17 19:47                               ` Jan Wielemaker
2007-10-18  0:32                           ` Jeff King
2007-10-18  0:59                             ` Linus Torvalds
2007-10-18  2:45                               ` Jeff King
2007-10-18  3:03                                 ` david
2007-10-18  3:00                                   ` Jeff King
2007-10-18  3:32                                     ` Linus Torvalds
2007-10-18  4:17                                       ` Linus Torvalds
2007-10-18  3:13                                 ` Linus Torvalds
2007-10-18  3:23                                   ` Jeff King
2007-10-18  4:41                                     ` [PATCH] Add a message explaining that automatic GC is about to start koreth
2007-10-18  4:44                                       ` Steven Grimm
2007-10-18  5:01                                       ` Jeff King
2007-10-18  5:11                                         ` Shawn O. Pearce
2007-10-18 13:52                                       ` Brian Gernhardt
2007-10-18 14:16                                         ` Steven Grimm
2007-10-18 18:08                                           ` Jeff King
2007-10-19  0:16                                           ` Shawn O. Pearce
2007-10-19  1:12                                             ` [PATCH] git-gc: improve wording of --auto notification Jeff King
2007-10-19  1:24                                               ` Shawn O. Pearce
2007-10-19  1:26                                                 ` Jeff King
2007-10-18 14:21                                         ` [PATCH] Add a message explaining that automatic GC is about to start Nicolas Pitre
2007-10-18  4:52                                 ` On Tabs and Spaces Nicolas Pitre
2007-10-18  4:54                                   ` Jeff King
2007-10-18  4:55                                     ` Jeff King
2007-10-17 16:08                         ` David Kastrup
2007-10-17 17:44                           ` Nicolas Pitre
2007-10-17 19:52                             ` David Kastrup
2007-10-17 17:51                           ` Sean
2007-10-17  5:56                   ` David Kastrup
2007-10-16 20:56               ` Sam Ravnborg
2007-10-18  3:31               ` Paul Wankadia
2007-10-18  4:22                 ` Linus Torvalds
2007-10-18  4:36               ` Dmitry Potapov
2007-10-16 17:23         ` Andreas Ericsson
2007-10-16 18:34           ` Jan-Benedict Glaw
2007-10-16 18:51             ` Andreas Ericsson
2007-10-20 13:54 ` Robin Rosenberg

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=20071017015109.303760cc@localhost.localdomain \
    --to=christer@weinigel.se \
    --cc=git@vger.kernel.org \
    --cc=korpios@korpios.com \
    --cc=torvalds@linux-foundation.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).