NEAR strategy around node client(s)?

Qs about clients:

  1. Are there protocol implementations other than the nearcore reference?

  2. Does NEAR have a goal for there to be multiple implementations (to promote diversity, security, robustness etc.)?

  3. Is the Nomicon spec complete (i.e. alone sufficient to specify a client) or are there some dependencies on the nearcore implementation?