I have successfully used FlexDock in the past but it seems not well supported and it is quite hard to start with (this is a quite complex framework for docking). FlexDock is open source.
Besides, more recently, I have enjoyed using MyDoggy which is well supported and quite easy to use (very well documented with enough examples and tutorials). Its main drawback (for me) is the difficulty to adapt its look when using 3rd-party LAFs (like Substance for instance). But in general I really like it. If I remember correctly, it is quite a lightweight library. I would recommend it for any use (it is open source and free to use) for its good API.