GY-87. How do I obtain MotionFused output from the sensor?

As some of you know the GY-87 or its clone HW-290 has 3 sensors namely the MPU-6050(Gyro + Accel), HMC5883(Magneto) and BMP180(Pressure). These sensors together are listed as a 10DOF module but this is where my questions come in. The MPU-6050's datasheet talks about a digital motion processor(DMP)(Section 7.13) which when connected to an external third party magnetometer can produce 9-axis sensor fused output.

  1. So what is the output of this digital motion processor? Provided the DMP is fed external magnetometer output, does it give us Kalman Filter(or any other sensor fusion algorithm) sensor fused output? A majority of articles I have seen on the internet physically implement Kalman Filter but isn't that unnecessary if the DMP already does that?

  2. Secondly, if the DMP indeed gives motion fused output, does that mean the GY-87 has all the necessary connections between the 3 sensor modules already?

  3. Finally, I wanted to understand how to code the MPU-6050 library by myself. While I know this is probably not something a beginner should undertake, I really want to understand how someone can look at the datasheet and code the library. So far, I have understood the I2C communication aspect of the coding thanks to this wonderful explanation but I am still lost as to how to start coding. I have also looked at libraries regarding MPU-6050 but their comments are very minimal and unhelpful. Any resources in regards to this will be much helpful.