title: What's the benefit of Connectedness?
body: <p>What is the benefit of Connectedness as defined by Resource Oriented Architecture (ROA)? The way I understand it, the crux of Connectedness is the ability to crawl the entire application state using only the root URIs.</p>
  
  <p>But how useful is that really?</p>
  
  <p>For example, imagine that HTTP GET <a href="http://example.com/users/joe" rel="nofollow noreferrer">http://example.com/users/joe</a> returns a link to <a href="http://examples.com/uses/joe/bookmarks" rel="nofollow noreferrer">http://examples.com/uses/joe/bookmarks</a>.</p>
  
  <p>Unless you're writing a dumb web crawler (and even then I wonder), you still need to teach the client what each link means at compile-time. That is, the client needs to know that the "bookmarks URI" returns a URI to Bookmark resources, and then pass control over to special Bookmark-handling algorithms. You can't just pass links blindly to some general client method. Since you need this logic anyway:</p>
  
  <ol>
  <li><p>What's the difference between the client figuring out the URI at runtime versus providing it at compile-time (making <a href="http://example.com/users/bookmarks" rel="nofollow noreferrer">http://example.com/users/bookmarks</a> a root URI)?</p></li>
  <li><p>Why is linking using <code><a href="http://example.com/users/joe/bookmarks/2" rel="nofollow noreferrer">http://example.com/users/joe/bookmarks/2</a></code> preferred to <code>id="2"</code>?</p></li>
  </ol>
  
  <p>The only benefit I can think of is the ability to change the path of non-root URIs over time, but this breaks cached links so it's not really desirable anyway. What am I missing?</p>