<div dir="ltr">Hi everyone,<br><br>GStreamer's developer community has been discussing the unification of our many<br>git repositories for a while [on gitlab]. We have come up with [a first version]<br>and it is probably time for everyone using GStreamer to give it a spin and some<br>feedback. <br><br>[on gitlab]: <a href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/474">https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/474</a><br>[a first version]: <a href="https://gitlab.freedesktop.org/thiblahute/gstreamer/-/tree/monorepo_simple">https://gitlab.freedesktop.org/thiblahute/gstreamer/-/tree/monorepo_simple</a><br><br>## What is it?<br><br>Merges all GStreamer modules into a single git repository:<br><br>* gstreamer (core)<br>* gst-plugins-base<br>* gst-plugins-good<br>* gst-plugins-bad<br>* gst-plugins-ugly<br>* gstreamer-vaapi<br>* gst-omx<br>* gst-libav<br>* gst-ci<br>* gst-rtsp-server<br>* gst-editing-services<br>* gst-devtools<br>* gst-docs<br>* gst-examples<br>* gst-integration-testsuites<br>* gst-python<br>* gstreamer-sharp<br>* gstreamer-rs<br>* gst-plugins-rs<br>* gst-build<br><br>The full git history of all those modules is merged into the existing<br>`gstreamer` git repo, every commit hash is preserved. The initial intention is<br>only to merge the git repositories and keep producing separate release tarballs.<br>Each GStreamer component can still be built on its own.<br><br>Note that only current master branches are being unified, stable branches will<br>remain in their own repositories.<br><br>## Why?<br><br>- Cross-repository changes are currently painful because multiple merge requests<br>  need to be managed in various repositories. It is easier for developers and<br>  reviewers to have all the code in a single MR.<br>- Simplification of the CI infrastructure. No more manifest specifying which<br>  branches in which user forks need to be pulled together. The CI can checkout<br>  and test a single branch. This also makes replicating a similar setup<br>  downstream much simpler.<br>- Makes bisecting regressions much simpler. Once the unification point will be<br>  behind us, bisecting GStreamer will be a simple matter of running `git bisect`<br>  without worrying about keeping multiple repositories in sync at each step.<br>- Simplifies the release process as it can be prepared in a single MR instead of<br>  bumping version and tagging each module separately.<br>- Makes easier to move files across modules, such as moving plugins from -bad to<br>  -good or -ugly.<br>- Removes the need for a bug reporter to figure out against what repository the<br>  bug should be filed.<br><br>An extensive list of pros and cons can be found here:<br><a href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/474#pros-and-cons-of-a-monorepo">https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/474#pros-and-cons-of-a-monorepo</a><br><br>## What does it mean for distributions?<br><br>Since release tarballs are preserved, nothing should change for packagers.<br><br>## What does it mean for contributors?<br><br>- The unified gstreamer repository will have the same layout as gst-build.<br>- All merge requests targeting master branch will have to be made against the<br>  main gstreamer repository.<br>- Existing merge requests on other repositories (e.g. gst-plugins-good) will<br>  have to be resubmitted on the main repo. A simple cherry-pick usually<br>  works.<br>- All GitLab issues will be moved to the main repository.<br><br>We have prepared a [checklist] so you can see how we currently think about<br>making it happen. This is a Request For Comment for the broader community to<br>help us execute it as well as possible, so that initial plan may change.<br><br><div>[checklist]: <a href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/474#plan">https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/474#plan</a></div><div><br></div><div>Best regards,<br></div><br>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><font color="#888888">Thibault Saunier, Igalia - <a href="http://www.igalia.com" target="_blank">www.igalia.com</a><a href="http://www.centricular.com" rel="noreferrer" target="_blank"><span></span></a></font></div></div></div>