TechnitiumSoftware / DnsServer

Technitium DNS Server
https://technitium.com/dns/
GNU General Public License v3.0
3.83k stars 399 forks source link

Simplify the build process? #857

Closed rgl closed 4 months ago

rgl commented 4 months ago

The build process is a little bit more complex that I was expecting. Being a dotnet project, I was somewhat hoping to clone this repository, open the solution in visual studio, and do a build.

Can you please comment why not export TechnitiumLibrary as nuget packages? Or use that repository as a git-submodule of the DnsServer repository?

ShreyasZare commented 4 months ago

Thanks for the post. Its not really complex. You just have to clone the library project and build it in release mode and then clone and build the DNS server project.

The library project is not published on nuget since there is no fixed API for it. The classes and functions can change anytime without guarantee as per requirements. So, anyone using the library on nuget will get annoyed as it will break their projects frequently.

Git-submodules just ends up creating multiple copies of the repo on disk for me and becomes an issue when I need to test code not yet pushed to github.

rgl commented 4 months ago

How do you pair both repositories? Suppose you want to build an older version of this repo, how do you know which revision of the library was used?

ShreyasZare commented 4 months ago

How do you pair both repositories? Suppose you want to build an older version of this repo, how do you know which revision of the library was used?

Usually, the library is backwards compatible so this wont be an issue unless you are trying to build very old version. In that case, you can create a branch in the library repo based on the date of commit. The date will be the one found in the DNS repo's commit for that release.

Note that older versions of the DNS server are not supported and thus its not recommended to use them due to bugs they may have.

If you need binaries for old release then they are available in the archive.

rgl commented 4 months ago

Circling back to the beginning of this issue, IMHO, that is a complex process, where its not easy to correlate both repositories from a git source-code perspective without an educated guess, nor from a versioning perspective, which makes later workflows harder (e.g. troubleshooting, SBOM, onboard contributors). Anyhow, I was just curious to know why the current workflow/build was like this. Thank you for taking the time to comment about it.