Ok, my thoughts on this difficult topic.
Substrate
Substrate is a Rust-based blockchain framework. Since we're going into strict nomenclature, then it really starts and ends pretty much at the Parity Substrate repository with a few small pieces of tooling and the individuals/orgs/teams which use it. Uniquely Substrate technologies include Frame, OCWs and a number of pallets (the basic design/proposition for many pallets predates Substrate).
Polkadot
The meaning of "Polkadot", though is somewhat more multifaceted and broad. It is:
- an ever-expanding set of technologies and protocols researched and designed mostly between the Web3 Foundation's research team and Parity Technologies.
- an important fragment of the name of the Polkadot Relay blockchain network and an obvious inspiration of the name of the Kusama Relay blockchain network.
- the community loosely based around this Relay chain, its stakeholders, participants and related parties.
- a technical ecosystem including numerous projects (with Substrate at the core, but by no means only, component of the first and most developed Polkadot Relay chain implementation). It includes Smoldot, Polkadot-js, Cumulus, some tooling, and various other Polkadot-specific components such as XCM, tooling and alternative implementations such as Gossamer.
Of the two Polkadot is, I think, the looser term here.
Technologies
I think it also important to understand the proper heritage of the technology when "blessing" a name:
Many key technologies in Substrate (e.g. Grandpa, Babe, NPoS staking) did not come out of nothing: they were devised by the Web3 Foundation specifically for Polkadot or (e.g. in the case of using WebAssembly and libp2p) were already proposed as technologies core to Polkadot prior to their eventual implementation into Substrate. Substrate owes much of its composition to the Polkadot's proposition and conceptual development, not the other way around.
I think it also crucial to consider the relationship of Cumulus, XCM and message transport systems (like XCMP and bridges) to the name "Polkadot" and "Substrate" since many questions do tend to be asked about them.
- Cumulus is an SDK which utilises Substrate to provide users which an API and much of an SDK for creating parachains.
- The Substrate framework does not conceptually recognise XCM, in that it doesn't conceptually recognise non-local consensus. XCM is a concept rooted in Polkadot (literally so at present since it's part of the
polkadot
repo). It may become separated from Polkadot in the future, but it won't become part of Substrate.
- At present, most message transport systems are intrinsic to the Polkadot protocol (XCMP, UMP, DMP). As our bridging technology reaches production, then we will have a transport mechanism which doesn't technically rely on a Polkadot-based blockchain. However, owing to our bridging being wholly dependent on Polkadot technologies (Grandpa), I think it a push to consider it any more a part of Substrate than of Polkadot.
Possible Conceptual Trees
There has been a diagram posted in another answer which I think is not indicative of reality. I don't really see either as being a superset of the other. However, I would especially disagree that XCM, Cumulus, Kusama are about "Substrate" more than "Polkadot", indeed quite the opposite: Substrate's contents and proposition would remain wholly unchanged without any of these existing. Conversely, they are all crucial to the existence of the Polkadot protocol.
Rooted with Substrate
- Substrate
- Polkadot technology & ecosystem
- Working with the Relay-chains (governance, usage &c.)
- Polkadot
- Kusama
- Rococo &s
- Statemine/Statemint
- Other system & CG parachains
- XCM
- Parachains
- Auctions/crowdloans/...
- Polkadot.js
- Smoldot
- Rococo
- Parachain tooling
- Relay-chain tooling
- More Polkadot-client impls
- Cumulus
- XCMP
- Launching a parachain
- Maintaining a parachain
- Docs
- Bridging
- Frame & Pallets (Grandpa, Babe)
- Other tech (OCWs, keys and signing)
- Tooling
- Contracts & ink!
- Substrate Docs
- Other Substrate chains
Rooted with Polkadot SDK
- Polkadot SDK
- Working with the Relay-chains (governance, usage &c.)
- Polkadot
- Kusama
- Rococo &s
- Statemine/Statemint
- Other system & CG parachains
- Auctions/Crowdloans
- Cumulus
- Launching a parachain
- Maintaining a parachain
- DMP/UMP
- XCMP
- Substrate: core blockchain SDK
- Frame & Pallets (Grandpa, Babe)
- Other tech (OCWs, keys and signing)
- Tooling
- Contracts and ink!
- Substrate Docs
- Other Substrate chains
- Rust
- XCM
- Polkadot.js
- Smoldot
- Parachain tooling
- Relay-chain tooling
- Bridging
- More Polkadot-client impls
There's nothing too surprising in these conceptual maps and I've omitted quite a lot of stuff, but it's enough to build a bit of a picture about what I think would be considered more conceptually connected to one name as opposed to the other.
Essentially by using Substrate as the name, we're prioritising Substrate centric concepts (Wasm contracts/ink!, Frame and Substrate-specific tooling/docs) over Polkadot-centric concepts (Relay/CG/system-chains, parachain launch/maintenance, XCM, relay-based transport, Smoldot, maybe Polkadot.js).
On balance, I think the technology-set better represented by the "Polkadot SDK" name is more substantial than that which is better represented by the "Substrate" name.
Conclusion
Neither name works perfectly, and it is quite unfortunate that one must be selected.
We want to field questions concerning off-chain workers and ink! as much as we do about XCMP and Polkadot-js. We want to field questions from those who are creating parachains with other (not yet invented parachain SDKs) as much as we do from those who are attempting to create a private solochain with zero interest in joining the Polkadot community. So it must come down to judging one against the other.
In my mind it seems to be marginally better to label our technology ecosystem "Polkadot SDK" because:
- Polkadot was around before Substrate. It is the legitimate conceptual genesis of most topics (with Frame being a notable exception), and more people associate parachain development with Polkadot than with Substrate.
- It is easier (for me anyway) to think of questions which are more specific to Substrate (e.g. Frame/pallets) as being under the broader context of "Polkadot SDK" than avowedly Polkadot-native stuff like parachain-auctions and XCMP being as a broader part of Substrate. They really have no inherent connection to Substrate.
- There are more projects and more code written which already utilises the Polkadot name rather than the Substrate name (especially Polkadot-js and Smoldot, two projects at the very core of the future of Polkadot development).
This has the very obvious disadvantage of making it much harder for people who are using Substrate to develop a solo chain and who are unaware of Polkadot to find their answers. But all indications to me are that such people are much smaller in number than those who know of Polkadot but not of Substrate.