title: protobuf backward compatibility
body: <p>The following is overly simplified version of my protobuf messages:</p>
  <pre><code>message Item {
    string attribute0 = 1;
  }
  
  message Group {
    string name = 1;
    repeated Item = 2;  
  }
  </code></pre>
  <p>And, a quite sizable software has been already implemented and running, using the protobuf message. The messages are sent by a client tool and consumed by the server.</p>
  <p>I am about to update the server, and release a new client. The thing is that we still have to support the old client; the old client should be able to send the messages to the new server, and get the same result from the server.</p>
  <p>And, I am planning to add fields to <code>Item</code>. Would it break compatibility with <code>Group</code>? My understanding is that as long as I do not change old numberings in <code>Item</code> and add optional fields only, the client sending <code>Item</code> will still work. However, what if the client was sending <code>Group</code>? Is <code>Item</code> now regarded as a different type so effectively the type of one field inside <code>Group</code> changed?</p>