I'm not sure I totally follow. If you mean both methods return the same type (ApplicationHistoryInfo) I agree that's a little bit confusing. It could be easily changed though. I can clarify what the ordering means, pending the rest of the discussion.

Regarding predicates, I was deliberately avoiding going down that path. I don't see a good way to have both the FS-based backend and a future Yarn backend cleanly sharing the same predicate language. Doing so would mean creating some Spark-specific language for that, and parsing / translating that to what yarn understands. Or supporting a subset of Yarn's parameters in the non-Yarn backend. 

I'm not sure that's the best path forward (although I understand not everybody uses Yarn, let alone the latest and greatest version). In my view, when using Yarn as the backend, the user would navigate the listing using Yarn's UI, and that would link to the Spark history server for rendering individual applications. The SHS listing page would be just a simple fallback if someone ends up going there, but wouldn't provide many features, and having offset / limit parameters would be the bare minimum to allow the server to scale and at the same time not flood the client with a huge HTML page.

But if you think that the SHS should be enhanced in the future to support these kinds of predicates, offset / limits can be built into that language.

BTW, this is what the Yarn API exposes as far as predicates:

      @PathParam("entityType") String entityType,
      @QueryParam("primaryFilter") String primaryFilter,
      @QueryParam("secondaryFilter") String secondaryFilter,
      @QueryParam("windowStart") String windowStart,
      @QueryParam("windowEnd") String windowEnd,
      @QueryParam("fromId") String fromId,
      @QueryParam("fromTs") String fromTs,
      @QueryParam("limit") String limit,
      @QueryParam("fields") String fields

I think you could map "offset" to the windowing parameters, although documentation there is still kinda lacking. Anyway, to avoid going down a rat hole here, I'll just pull the offset / limit parameters into the UI layer for now.