Background
Any library using spark-commons ver, 0.3 (or eventually higher), will need to decide if to work on Spark 2 or Spark 3. And that's despite majority of the code is independent of the Spark version used.
Feature
Separate spark-commons to spark-commons-core, and spark-commons for version 2 and version 3. Where core is code that is Spark version ambiguous.