The FUP control came about as a result of dealing with the duty cycle issue in the LMIC low power library;
Once the duty cycle problem had a work around it was not difficult to estimate the air time at each transmission using the current SF and payload size and adjust the sleep interval accordingly.
Whilst not difficult to do, you had to want to implement the code, and most people are not really interested in keeping to the FUP.
The FUP was not implemented until, by default, 5 transmissions after join.