Do random forests use weak learners (like XGBoost) or fully grown trees? So it sounds like boosting techniques (eg. XGBoost) uses weak learners (stumps) to gradually learn sequentially. This is not in dispute I hope.
However, with bagging techniques (eg. Random Forest) I'm not sure if it grows weak learners (like stumps) in parallel, or fully grown trees in parallel? Since the definition of "Ensemble modeling" is using many weak learners to form 1 powerful model, I'm leaning towards Random Forests using stumps, but I can be swayed the other direction as well?

Xgboost can use deep or shallow trees (you can set a maximum tree depth). The default xgboost tree depth is 6; see the xgboost documentation.
Likewise, random forest can use deep or shallow trees for the same reason. For example, the implementation in sklearn.ensemble.RandomForestClassifier has no maximum depth by default, so the behavior is "nodes are expanded until all leaves are pure or until all leaves contain less than min_samples_split samples."
