one of the biggest albatrosses around drupal's neck imo... is that several different contrib modules attempt to do nearly the same thing at the data structure level: link entities together in a graph - a math graph with nodes and edges.
why is it that the drupal community, cannot get together and decide to support a single graphical data structure, instead of splitting the laser beam's power among taxonomy, og, reference, relation*, ... , ?
having all these slightly different data structures (they're only different in what the pointer is labeled as (tid, gid, rid, ...)) is effectively creating artificially flavored groups of developers who would be better served and serve better, with a single, coherent data structure. As it is, a dev has to include the pointer type (tid, gid, rid, ...) for every data structure for which they want to leverage contrib modules that were built to work with that particular data structure. that creates a completely ridiculous requirement to duplicate data structures! (required if you don't want to take a gazillion person-hours to port the work done for one structure to another)
examples: