Here are the design objectives of Stinger (taken out of their website):
- Portability: Algorithms written for STINGER can easily be translated/ported between multiple languages and frameworks
- Productivity: STINGER should provide a common abstract data structure such that the large graph community can quickly leverage each others' research developments. This is similar in philosophy to the numerical algorithms community implicit use of sparse and dense matrices.
- Performance: It is recognized that no single data structure is optimal for every graph algorithm. The objective of STINGER is to configure a sensible data structure that can run most algorithms well