Jump to content

General questions regarding load order tool design, infrastructure and community


AL|EN

Recommended Posts

Hello,

I want to ask some questions regarding regarding LOOT design, infrastructure and community. I've read API docs but honestly, it's complete overkill for me: 90% of the stuff will probably not important for my needs.

So I decided that i will simply ask some questions:

A) YAML:

What was the reason to use YAML as metadata format? Why you didn't use JSON/simple ini format? Because of YAML support for different data types? - answer provided
Can you provide examples of where the YAML features was helpful for 'load order' (but not for "Display names", "Descriptions" and unrelated things etc, load order only) - answer provided
Because of the fact that spaces are important, such format is hard to understand for casual user. How was the adoption of such format by the community? - answer provided
How did you solve problems when somebody commits incorrectly formatted/malformed YAML ? - answer provided
Does Google Excel spreadsheets would be sufficient for the very simplified version of LOOT- answer provided

B) Hosting/collaboration:

Git + Github is not something which a modder might know or decide to use. All git related things are not easy for non-power users also.What was the motivation to use such complicated system instead of web page with simple interface? - answer provided
Did you encounter challenges/problems related to collaboration via github? What was the solution?

C) Features of LOOT:

What will happen when: mod C needs to be placed after mod B, mod B must be placed after mod A, mod A must be placed after mod C (mod C before mod A)? Processing is halted or ignored? - answer provided
Does LOOT can set two load order 'instructions' for one mod, one when some other conditions are meet (another mod is present/will be installed) and the second when they aren't? - answer provided

D) What will work better?

Let's assume(I mean literally assume that it is exactly like that) that the same mod can be installed into 5 games. What is better approach in terms of maintenance effort: separate load order list for every game or one list with mod entry which contains conditions regarding games? - answer provided
How about a system when mods itself contains required install order info? Modders could refer to the mods data and set their mods accordingly, masterlist is not needed anymore. Will it work or it would cause problems? - answer provided

I know that's a lot of questions but I will very grateful for any kind of feedback.

Edited by AL|EN
clarifications
Link to comment
Share on other sites

I can obviously not speak for the developer of LOOT, I can just give you my opinion:

a) imho YAML is a good choice. Compared to json it's very readable to non-techies and it requires less escaping for special characters. One can argue over whether YAML or JSON is harder to break - yaml depends on indentation, json will break if you miss a comma anywhere or have one too many - either way you will want a validator to ensure the file is valid before it gets committed.

The INI format is not simple, it's very deceptive. There is no standard for ini and different parsers may treat files differently in regards to stuff like character encoding, multi-line entries, comments and so on.

The perception that ini is simple is very problematic. BethINI for example, a tool for configuring fallout and TES games technically corrupts the ini files for some games it configures because its ini file library treats multi line entries different than the game.

99.9% of the times users will not notice because the entries it corrupts are irrelevant but that's luck more than anything.


b) github gives you free file hosting, version control repositories supporting thinks like branching and everything, all of which makes the service more powerful (e.g. when LOOT changes its masterlist format it can host them for the old format in one branch, new format in another without breaking anything). There aren't that many services that do that.

Compared to other version control services github is super easy, so the alternatives are either a way more complicated service or a way less powerful one.

Besides: It's not like users have to use git to propose changes to the masterlist, if you're scared of git, you can just post a message in the issue tracker and someone more comfortable with it can add it.


c) What will happen when: mod C needs to be placed after mod B, mod B must be placed after mod A, mod A must be placed after mod C

This can never happen. It's possible to set up (user) rules for such a cycle but LOOT will refuse to sort in its presence but you will never have a situation where it has to be set up like that. The end result always has to be a sorted, one dimensional list, no matter how you do your load ordering. A cycle would mean that the same plugin needs to be in multiple places at once.

 

d) Let's assume that the same mod can be installed into 5 games

It's very rare that one mod (with plugins no less) can be installed in multiple games, I'm not aware of any case where a plugin works with more than two games. And then you will always want separate load orders per game.

It's true: There is a good chance that if you have two mods that need to be loaded in a certain order they need to be loaded in that same order across all supported games but the effort to account for that is not worth it.

Link to comment
Share on other sites

A) As I see it, JSON vs. YAML is a matter of who's going to be working with your data more - JSON is much simpler to serialise to / deserialise from, so great for passing data between programs, but it's also much less human readable due to the noise of quoting keys and wrapping all objects and arrays in {} and []. YAML's also got a few neat features like anchors/aliases that are very helpful for reducing boilerplate and avoiding typos.

B) GitHub's the most user-friendly approach to version control I've come across, and version control is a hard requirement for any software project I'd want to go anywhere near. Anyone not familiar with Git can still contribute to the masterlists through the website without really knowing how to use Git, and GitHub's help and tutorials are pretty extensive for the basics.

C) LOOT will error if it encounters a cycle, because they can't be represented in a load order, which must be linear. You can provide conditions for most metadata, e.g. load after A if B is present.

D) A separate list is more maintainable. The vast majority of plugins are one-game-only, so you'd end up with a huge masterlist with content that is mostly irrelevant for whatever game you're currently sorting or maintaining, which just makes it harder to spot what's relevant. You'd also increase the risk of accidentally applying a change to more games than you need to.

It would be nice if mods supplied the load order info so the masterlist didn't need to, but modders are less likely to know all possible interactions with other mods up front, and mods tend not to be updated indefinitely. Plugin descriptions can also only be so big - probably not enough to hold the necessary information.

 

Link to comment
Share on other sites

Thanks for feedback! There ate two important things left:

Does Google Excel spreadsheets would be sufficient for the very simplified version of LOOT?

Does LOOT can set two load order 'instructions' for one mod, one when some other conditions are meet (another mod is present/will be installed) and the second when they aren't?

Those are dev-related questions, I would be grateful if any LOOT dev could bring some light on those topics.

Link to comment
Share on other sites

37 minutes ago, AL|EN said:

Thanks for feedback! There ate two important things left:

Does Google Excel spreadsheets would be sufficient for the very simplified version of LOOT?

Does LOOT can set two load order 'instructions' for one mod, one when some other conditions are meet (another mod is present/will be installed) and the second when they aren't?

Those are dev-related questions, I would be grateful if any LOOT dev could bring some light on those topics.

Maybe, I've seen people do all sorts of things with spreadsheets. Why would you, though? Pick the right tool for the job.

You can provide conditions for most metadata, e.g. load B after A if C is present.

Link to comment
Share on other sites

@WrinklyNinja

Thanks, for feedback. I want to use best tools for the job indeed but I wasn't sure if the Github complexity is necessary. It is time for more experiments.

 

Link to comment
Share on other sites

A version control system is practically a necessity because it allows multiple people to work on the masterlist at the same time, no matter how long they work in isolation.
That means you can fork the masterlist, add rules, make your own tests and when you're done, commit the changes to the official repo. Even if your testing takes a week.

With a spreadsheet you'd essentially have to "lock" the file throughout your tests so everyone else would have to wait - or you would have a terrible time merging your changes into a sheet that has been changed by others while you were working on your copy.

git isn't really complex, it's just intimidating. Once you realize how much of your workflow it makes easier or safer you won't want to miss it.

 

Btw., just for clarification: The person you answered to is "WrinklyNinja", the main developer of LOOT. "Initiate" is just his rank in this forum. ;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...