I restarted my 3D engine Aether3D from the scratch. Now it's DLL based (.so on Linux) and platform specific stuff is abstracted away so it can and does support SDL/OpenGL and Direct3D. End-users need not to worry about rendering API and they can switch it without recompiling. I also moved on to modern OpenGL, so now there are no deprecated/removed function calls. The context, though, is still version 2.1, or whatever SDL 1.2 sets by default, but I will move on to SDL 1.3 some day when it gets more mature/widespread. On the project management side, I'm now using Doxygen comments and SVN. The new engine is still in its infancy and only renders text at the moment.