So it's more appropriate to compare endpoints-proto-datastore to protopigeon. Basically they took two approaches to the same "problem" (translating ndb objects to and from protobufs).
Protopigeon took the non-invasive approach, endpoints-proto-datastore took the invasive approach. Neither is really "better" than the other they just have different goals and use cases.
Both can be used with Ferris, though I haven't tried using endpoints-proto-datastore with ferris, but it's likely the `hvild` methods won't work. Everything else should be fine.