Usually you'd have the source code somewhere like in a GitHub repository, then you would run some CI/CD pipelines to create a release. Where is that source code? I did some research and many people say that the Ubuntu distribution is just a collection of programs and configurations and that it doesn't really make much sense to have a repository like I'm describing, but that's not what I am asking.
When you develop a web app with Node.js, you have your dependencies listed in a file called package.json. When you build your web app you download your dependencies. I assume something similar happens with Ubuntu: There must be a file somewhere listing all programs that the distribution must include and the URLs to download each binary. Where is that file? Where exactly is also the script that downloads them? In GitHub you have a .yaml file with different GitHub actions that you can look at to understand the exact steps followed to create a release.
Where do I look at to understand exactly how the Ubuntu iso is created? Let's just say it was my responsibility to create the next release. How would I do that? And the one thing I am most worried about is: If Ubuntu is open source, where is all this documented?
This is a list of the questions that I pretended to have answered with this post. If this post is considered too broad because of this and gets closed, I'll post these questions in different posts:
- What exactly constitutes the Ubuntu iso file that you download when you "download Ubuntu"? Is it just Debian but with more packages, or is there anything else included?
- What exact steps do I have to follow to create the iso file that gets released exactly the same way Ubuntu developers do?
- If Ubuntu developers were using Github Actions to create Ubuntu releases, there would be a workflow yaml file I could inspect to understand the steps followed to create the iso file. If there isn't such a thing, what do they use instead and where can I find that thing they use?
- Each package that the Ubuntu distro includes is maintained independently, but where is the one Git repository that contains the manifest file used to specify these packages that get included in the iso file?
Here is some context: Usually, when I want to understand how some software works, I build the software from source code. The steps followed to build from source are usually either in a README or a CONTRIBUTING file. When I can't find these files, I look at whatever yaml file they use to configure their pipelines to create releases. I wondered how an operating system like Ubuntu is created, so I started looking for such repository but found nothing. I just learned that the packages the iso includes are specified in a manifest file like this one, but I still couldn't find the Git repository where this file comes from and I don't know if that's about it or if there is more involving the creating of an Ubuntu iso. I hardly believe that you only need the manifest file, it doesn't feel like installing all packages specified in it from a Debian distro would automatically turn that Debian into Ubuntu.
I came across this post, which led me to this website. If that's the source code of Ubuntu, how do I generate the iso file from the contents of that website? I couldn't find any README or CONTRIBUTING file explaining this.