If I understand it right, the old libmaple HardwareSPI did not autoinstantiate, but the Arduino SPI class does, and that is why the SPI in Roger's repo does too.
Regarding the DMA channels, that can not just be selected at will, they are hardwired in the STM32F103. SPI1 TX can only use channel 3, and SPI1 RX can only use channel 2.
The same channels can be used for other peripherals, but the same peripherals can not use other channels.
We can pass the SPI port as a paremeter (1 or 2), and have the library pick the correct channels accordingly. I counted on having that feature, so spi1 can be used with DMA for a display at the very same time spi2 can be reading from an SD cards, and the sketch can be doing something different.
To have SPI not instantiate, can't we just still use the libmaple hardwareSpi, or is that broken currently?
To add some clarification, currently libmaple includes 2 different methods for setting up DMA transfers. One called DMA tubes, and the other just DMA channels. You can provide a bunch of different paremeters (device address, dma channel, starting memory address, memory auto increment, peripheral address autoincrement, priority, ISR triggers, a pointer to an isr routine). They are great and very flexible, and that is how DMA is done right now in the ILI_DUE library adapted to STM, the normal ILI9341 adapted to STM but with DMA added, and the new SdFat library, which has optimizations for STM32F1, Teensy, and Due. But it happens that we are repeating the code over and over. I'm mostly copy-pasting and changing a couple of things to adapt to whatever library, but it results with each library repeating the code, and also because I currently use the dma channel ISR to signal the end of the transfer, those libraries can not be used at the same time, as each would try to set it's own ISR.
So Roger had the idea, and I agree, that would make more sense to integrate that part in the SPI library, rather that on each device's library, so that way the functions are written once, there is only one ISR, and the sketch or the device libraries just calls the transfers with the parameters needed, without having to know how the whole DMA works in the STM32F1.