I think this terminology was not well thought through. It's somewhat degrading.
The plumbing is hidden (unless you go looking for it) while the porcelain is what you interact with day-to-day.
https://git.wiki.kernel.org/index.php/GitFaq#Why_the_.27Git....
And I'm always hoping that this is a small jab at my, and everyone's code (the stuff in the git-pipes) by Linus: it's shit.
Porcelain bathware (sinks, baths, toilets) and sewer plumbing is a perfect metaphor for the distinction between UX and underlying infrastructure. Despite the simplicity to which they are connected together, one is a near-universal experience and the other is a massive layer cake of specialist engineering that very few laypeople understand.
This guy is sharing his work of his own free will and deserves respect and owes no one anything at all.
A recent news topic you should review on this:
https://news.ycombinator.com/item?id=16631476
[Edit. Removed slightly inflammatory statement]
And it certainly isn't about being offended by "other people's culture". I talked to enough americans who shared my sentiment. And as we see here in the discussion, it just wasn't understood. That was the other part of what I wrote: even if the term might be completely innocent, it might be difficult to understand for outsiders.
It is not, that I haven't been guilty myself of bad naming in my projects. It can be fun or even convenient to come up with "insider" terms. But as soon as you have to communicate with outsiders to the project, the tend to bite you, even if there is no offensiveness about it.
Naming is one of the hard problems in software engineering :)
How would you describe the distinction between these two command types?
GIT COMMANDS
We divide Git into high level ("porcelain") commands and low level
("plumbing") commands."That is one thing news aggregator commenters should learn: while it might be fun to just put one's ignorance on display for the world to see, when publishing, come up with a modicum of curiosity and willingness to learn about and engage with for the craft and its culture that one is part of."
The underlying idea is: as a hacker, and as a first step, the onus is on you to come up with the explanation‡ yourself, not expect the burden of education on somebody else's back to be carried towards you. Same goes for other (potential) git users in a similar situation. It is okay to disagree with this, but then one would mark oneself as a member of the out-group. HTH; HAND
‡ We are blessed to live in the information age. The explanation is abundant and easy to find, literally within seconds: <https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Po...> <https://stackoverflow.com/questions/6976473/what-does-the-te...>
If the name is off-putting to you, you're free not to use it. If lots of people agree with you (that the off-putting name is more significant than the contribution) then the market will have spoken and the tool will die.
But if it doesn't die then you should probably reconsider your hang-up.
Linus is the original author of two foundational pieces of software technology in use today. I think he can name things whatever he wants.
If you're offended by the terminology of plumbing and porcelain because you can only think of toilets, then I suggest you look around your bathroom and consider what the basins are made of, or the bidet, or some bathtubs.
It's a perfectly valid extension of the "plumbing" term meaning the underlying infrastructure, while porcelain is the way users interact with the system.
When I do "man git" the first two lines are:
NAME
git - the stupid content tracker
Further down in that manpage is: GIT COMMANDS
We divide Git into high level ("porcelain") commands and low level ("plumbing") commands.