UltraStar-Deluxe / Play

Free and open source singing game with song editor for desktop, and mobile
https://ultrastar-play.com
MIT License
398 stars 74 forks source link

Let's embed all non-package dependencies #499

Open AnsisMalins opened 1 month ago

AnsisMalins commented 1 month ago

Issue type: Development discussion

Problem or question to be solved

Currently, all dependencies that are not Unity packages are downloaded using a shell script. The developer has to remember to run this file manually. This is jank.

Suggested solution/s

Embed all such dependencies and add human readable instructions on how to update them, should the need ever arise. I do not believe we will update our dependencies often enough to warrant automation.

Your opinion on the topic

My mandate is to make it easy to contribute to the project. I think setting up the project should have just two steps: clone the repo, open the project in Unity Editor. I considered Git submodules, but they don't actually make things easier. Furthermore, the current shell script does more than just download the dependencies. I also do not like us depending on many repositories controlled by people we do not control. They could delete their repositories any time and then we would be screwed. I point to the npm drama in support of my case.

achimmihca commented 1 month ago

I am happy with either solution:

or

@basisbit what is your opinion on this?


FYI: I just found that the download-dependencies shell script is not working as intended on Linux (e.g. different line endings seems to make a difference). But it's not worth to fix these, writing scripts in shell or bash is abhorrent to begin with. These scritps were just a workaround for Unity's lack of proper dependency management.

Anyway, fixing the dependencies probably also fixes fix the CI pipeline.