I've split DocumentLinker from RenderSupport.
public void commit()
if (focusFieldId != null)
if (init.length() > 0)
This means that if you provide an alternate version of RenderSupport, and the default one receives no method invocations, then the commit() will do nothing. So it is replaceable.
In terms of making DL "mutable" ... we're sharing some ideas for 5.1 (or 5.2, depending). Anyway, the point is, you can replace the DocumentLinker implementation in the Environment before the RenderSupport filter grabs it, and your implementation can do whatever. In terms of Facebook support, you'll want an implementation that expects the root element to be <fbml> and put the necessary <link> and <script> tags there.