TeamTernate / infinite-music-discs

Tool for adding lots of custom music discs to Minecraft
87 stars 12 forks source link

Save your current tracks list for later edit #74

Open tobycm opened 1 year ago

tobycm commented 1 year ago

So I don't have to add all the old ones every time I need to update the pack

bradytheinventor commented 1 year ago

Duplicate of #30

bradytheinventor commented 1 year ago

I saw you made a pull request related to this issue, so here are some of my thoughts about adding a save/load feature (in case you find them informative). Please don't feel like I'm expecting anything of you one way or another, I just wanted to explain why I haven't added this as a feature yet and give you some tips if you do decide to implement it!

Adding a new feature is always a delicate balance, because once it's in the app there's an expectation that it will not be removed. Essentially, by adding a feature, the development team is committing to support it for the foreseeable future or even the lifespan of the app. That means the feature has to be easy to maintain as the app grows and changes.

For example: Linux support. Whether or not people use the Linux app, I've committed to making it Linux-compatible and will continue releasing a Linux binary for the foreseeable future. To that end, I've carefully structured the build scripts and written the key steps in Python so I have one cross-platform script to maintain instead of several.

Some features are easy to maintain, like generating packs as a zip file. Others can be more difficult. You've picked saving/loading, which is an especially ambitious (but certainly not impossible!) feature to maintain because of the requirements: a new UI element which must be integrated with the existing (and future) GUI elements, a save file format that can grow and change with the app, and the save/load system itself (which must be backwards-compatible with older save files, and also able to grow and change with the app). None of that is impossible, but it will take some thought and planning to be done well; thought and planning that I haven't had time for yet.

All that said, here are some questions I hope will get you thinking along the same lines as me (or maybe you've already considered these points, in which case what are you listening to me for!):

Software design takes some thought to get it right the first time; I'm sure there's lots more to consider than these few points. Hopefully you have an understanding of why I haven't implemented a save/load feature myself yet. If you decide to go for it, good luck, keep software design practices and maintainability in mind and you'll do fine.

tobycm commented 1 year ago

Thank you, that was very informative to me. I honestly haven't think about any of these points 😅

I will try my best work on this feature and maintain it and also making the code easy to maintain for future maintainers

Again, thanks man