This makes it difficult for search backends to be independent from Titan itself.  That is, suppose I subclass the new SolrIndex class as say, DseSolrIndex to make some accommodations for DataStax Enterprise.  Then I'd have to add another map entry in the Titan project itself so this IndexProvider implementation would be recognized.

I admit, I'm just now looking at Backend.java in more detail, so maybe I'm missing something. Would it make sense to define annotations such as \@IndexProvider and \@StorageManager and then Titan can scan for those and register the components actually present on the classpath?  Or I suppose implementations of the IndexProvider could be located, and then invoke a new registerProvider() method which returns the 'shortcut(s)' by which the provider can be referenced?