Imagine the following project structure. Assume this is after Cargo is finished.
- My Game
- piston
- graphics
- sdl2_game_window (backend)
- opengl_graphics (backend)
Notice how both sdl2_game_window and opengl_graphics depend on gl. If we screw up and release with both those backends depending on different versions of gl, then we have a massive potential for bugs.
But even if we do everything correctly and our users screw up and depend on sdl2_game_window and opengl_graphics with incompatible versions, then there is the possibility of those same bugs.
It even gets worse when you realize that the user could select a piston version and an incompatible backend for piston.
Imagine the following project structure. Assume this is after Cargo is finished.
Notice how both
sdl2_game_windowandopengl_graphicsdepend ongl. If we screw up and release with both those backends depending on different versions ofgl, then we have a massive potential for bugs.But even if we do everything correctly and our users screw up and depend on
sdl2_game_windowandopengl_graphicswith incompatible versions, then there is the possibility of those same bugs.It even gets worse when you realize that the user could select a piston version and an incompatible backend for piston.