I personally configured my framework to take the place of the scene manager for the drawAll function. It uses all the data from the scene manager so it can be easily integrated, but instead of calling smgr->drawAll() you'd do deferred->render(). I'm working now on creating a function to convert all irrlicht lights to deferred lights as well so it can be integrated even more easily. There are some things that had to be changed though that may not be everyone's idea of a good decision. I made it so that if you supply a second texture, it is automatically considered the normal map and turns on normal mapping, and a third texture will be the specular map and will automatically be turned on when a texture is given. This means if someone wants to use something with multiple textures and doesn't want this to happen, they'd have to custom render it to the GBuffer (which I'll eventually add as an option). For me, this was exactly what I needed, but since I wasn't actually planning on releasing it previously, I didn't think about what people would need in general.
Hardware skinning works great with shadows, it just has to be skinned again when rendered from the light's perspective. This is a very miniscule drop in speed since the GPU excels at matrix transformations, and is still orders of magnitude faster than the CPU doing it.
Here is what it currently looks like with 100 animated meshes and 300 point lights running at 100fps (not showing shadows because I'm still getting them right):

The renderer also has the option to toggle on or off common effects like SSAO and DoF. All regular light types have been implemented: Directional, point, and spot.